如果用户可以成为许多组的一部分并且一个组可以包含许多用户,那么在UML中,这种关系必须表示为聚合关系?或者我们可以使用简单的关联?
答案 0 :(得分:2)
在大多数情况下,关联就足够了。您最有可能在任一端添加多重性以显示用户(应该)至少在一个中,或者可以在多个组中(当然这取决于域),因此您会看到1..*
多重性。反之亦然,一个群组将拥有0..*
个用户。
您可以使用Aggregation
(组边的空心菱形)来显示多个用户组成的组。使用合成通常(在用户管理上下文中)没有意义,因为这意味着一个组只能在有属于它的用户时才构成。
无论如何,在用户管理环境中我不会使用Aggregation
。原因是用户和组都是几乎相同级别(YMMV)的概念,而使用Aggregation
将告诉读者聚合元素的位置低于聚合元素。
答案 1 :(得分:1)
在这种情况下,很明显“复合”不是一种选择,因此可以是“共享”或“无”。 OMG规范定义如下共享:
“应用程序区域和建模者共享聚合的精确语义变化。”
所以你可以选择任何一种选择。如果你想在UML图表中表示这个,,,,,
(“1 .. *”可能是正确的多重性......)
我的回答是基于UML规范2.4.1 - [7.3.2 AggregationKind]
AggregationKind是以下文字值的枚举:
<强>无强>
表示该属性没有聚合。
<强>共享强>
表示该属性具有共享聚合。
<强>复合强>
表示属性是复合聚合的,即复合对象负责组合对象(部件)的存在和存储。
语义变化点
共享聚合的精确语义因应用程序区域和建模者而异。
未定义创建零件实例的顺序和方式。