我对聚合有两个疑问。在类图中,类A具有类B的聚合: 1)钻石方面的基数是多少? 2)可以表示B类有权访问A? (内容可以看到容器)
谢谢。
答案 0 :(得分:0)
采取以下设计:
A
可以将B
视为b
,反之亦然可以视为a
。未填充的菱形是一个共享聚合,根据UML规范没有固定的语义(建议在当前域中同意它的含义)。多重性表明A在0..*
中聚合B
次。在A中可以看到更多1..*
B
。现在开始思考这可能意味着什么以及聚合(没有固定语义的共享)如何影响设计。
相反,填充的钻石是复合聚合物。这意味着A
的生命周期与B
绑定。因此,如果B
去世,那么所有A
也必须说出他们的最后一次祷告。
使用复合聚合,1
侧应该只有B
多重性,否则会遇到麻烦。这是他的规范所说的:
复合聚合是一种强大的聚合形式,需要一次将一个零件对象包含在最多一个复合对象中。如果删除了复合对象,则会删除作为对象的所有零件实例。