所以我需要为一门大学课程练习UML,但我无法弄清楚以下内容:
我们需要做一个体育协会的UML类图。有一个玩家表。玩家表的一个子类是裁判表。球员是球队的一部分,裁判也是球队的一部分(因为裁判也是球员)。裁判被分配到一场比赛,但不能是他自己球队的比赛。
我找不到最后一句话的答案。我如何将其放入 UML 类图中?
UML 图是荷兰语。 Wedstrijd = 比赛,scheidsrechter = 裁判其他人并不是真正必要的。
你的图表可能有几个问题,因为它说对于一场比赛 (
Wedstrijd
) 只有一个 Team
(composte aggregation) ,这听起来既没有竞争性也没有娱乐性。而且它说一个俱乐部(Sportsverijn
)最多有一个成员,这与叙述不符。
一旦解决了这些问题(以及其他几个问题),并假设
Wedstrijd
涉及两个团队,您可以向模型添加约束以表达这些复杂的条件。
通常,您会在大括号之间以明文形式表达它们:
{ cannot be referee for a match involving the relevant team }
紧挨着比赛 (Wedstrijd
) 和裁判 (Scheidsrechter
) 之间的关联。这种自然语言约束是不明确的。可以用 OCL 写一个更正式的表达式,比如:match.team->includes(match.referee.team) == false
表达的细节当然要看你的模型是不是snapshot(这里好像是这样),或者考虑到裁判可能会及时换队。这里我有一个替代模型,它避免了复合聚合并将裁判与团队相关联,有两个约束示例: