UML 图中的聚合基数

Posted

技术标签:

【中文标题】UML 图中的聚合基数【英文标题】:aggregation cardinality in a UML diagram 【发布时间】:2017-08-14 15:52:02 【问题描述】:

我对聚合有两个疑问。在类 A 具有 B 类聚合的类图中: 1) 菱形边的基数是多少? 2)可以表示B类可以访问A吗? (内容可以看到容器)

谢谢。

【问题讨论】:

【参考方案1】:

采取以下设计:

A 可以将B 视为b,反之亦然可以视为a。未填充的菱形是一个共享聚合,根据 UML 规范没有固定的语义(建议就其在当前域中的含义达成一致)。多重性表明 A 在 B 中聚合了 0..* 次。进一步 1..* Bs 在 A 中可见。现在开始思考这可能意味着什么以及聚合(没有固定语义的共享)如何影响设计。

相比之下,实心菱形是复合聚合。这意味着As 的生命周期绑定到B。所以如果B 死了,那只是A 也必须做最后的祈祷。

对于复合聚合,B 一侧应该只有 1 多重性,否则您会遇到麻烦。这是他的规范所说的:

复合聚合是一种强大的聚合形式,它要求一个部分对象一次最多包含在一个复合对象中。如果一个复合对象被删除,它的所有作为对象的部分实例都会被删除。

【讨论】:

你能在菱形边画一个箭头来表示A可以导航到B吗? 你可以。但是,箭头符号现在被一个小点所取代,以显示所有权。此外,角色名称清楚地表明您可以导航(因为您分配了角色名称)。

以上是关于UML 图中的聚合基数的主要内容,如果未能解决你的问题,请参考以下文章

UML类图中的三种关系----关联聚合和泛化

UML-类图详解(依赖关联聚合组合泛化实现)

UML-类图详解(依赖关联聚合组合泛化实现)

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

在类图中过度使用聚合?

UML系列:Class Diagram