UML 关联、聚合、组合 [示例]
UML 图中的关系用于表示各种事物之间的联系。关系是统一建模语言中的结构、行为或分组事物等事物之间的联系。
以下是 UML 中不同类型的标准关系,
- 社区
- 依赖
- 推广
- 实现
除此之外,UML 允许使用聚合和组合关系。
UML 协会
它是一种结构关系,表示对象可以与系统内的另一个对象连接或关联。以下约束可应用于 UML 关联关系。
- {隐式} – 隐式约束指定关系不是明显的;它基于概念。
- {已排序} – 有序约束指定关联一端的对象集处于特定方式。
- {多变} – 可改变的约束指定可以根据要求添加、删除和修改系统中各个对象之间的连接。
- {仅添加} – 它指定可以从位于关联另一端的对象添加新的连接。
- {冻结} – 它指定在两个对象之间插入链接时,当给定链接或连接上的冻结约束处于活动状态时,该链接不能被修改。
我们还可以创建一个具有 UML 关联属性的类;它被称为关联类。
反身联想
反身关联是关联关系的一个子类型 UML。在反身关联中,同一个类的实例可以相互关联。类的实例也称为对象。
反身关联指出链接或连接可以存在于同一类的对象中。
例如::
让我们考虑一个水果类的例子。
水果类有两个实例,例如芒果和苹果。反身关联表明芒果和苹果之间存在联系,因为它们是同一类的实例,例如水果。
定向联想
顾名思义,有向关联与关联类内的流动方向有关。
在有向关联中,流是有向的。从一个类到另一个类的关联只沿一个方向流动。
它用带箭头的实线表示。
UML 关联示例:
你可以说服务器和客户端之间存在有向关联关系。
服务器可以处理客户端的请求。此流程是单向的,仅从服务器流向客户端。因此,系统的服务器和客户端之间可以存在有向关联关系。
UML 组成
这不是一个标准 UML关系但它仍然在各种应用中使用。
复合聚合是聚合关系的一种子类型,其特点是:
- 它是对象之间的双向关联。
- 这是一个整体/部分的关系。
- 如果删除了复合材料,则与其关联的所有其他部分也将被删除。
复合聚合被描述为在聚合(整体)端用实心黑色菱形装饰的二元关联。
文件夹可以包含许多文件,而每个文件只有一个父文件夹。如果删除文件夹,则其所包含的所有文件也将被删除。
在复合聚合中,一个对象一次只能成为一个复合聚合的一部分。
UML 组合示例:
例如,在窗口系统中,一个 Frame 只属于一个 Window。在复合聚合中,整个系统负责其各部分的处置,这意味着复合聚合必须管理其各部分的创建和销毁。
UML 聚合
聚合是 UML 中关联关系的子类型。 聚合和组合 都是UML中的关联关系类型。聚合关系可以用简单的词语来描述:“一个类的对象可以拥有或访问另一个类的对象。”
在聚合关系中,即使源对象被破坏,依赖对象仍然保留在关系范围内。
UML 聚合示例:
让我们考虑一辆汽车和一个车轮的例子。
汽车需要车轮才能正常运转,但车轮并不总是需要汽车。它也可以用于自行车、脚踏车或任何其他车辆,但不能用于特定的汽车。在这里,即使没有汽车对象,车轮对象也是有意义的。这种类型的关系称为 UML 聚合关系。
关联、聚合和组合
社区 | 聚合 | 组成成分 |
---|---|---|
关联关系用箭头表示。 | 聚合关系用一端带有空箭头的直线表示。 | 组合关系用一条直线表示,其中任意一端带有实心箭头。 |
在 UML 中,两个或多个类之间可以存在关联。 | 聚合是关联关系的一部分。 | 组合是关联关系的一部分。 |
关联类之间可以存在一对一、一对多、多一和多对多关联。 | 聚合被认为是一种弱类型的关联。 | 该组合被认为是一种强类型的关联。 |
在关联关系中,一个或多个对象可以相互关联。 | 在聚合关系中,相互关联的对象可以保留在彼此独立的系统范围内。 | 在组合关系中,相互关联的对象不能彼此独立地保留在范围内。 |
对象彼此相连。 | 链接的对象不依赖于其他对象。 | 对象之间高度依赖彼此。 |
在 UML 关联中,删除一个元素可能会或可能不会影响另一个关联元素。 | 在 UML 聚合中,删除一个元素不会影响另一个关联元素。 | 在 UML 组合中,删除一个元素会影响另一个相关元素。 |
计费示例: 一名老师与多名学生关联。 Or 老师向学生们提供指导。 |
计费示例: 汽车需要轮子,但并不总是需要同一个轮子。汽车也可以用另一个轮子充分运转。 |
计费示例: 文件夹内放置一个文件。如果删除该文件夹,则与该文件夹关联的文件也会被删除。 |
结语
- 关系是事物之间的联系。
- 关联、依赖、泛化和实现是多种多样的 UML 提供的关系.
- 除了标准关系之外,UML 内部还使用组合和聚合。
- 聚合和组合都是UML中的关联关系类型。
- UML 组合是一种双向关系,也称为二元关系。
查看有关最佳 UML 工具的文章:- 了解更多