【问题标题】:Multiplicity Relationship for UML DiagramUML 图的多重性关系
【发布时间】:2014-04-25 11:45:23
【问题描述】:

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

一部电影要么有一个明星,要么有两个联合主演,要么有 10 多人一起注视。明星必须至少出现在一部电影中。

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

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

电影与明星关系的多样性应该是怎样的?我知道它类似于 1..2 或 11..*

我可以将这两个结合起来得到 1..2..11..* 的多重性吗?

我们将不胜感激。

谢谢!

【问题讨论】:

    标签: uml relationship multiplicity


    【解决方案1】:

    正式 UML 规范的摘录:

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

    所以,你只能有一个连续的片段作为多重性。

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

    • 正式方式:使用前置条件、后置条件和不变量, 最终在 OCL 中(如果你愿意,请用谷歌搜索这些术语)
    • 非正式的 方式:使用简单的文字说明或类/方法描述。

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

    也许您已经注意到我推荐的是 0..* 而不是 1..*。这只是一个导致更灵活解决方案的建议。 1 的下限太严格了,只有在真正需要时才应该使用(父子可能是一个例子,孩子不能在没有父母的情况下出生)。它在 Star 端的值为 1 意味着在创建电影的过程中必须至少有 1 个 Star 与电影相关联!我觉得很丑。如果系统中还没有创建星星怎么办?

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

    通过将两个边界都保留为 0,您可以创建彼此独立的 Movies 和 Start。您以后可以随时链接它们,使您的系统更加灵活和用户友好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多