共享聚集(aggregation
Aggregation,简称aggregation)是属性 与一个或多个组合对象(将一组实例组合在一起)
之间的二元关联。 当零件实例独立于复合材料时,它是一种“弱” 聚合形式。共享聚合具有以下特点:
- 它是二元关联,
- 它是不对称的-只有关联的一端可以是聚合,
- 它是可传递的-聚合链接应该形成一个有向的、非循环的图,这样组合实例就不可能是自身的间接部分,
- 共享部分可以包含在多个复合材料中,如果某些或全部复合材料被删除,共享部分可能仍然存在。
符号(Notation)
共享聚集被描述为在关联线的聚集端用空心菱形装饰的关联。菱形应该明显小于N元关联的菱形符号。
以下示例将三角形显示为正好三条线段(边)的集合。三角形关联端的多重性“*”意味着每个线段可以是几个三角形的一部分,或者根本不属于任何三角形。擦除特定三角形实例并不意味着所有或任何线段也将被删除。(注意,我们将三个线段的集合命名为“边”,而通常的UML惯例是使用单数形式,即“边”,即使是集合。)
三角形有三条线段的“边”集合。
每条线段可以是无三角形、一个三角形或多个三角形的一部分。
共享聚合可以与其他关联装饰(如导航性和关联最终所有权)一起描述。在下面的示例中,线段可以从三角形导航。关联端“边”属于三角形(而不是关联本身),这意味着“边”是三角形的一个属性。
三角形具有三个独特线段的“边”集合。
线段可从Triangle导航。
关联端“边”由Triangle拥有,而不是关联本身。
错误(Mistakes)
聚合是不对称关系-只允许将关联的一端标记为共享或复合聚合。UML
1.x和2.x都不允许将菱形附着到关联线的两端。下面例子背后的推理是每个学生实例都有一个他/她注册的课程列表,每个课程都有一个注册该课程的学生列表。
聚合错误——关联只有一端
可以标记为聚合。
如果我们如下图所示绘制两个单独的聚合,将不会有帮助。聚合链接应该形成一个有向的非循环图,这样组合实例就不应该是其自身的直接或间接部分。
聚合错误-没有复合实例
应该是它自身的直接或间接部分。
历史
在UML 1.x中,聚合的种类为none,aggregate和Composite。UML
2.0将本页上描述的聚合类型从聚合重命名为共享,因此在UML 2.x中聚合类型为: 非共享聚合,共享聚合和复合聚合等。
例子
图书馆领域模型
医院领域UML类图示例
医学中的数字成像——现实世界的数字医学模型
android相机实现类
|