所以我有这个问题,我已经坚持了一段时间。我必须根据一些业务规则绘制关系,并包括多重性。问题如下:
一部电影要么有一颗星,两颗合星,要么超过10人一起凝视。一个明星必须至少参演一部电影。
到目前为止,我已经建立了这种关系,
电影--------------------------- 1 .. *明星
Movie to Star关系的多样性应该如何?我知道它的内容是1..2或11 .. *
我可以将这两个结合起来得到1..2..11 .. *?
的多重性帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
来自正式UML规范的摘录:
"多重性是非负整数的包含区间的定义,以下限开始,以(可能是无限的)上限结束。"
因此,您只能将一个连续片段作为多重性。
在你的情况下,我会在两端使用0 .. *并单独指定这些特殊限制。您可以或多或少地正式指定它们。一些想法:
这个逻辑可以在像addStars(Star [])这样的Movie方法中进一步实现,以便集中它。但是有很多正确的解决方案。
也许您已经注意到我推荐了0 .. *而不是1 .. *。这只是一个建议,可以提供更灵活的解决方案。 1的下限过于严格,只有在真正需要时才能使用(Parent-Child可能是一个例子,Child不能生成没有Parent)。它在Star的结尾处的价值1意味着在创作过程中必须至少有一个Star链接到电影!我发现它很难看。如果系统中还没有创建星星怎么办?
如果将电影创建为愿望清单或者在创作时阵容根本未知,该怎么办?如果电影根本没有星星怎么办? :)
通过将两个边界都保留为0,您可以创建相互独立的电影和开始。您可以随时链接它们,使您的系统更加灵活和用户友好。