UML 关联、聚合、组合 [示例]

UML 图中的关系用于表示各种事物之间的联系。关系是统一建模语言中的结构、行为或分组事物等事物之间的联系。

以下是 UML 中不同类型的标准关系,

  • 社区
  • 依赖
  • 推广
  • 实现

除此之外,UML 允许使用聚合和组合关系。

UML 协会

它是一种结构关系,表示对象可以与系统内的另一个对象连接或关联。以下约束可应用于 UML 关联关系。

  • {隐式} – 隐式约束指定关系不是明显的;它基于概念。
  • {已排序} – 有序约束指定关联一端的对象集处于特定方式。
  • {多变} – 可改变的约束指定可以根据要求添加、删除和修改系统中各个对象之间的连接。
  • {仅添加} – 它指定可以从位于关联另一端的对象添加新的连接。
  • {冻结} – 它指定在两个对象之间插入链接时,当给定链接或连接上的冻结约束处于活动状态时,该链接不能被修改。

我们还可以创建一个具有 UML 关联属性的类;它被称为关联类。

反身联想

反身关联是关联关系的一个子类型 UML。在反身关联中,同一个类的实例可以相互关联。类的实例也称为对象。

反身关联指出链接或连接可以存在于同一类的对象中。

例如::

让我们考虑一个水果类的例子。

水果类有两个实例,例如芒果和苹果。反身关联表明芒果和苹果之间存在联系,因为它们是同一类的实例,例如水果。

反身联想
反身联想

定向联想

顾名思义,有向关联与关联类内的流动方向有关。

在有向关联中,流是有向的。从一个类到另一个类的关联只沿一个方向流动。

它用带箭头的实线表示。

UML 关联示例:

你可以说服务器和客户端之间存在有向关联关系。

服务器可以处理客户端的请求。此流程是单向的,仅从服务器流向客户端。因此,系统的服务器和客户端之间可以存在有向关联关系。

定向联想

定向联想

UML 组成

这不是一个标准 UML关系但它仍然在各种应用中使用。

复合聚合是聚合关系的一种子类型,其特点是:

  • 它是对象之间的双向关联。
  • 这是一个整体/部分的关系。
  • 如果删除了复合材料,则与其关联的所有其他部分也将被删除。

复合聚合被描述为在聚合(整体)端用实心黑色菱形装饰的二元关联。

UML 组成

文件夹可以包含许多文件,而每个文件只有一个父文件夹。如果删除文件夹,则其所包含的所有文件也将被删除。

在复合聚合中,一个对象一次只能成为一个复合聚合的一部分。

UML 组合示例:

例如,在窗口系统中,一个 Frame 只属于一个 Window。在复合聚合中,整个系统负责其各部分的处置,这意味着复合聚合必须管理其各部分的创建和销毁。

UML 组成

组成成分

UML 聚合

聚合是 UML 中关联关系的子类型。 聚合和组合 都是UML中的关联关系类型。聚合关系可以用简单的词语来描述:“一个类的对象可以拥有或访问另一个类的对象。”

在聚合关系中,即使源对象被破坏,依赖对象仍然保留在关系范围内。

UML 聚合示例:

让我们考虑一辆汽车和一个车轮的例子。

汽车需要车轮才能正常运转,但车轮并不总是需要汽车。它也可以用于自行车、脚踏车或任何其他车辆,但不能用于特定的汽车。在这里,即使没有汽车对象,车轮对象也是有意义的。这种类型的关系称为 UML 聚合关系。

UML 聚合关系

聚合

关联、聚合和组合

社区 聚合 组成成分
关联关系用箭头表示。 聚合关系用一端带有空箭头的直线表示。 组合关系用一条直线表示,其中任意一端带有实心箭头。
在 UML 中,两个或多个类之间可以存在关联。 聚合是关联关系的一部分。 组合是关联关系的一部分。
关联类之间可以存在一对一、一对多、多一和多对多关联。 聚合被认为是一种弱类型的关联。 该组合被认为是一种强类型的关联。
在关联关系中,一个或多个对象可以相互关联。 在聚合关系中,相互关联的对象可以保留在彼此独立的系统范围内。 在组合关系中,相互关联的对象不能彼此独立地保留在范围内。
对象彼此相连。 链接的对象不依赖于其他对象。 对象之间高度依赖彼此。
在 UML 关联中,删除一个元素可能会或可能不会影响另一个关联元素。 在 UML 聚合中,删除一个元素不会影响另一个关联元素。 在 UML 组合中,删除一个元素会影响另一个相关元素。
计费示例:
一名老师与多名学生关联。
Or
老师向学生们提供指导。
计费示例:
汽车需要轮子,但并不总是需要同一个轮子。汽车也可以用另一个轮子充分运转。
计费示例:
文件夹内放置一个文件。如果删除该文件夹,则与该文件夹关联的文件也会被删除。

结语

  • 关系是事物之间的联系。
  • 关联、依赖、泛化和实现是多种多样的 UML 提供的关系.
  • 除了标准关系之外,UML 内部还使用组合和聚合。
  • 聚合和组合都是UML中的关联关系类型。
  • UML 组合是一种双向关系,也称为二元关系。

查看有关最佳 UML 工具的文章:- 了解更多