UML中的用户组聚合关系

时间:2015-05-25 19:55:59

标签: uml aggregation

如果用户可以成为许多组的一部分并且一个组可以包含许多用户,那么在UML中,这种关系必须表示为聚合关系?或者我们可以使用简单的关联?

2 个答案:

答案 0 :(得分:2)

在大多数情况下,关联就足够了。您最有可能在任一端添加多重性以显示用户(应该)至少在一个中,或者可以在多个组中(当然这取决于域),因此您会看到1..*多重性。反之亦然,一个群组将拥有0..*个用户。

您可以使用Aggregation(组边的空心菱形)来显示多个用户组成的组。使用合成通常(在用户管理上下文中)没有意义,因为这意味着一个组只能在有属于它的用户时才构成。

无论如何,在用户管理环境中我不会使用Aggregation。原因是用户和组都是几乎相同级别(YMMV)的概念,而使用Aggregation将告诉读者聚合元素的位置低于聚合元素。

答案 1 :(得分:1)

在这种情况下,很明显“复合”不是一种选择,因此可以是“共享”或“无”。 OMG规范定义如下共享:

“应用程序区域和建模者共享聚合的精确语义变化。”

所以你可以选择任何一种选择。如果你想在UML图表中表示这个,,,,, enter image description here

(“1 .. *”可能是正确的多重性......)

我的回答是基于UML规范2.4.1 - [7.3.2 AggregationKind]

AggregationKind是以下文字值的枚举:

<强>无

表示该属性没有聚合。

<强>共享

表示该属性具有共享聚合。

<强>复合

表示属性是复合聚合的,即复合对象负责组合对象(部件)的存在和存储。

语义变化点

共享聚合的精确语义因应用程序区域和建模者而异。

未定义创建零件实例的顺序和方式。