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类图中的六种基本关系:依赖、类属、关联、实现、聚合和组合。 #### 二、依赖(Dependency) **定义**: - 当元素A的变化会影响元素B,但元素B的变化不会反过来影响元素A时,我们说B依赖于A。 - ...
接着,需要定义关系类型的属性,例如 Services 关系类型的 Date 和 Status 属性。最后,需要使用 UML 语言来描述实体类型和关系类型之间的关系,并将其表示成图形化的形式。 使用 UML 进行实体关系建模可以提高软件...
在组合关系中,整体与部分是不可分离的,整体的生命周期结束就意味着部分的生命周期也结束。例如,大脑(Brain类)与人(Human类)之间的关系,没有大脑的人是无法生存的。组合关系在代码中的表现形式与关联和聚合...
### UML类图在关系数据库中的实现 #### 概述 在关系数据库设计过程中,实体关系模型(ER模型)作为一种标准方法被广泛采用以创建数据库的逻辑模型。然而,随着业务需求的日益复杂以及对数据模型灵活性的需求提高,...
在自动生成关系数据库表的过程中,需要遵循一定的映射规则,将UML类图中的各个元素转换为关系数据库表的组成部分。 1. 类映射为表:UML类图中的每一个类应该映射成关系数据库中的一个表。 2. 属性映射为字段:类的...
在这个场景中,我们将深入探讨UML中的继承关系及其在Java编程中的应用。 在UML类图中,继承关系通常通过一个带有空心三角形箭头的直线表示,箭头指向父类(基类或超类),而子类则位于箭头的起源端。例如,如果有一...
UML关系是UML模型中的核心概念,它定义了模型元素之间的连接,帮助我们理解系统的结构和行为。在本篇文章中,我们将深入探讨UML中的几种主要关系,包括关联、依赖、泛化、实现以及组合和聚合。 1. **关联关系**: ...
依赖是UML中最弱的一种关系,用于表示一个类依赖于另一个类的定义。例如,`C5` 类依赖于 `C6` 类的定义,意味着 `C5` 需要在某些地方使用到 `C6` 的功能。在实际的代码中,依赖通常通过在类的声明中包含另一个类的...
在聚合关系中,部分对象可以独立于整体对象存在,也就是说,即使整体对象不存在,部分对象也可以单独存在。例如,一辆汽车可以没有轮胎,轮胎也可以不属于任何一辆车。在UML中,聚合关系通常用带有空心菱形的线段来...
UML类图是一种建模工具,它用于描述对象导向设计中的类、接口及其相互关系。在UML中,类图展示了类与类之间的多种关系,包括关联、单向关联、自关联、多重关联、聚合、组合、依赖以及泛化关系。下面我们将详细探讨...
本文将深入探讨UML类图中的类间关系,特别关注纵向关系——继承。 继承是面向对象编程(OOP)的核心概念之一,它在UML类图中通过一个箭头表示,箭头从子类指向父类。这种关系允许子类(也称为派生类或子类型)继承...
**UML中的类目**是建模语言中的核心构造元素,用于描绘系统结构和行为的各个方面。类目不仅包括常见的类,还涵盖多种其他类型的模型元素。本篇将深入探讨类目的概念、可见性以及作用域。 **1. 类目概念** 在UML中,...
### UML类图中的接口与接口实现 #### 一、接口的概念 在统一建模语言(UML)中,接口(Interface)是一个重要的概念,它主要用于描述系统内部或系统之间如何进行交互。根据UML规范(UML Infrastructure ...
在一个扩展关系中,扩展的用例通过在基本用例事件流中插入一个或多个行为序列段来在基本用例中增加行为。当基本用例执行到扩展点,一个附加行为集就会被执行。UML 规范地对扩展点进行了定义:“是用例中的一个位置点...
《UML图与关系图在VOS开发中的应用》 UML(统一建模语言)是一种标准化的通用、直观的建模语言,被广泛应用于软件工程领域,特别是VOS(虚拟运营系统)的开发过程中。它通过图形化的方式,帮助开发者理解和描述软件...
Java 与 UML 映射关系是软件开发中不可或缺的一部分,尤其对于Java应用程序的开发者而言。UML(统一建模语言)提供了一种可视化的方式来描述软件系统的结构和行为,而Java是实现这些设计的实际编程语言。理解两者...
在依赖关系中,客户端类知道提供者类,但提供者类不一定知道客户端类。依赖关系通常用于表示某类方法的参数类型、返回类型、局部变量或异常类等,是一种单向的使用关系,有时也被称为“uses-a”关系。 泛化关系...
UML中有九种图例,每种图例都有其特定的定义、用途和画法,在软件开发中发挥着重要作用。 一、用例图(Use Case Diagram) 用例图是一个重要的UML图例,用于描述系统的功能需求。它由参与者(Actor)、用例(Use ...