enter image description hereSo I need to practice UML for a uni course and I can't figure out the following:

我们需要为体育协会创建一个UML类图.有一张球员桌.球员桌的一个子类是裁判桌.球员是球队的一部分,裁判也是球队的一部分(因为裁判也是球员).裁判被分配到一场比赛,但这不能是他自己球队的比赛.

我找不到最后一句话的答案.我该如何把它放在UML类图中呢?

UML图是荷兰语的.韦斯特里德=比赛,计划=裁判其他的都不是必须的.

推荐答案

您的图表可能有几个问题,因为它表明,对于一个比赛(Wedstrijd),只有一个Team(堆肥聚合),这听起来既不具竞争性,也不具娱乐性.此外,它还说,一个俱乐部(Sportsverijn)最多有一名成员,这与故事中的说法不符.

一旦解决了这些问题(以及其他几个问题),并假设Wedstrijd涉及两个团队,您可以向模型添加约束以表达这些复杂的条件.

通常,在比赛(Wedstrijd)和裁判(Scheidsrechter)之间的关联旁边用花括号表示它们,明文是:{ cannot be referee for a match involving the relevant team }.这种自然语言的约束是模棱两可的.可以用OCL写一个更正式的表达,类似于:match.team->includes(match.referee.team) == false

当然,表达的细节将取决于你的模型是快照(这里似乎是这样),还是考虑到裁判可能会及时更换球队的事实.这里我有一个替代模型,它避免了复合聚合,并将裁判与球队相关联,并提供了两个约束示例:

enter image description here

Database相关问答推荐

如何自动更新不同的数据库?

是否可以同时从 RocksDB 读取?

我应该为 Realm 中的每个实体定义主键吗?

mysql搜索表名的段

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

如何获取 PostgreSQL 数据库的最后访问/修改日期?

将少量信息保存为 android 中的设置

customer客户表的数据库 struct ,每个客户有很多订单,每个订单有很多商品

在 iphone 上本地存储数据

在内存中创建 SQLite 数据库

Hibernate如何连接多个数据库

MySQL相对于其他数据库的缺点

谁有维基数据库?

在数据库中存储年份

如何使用反射调用扫描可变参数函数

如何在 SQL Server 中删除多个数据库

什么是 ACID 的真实示例?

在 Django 中,如何从数据库中 Select 100 条随机记录?

Cassandra - 事务支持

PostgreSQL 中的最大事务大小