UML 关联 vs 聚合 vs 组合

2025年3月17日 | 阅读 3 分钟

在 UML 图中,关系用于连接多个事物。 它是结构、行为或分组事物之间的连接。 以下是标准 UML 关系的列表。

  • 关联 (Association)
  • 依赖性
  • 泛化
  • Realization

关联 (Association)

关联关系是一种结构关系,其中不同的对象在系统内连接。 它展示了代表活动的对象之间的二元关系。 它描述了对象之间的关系,例如,一个老师可以与多个学生关联。

它由类之间的一条直线表示,后面跟着一个箭头指示方向,当箭头位于两侧时,则称为双向关联。 我们可以通过在线条上添加修饰符来指定关联的多重性,这些修饰符将表示关联。

示例

1) 一个老师可以有多个学生。

UML Association vs. Aggregation vs. Composition

2) 一个学生可以与多个老师关联。

UML Association vs. Aggregation vs. Composition

组合和聚合是关联的两个子集。 在这两种情况下,一个类的对象由另一个类的对象拥有; 唯一的区别在于,在组合中,子类不独立于其父类而存在,而在聚合中,子类不依赖于其父类,即可独立存在。 聚合是关联的一种特殊形式,组合是聚合的一种特殊形式。

UML Association vs. Aggregation vs. Composition

聚合 (Aggregation)

聚合是关联的子集,是不同事物的集合。 它表示“有一个”关系。 它比关联更具体。 它描述了部分-整体或部分-的关系。 这是一个二元关联,即它只涉及两个类。 这是一种子类独立于其父类的关系。

例如

在这里,我们考虑一个汽车和轮子的例子。 没有轮子,汽车无法行驶。 但是轮子可以独立地用于自行车、踏板车、自行车或任何其他车辆。 轮子对象可以存在而无需汽车对象,这证明了聚合关系。

UML Association vs. Aggregation vs. Composition

组合 (Composition)

组合是聚合的一部分,它描绘了整体-部分的关系。 它描述了复合(父)及其部分(子)之间的依赖关系,这意味着如果复合被销毁,它的部分也将被删除。 它存在于相似的对象之间。

正如您从下面给出的例子中看到的那样,组合关联关系将 Person 类与 Brain 类、Heart 类和 Legs 类连接起来。 如果人被销毁,大脑、心脏和腿也将被删除。

UML Association vs. Aggregation vs. Composition

关联 vs. 聚合 vs. 组合

关联 (Association)聚合 (Aggregation)组合 (Composition)
关联关系使用箭头表示。聚合关系由一条直线表示,一端有一个空心菱形。组合关系由一条直线表示,一端有一个实心菱形。
在 UML 中,它可以存在于两个或更多类之间。它是关联关系的一部分。它是聚合关系的一部分。
它包含类之间的一对一、一对多、多对一和多对多关联。它展示了一种弱关系。它展示了一种强关系。
它可以将一个或多个对象关联在一起。在聚合关系中,关联对象在系统范围内独立存在。在组合关系中,关联对象在系统范围内不能独立存在。
在这种情况下,对象连接在一起。在这种情况下,连接的对象彼此独立。在这里,连接的对象彼此依赖。
如果一个元素被删除,它可能会或可能不会影响其他关联元素。删除聚合关系中的一个元素不会影响其他关联元素。如果其关联元素之一被删除,它会影响其他元素。
示例:一个导师可以与多个学生关联,或者一个学生可以与多个老师关联。示例:一辆汽车需要一个轮子才能正常运行,但它可能不需要相同的轮子。 它也可以与其他轮子一起使用。示例:如果将一个文件放在一个文件夹中,并且该文件夹被删除。 那么,位于该文件夹内的文件也将在文件夹删除时被删除。

下一主题UML 关联