UML图的多重关系

时间:2014-04-25 11:45:23

标签: uml relationship multiplicity

所以我有这个问题,我已经坚持了一段时间。我必须根据一些业务规则绘制关系,并包括多重性。问题如下:

一部电影要么有一颗星,两颗合星,要么超过10人一起凝视。一个明星必须至少参演一部电影。

到目前为止,我已经建立了这种关系,

电影--------------------------- 1 .. *明星

Movie to Star关系的多样性应该如何?我知道它的内容是1..2或11 .. *

我可以将这两个结合起来得到1..2..11 .. *?

的多重性

帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

来自正式UML规范的摘录:

"多重性是非负整数的包含区间的定义,以下限开始,以(可能是无限的)上限结束。"

因此,您只能将一个连续片段作为多重性。

在你的情况下,我会在两端使用0 .. *并单独指定这些特殊限制。您可以或多或少地正式指定它们。一些想法:

  • 正式方式:使用前置条件,后置条件和不变量, 最终在OCL(如果你愿意,请谷歌这些条款)
  • 非正式 方式:使用简单的文本注释或类/方法描述。

这个逻辑可以在像addStars(Star [])这样的Movie方法中进一步实现,以便集中它。但是有很多正确的解决方案。

也许您已经注意到我推荐了0 .. *而不是1 .. *。这只是一个建议,可以提供更灵活的解决方案。 1的下限过于严格,只有在真正需要时才能使用(Parent-Child可能是一个例子,Child不能生成没有Parent)。它在Star的结尾处的价值1意味着在创作过程中必须至少有一个Star链接到电影!我发现它很难看。如果系统中还没有创建星星怎么办?

如果将电影创建为愿望清单或者在创作时阵容根本未知,该怎么办?如果电影根本没有星星怎么办? :)

通过将两个边界都保留为0,您可以创建相互独立的电影和开始。您可以随时链接它们,使您的系统更加灵活和用户友好。