【发布时间】:2017-08-14 15:52:02
【问题描述】:
我对聚合有两个疑问。在类 A 具有 B 类聚合的类图中: 1) 菱形边的基数是多少? 2)可以表示B类可以访问A吗? (内容可以看到容器)
谢谢。
【问题讨论】:
标签: uml aggregation
我对聚合有两个疑问。在类 A 具有 B 类聚合的类图中: 1) 菱形边的基数是多少? 2)可以表示B类可以访问A吗? (内容可以看到容器)
谢谢。
【问题讨论】:
标签: uml aggregation
采取以下设计:
A 可以将B 视为b,反之亦然可以视为a。未填充的菱形是一个共享聚合,根据 UML 规范没有固定的语义(建议就其在当前域中的含义达成一致)。多重性表明 A 在 B 中聚合了 0..* 次。进一步 1..* Bs 在 A 中可见。现在开始思考这可能意味着什么以及聚合(没有固定语义的共享)如何影响设计。
相比之下,实心菱形是复合聚合。这意味着As 的生命周期绑定到B。所以如果B 死了,那只是A 也必须做最后的祈祷。
对于复合聚合,B 一侧应该只有 1 多重性,否则您会遇到麻烦。这是他的规范所说的:
复合聚合是一种强大的聚合形式,它要求一个部分对象一次最多包含在一个复合对象中。如果一个复合对象被删除,它的所有作为对象的部分实例都会被删除。
【讨论】: