UML 类图中关联的复杂规则

问题描述 投票:0回答:2

所以我需要为一门大学课程练习UML,但我无法弄清楚以下内容:

我们需要做一个体育协会的UML类图。有一个玩家表。玩家表的一个子类是裁判表。球员是球队的一部分,裁判也是球队的一部分(因为裁判也是球员)。裁判被分配到一场比赛,但不能是他自己球队的比赛。

我找不到最后一句话的答案。我如何将其放入 UML 类图中?

UML 图是荷兰语。 Wedstrijd = 比赛,scheidsrechter = 裁判其他人并不是真正必要的。

database class uml modeling class-diagram
2个回答
2
投票

你的图表可能有几个问题,因为它说对于一场比赛 (

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(这里好像是这样),或者考虑到裁判可能会及时换队。这里我有一个替代模型,它避免了复合聚合并将裁判与团队相关联,有两个约束示例:


0
投票

虽然@Christophe 的答案是完美的,但我找到了一种不受限制地表达相同内容的方法: 当然,它使用了一些不太知名的结构:关联之间的泛化、复合结构图和私有行为端口。然而,我相信它是有用的,因为它不仅涵盖了裁判必须来自不同球队的事实,而且在给定时间只能有 11 名球员积极参与比赛。

© www.soinside.com 2019 - 2024. All rights reserved.