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..*
B
s 在 A 中可见。现在开始思考这可能意味着什么以及聚合(没有固定语义的共享)如何影响设计。
相比之下,实心菱形是复合聚合。这意味着A
s 的生命周期绑定到B
。所以如果B
死了,那只是A
也必须做最后的祈祷。
对于复合聚合,B
一侧应该只有 1
多重性,否则您会遇到麻烦。这是他的规范所说的:
复合聚合是一种强大的聚合形式,它要求一个部分对象一次最多包含在一个复合对象中。如果一个复合对象被删除,它的所有作为对象的部分实例都会被删除。
【讨论】:
你能在菱形边画一个箭头来表示A可以导航到B吗? 你可以。但是,箭头符号现在被一个小点所取代,以显示所有权。此外,角色名称清楚地表明您可以导航(因为您分配了角色名称)。以上是关于UML 图中的聚合基数的主要内容,如果未能解决你的问题,请参考以下文章