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

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

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

  • 关联
  • 依赖性
  • 泛化
  • 实现

除了这些之外,UML 还允许使用聚合和组合关系。

UML 关联

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

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

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

自关联

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

自关联规定,链接或连接可以存在于同一类的对象之间。

示例:

让我们以 Fruit 类为例。

Fruit 类有两个实例,例如 mango 和 apple。自关联规定,mango 和 apple 之间可以存在链接,因为它们是 Fruit 等同一类的实例。

Reflexive Association
自关联

定向关联

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

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

它用带箭头的实线表示。

UML 关联示例:

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

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

Directed Association

定向关联

UML 组合

它不是标准的 UML 关系,但它仍在各种应用程序中使用。

复合聚合是具有以下特征的聚合关系的一个子类型:

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

复合聚合被描述为在聚合(整体)端带有一个实心黑色菱形的二元关联。

UML Composition

文件夹可以包含许多文件,而每个文件恰好有一个文件夹父级。如果删除了文件夹,则包含的所有文件也会被删除。

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

UML 组合示例:

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

UML Composition

组合

UML 聚合

聚合是 UML 中关联关系的一个子类型。聚合和组合都是 UML 中关联关系的一种类型。聚合关系可以用简单的话来说明为“一个类的对象可以拥有或访问另一个类的对象”。

在聚合关系中,即使源对象被销毁,依赖对象也仍然在关系的作用域内。

UML 聚合示例:

让我们以汽车和车轮为例。

汽车需要车轮才能正常运行,但车轮并不总是需要汽车。它也可以与自行车、单车或任何其他车辆一起使用,但不是特定的汽车。在这里,车轮对象在没有汽车对象的情况下仍然有意义。这种关系称为 UML 聚合关系。

UML Aggregation Relation

聚合

关联与聚合与组合

关联 聚合 组合
关联关系用箭头表示。 聚合关系用在其中一端带有空心箭头的直线表示。 组合关系用在其中一端带有实心箭头的直线表示。
关联可以存在于 UML 中的两个或多个类之间。 聚合是关联关系的一部分。 组合是关联关系的一部分。
关联类之间可以存在一对一、一对多、多对一和多对多的关联。 聚合被认为是弱类型的关联。 组合被认为是强类型的关联。
在关联关系中,一个或多个对象可以相互关联。 在聚合关系中,相互关联的对象可以在没有彼此的情况下留在系统的作用域内。 在组合关系中,相互关联的对象不能没有彼此而留在作用域内。
对象相互链接。 链接的对象不依赖于其他对象。 对象高度相互依赖。
在 UML 关联中,删除一个元素可能会影响也可能不会影响另一个关联元素。 在 UML 聚合中,删除一个元素不会影响另一个关联元素。 在 UML 组合中,删除一个元素会影响另一个关联元素。
示例
老师与多个学生相关。
或者
老师向学生提供指导。
示例
汽车需要车轮,但并不总是需要同一个车轮。汽车也可以与其他车轮正常运行。
示例
文件放在文件夹中。如果删除文件夹,则与该文件夹关联的文件也会被删除。

摘要

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

查看我们关于最佳 UML 工具的文章:- 点击这里