`

UML中的关系

    博客分类:
  • JESE
阅读更多

uml定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。下面对其定义和表示方法逐一说明。

依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。

类属(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。

实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。这个关系最常用于接口。uml中用空心空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。

关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示Dependency关系,箭头指向被依赖元素。

聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。

组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心心菱形头的实线表示Composition关系,菱形头指向整体。

关系

后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。

依赖(Dependency)

实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。

图D


关联(Association)

实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联(图E)转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个Employee。

图E

聚合(Aggregation)

聚合(图F)是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。

关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。

图F



合成(Composition)

合成 (图G)是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。

Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。

图G

泛化(Generalization)

泛化(图H)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。

图H


实现(Realization)

实例(图I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。

图I

分享到:
评论

相关推荐

    UML中的包含关系和扩展关系

    在UML中,包含关系和扩展关系是两种关键的结构关系,它们帮助我们理解和描述系统的组件如何相互作用和组织。这些概念在软件设计师的考试中是重要的考察点,因此理解它们的含义和应用至关重要。 首先,我们来看包含...

    uml客户关系管理系统

    《UML在构建客户关系管理系统中的应用》 UML(统一建模语言)是一种标准化的图形建模语言,用于软件工程领域,特别是系统分析和设计阶段。在这个课设项目中,“uml客户关系管理系统”深入展示了如何运用UML来构建一...

    UML中类图实例讲解关系

    UML类图关系讲解 ...UML类图关系讲解了类图中的各种关系,包括继承关系、实现关系、关联关系、聚合关系、合成关系和依赖关系等。这些关系都是UML类图的基本组成部分,用于描述类和对象之间的关系。

    六大UML类图以及关系

    本文将详细介绍UML类图中的六种基本关系:依赖、类属、关联、实现、聚合和组合。 #### 二、依赖(Dependency) **定义**: - 当元素A的变化会影响元素B,但元素B的变化不会反过来影响元素A时,我们说B依赖于A。 - ...

    UML解惑:图说UML中的六大关系

    在组合关系中,整体与部分是不可分离的,整体的生命周期结束就意味着部分的生命周期也结束。例如,大脑(Brain类)与人(Human类)之间的关系,没有大脑的人是无法生存的。组合关系在代码中的表现形式与关联和聚合...

    UML关系

    UML关系是UML模型中的核心概念,它定义了模型元素之间的连接,帮助我们理解系统的结构和行为。在本篇文章中,我们将深入探讨UML中的几种主要关系,包括关联、依赖、泛化、实现以及组合和聚合。 1. **关联关系**: ...

    UML类图关系表

    UML类图是一种建模工具,它用于描述对象导向设计中的类、接口及其相互关系。在UML中,类图展示了类与类之间的多种关系,包括关联、单向关联、自关联、多重关联、聚合、组合、依赖以及泛化关系。下面我们将详细探讨...

    UML类关系-依赖,关联,聚合和组合

    今天,我们将探讨UML类关系中的四种基本关系:依赖、关联、聚合和组合。 依赖(Dependency) 依赖关系是指一个类使用另一个类的对象或服务的关系。依赖关系是一种弱关系,表示一个类需要另一个类的支持,但不拥有...

    UML各类关系与图的学习(ptf版本)

    在UML中,依赖关系用带箭头的虚线表示,箭头从使用类指向被使用类。具体来说,依赖关系可以是: 1. 类A是类B的局部变量; 2. 类A是类B方法的一个参数; 3. 类A向类B发送消息,并影响B发生变化。 泛化关系...

    UML类关系之JAVA代码实现

    类之间的关系是UML中核心的概念,它们反映了类之间的相互作用和依赖。本文将详细探讨四种主要的UML类关系——依赖、泛化、关联和实现,并通过Java代码示例来阐述这些关系的实现。 1. **依赖(Dependency)**:依赖...

    UML类图在关系数据库中的实现

    ### UML类图在关系数据库中的实现 #### 概述 在关系数据库设计过程中,实体关系模型(ER模型)作为一种标准方法被广泛采用以创建数据库的逻辑模型。然而,随着业务需求的日益复杂以及对数据模型灵活性的需求提高,...

    UML中类图中的几个关系

    在聚合关系中,部分对象可以独立于整体对象存在,也就是说,即使整体对象不存在,部分对象也可以单独存在。例如,一辆汽车可以没有轮胎,轮胎也可以不属于任何一辆车。在UML中,聚合关系通常用带有空心菱形的线段来...

    UML类关系:依赖、关联、聚合、组合

    本文将深入探讨UML类关系中的四种关键概念:依赖、关联、聚合和组合,以及它们在软件设计中的应用。 1. 依赖(Dependency) 依赖是UML中最弱的一种关系,表示一个类(或对象)的实现或行为需要另一个类(或对象)的...

    UML类图关系大全!!!!!

    UML类图是UML中最常见和基础的图表之一,它直观地展示了系统中各类之间的关系。在这个“UML类图关系大全”中,我们将深入探讨类图中的各种关系,帮助你全面理解这些概念。 首先,我们要了解类图的基本元素:类、...

    图解所有UML对象关系 c++反汇编 天数夜读反汇编

    图解所有UML对象关系 c++反汇编 天数夜读反汇编 图解所有UML对象关系 c++反汇编 天数夜读反汇编 图解所有UML对象关系 c++反汇编 天数夜读反汇编 图解所有UML对象关系 c++反汇编 天数夜读反汇编

    UML.rar_UML图_uml _关系图

    《UML图与关系图在VOS开发中的应用》 UML(统一建模语言)是一种标准化的通用、直观的建模语言,被广泛应用于软件工程领域,特别是VOS(虚拟运营系统)的开发过程中。它通过图形化的方式,帮助开发者理解和描述软件...

    Java与UML映射关系简介

    Java 与 UML 映射关系是软件开发中不可或缺的一部分,尤其对于Java应用程序的开发者而言。UML(统一建模语言)提供了一种可视化的方式来描述软件系统的结构和行为,而Java是实现这些设计的实际编程语言。理解两者...

    UML在关系数据库设计中的应用

    ### UML在关系数据库设计中的应用 #### 引言与背景 在当今的软件密集型系统中,持久性对象的管理成为了面向对象研究的核心议题。尽管面向对象数据库(OODB)与对象关系数据库(O-RDB)的发展为数据管理带来了新的...

Global site tag (gtag.js) - Google Analytics