首页 > 解决方案 > OOP UML 类图,一个人有多个角色。它的结构应该是怎样的?

问题描述

系统中存在三种类型的角色。

裁判员

总统(只有1位总统)

作者

一个人既可以是裁判,也可以是作者。

如果一个人有总统的角色,他们就不能有另一个角色。

UML 类图应该是怎样的?

标签: oopumlanalysisclass-diagramclass-design

解决方案


这完全取决于设计中人员和角色的目的。

作为第一个想法,如果 aPerson可以有 a Role,那么您将在这里有两个具有以下多重性关联的类:

  • a Personhas 1..n Role, 表示至少一个角色
  • a Rolecan betake by 0..n Person,这意味着有些角色可能根本无法履行,而角色可以由多个用户担任
  • 对于特定的类(称为对象,例如标记为“总统”)的特定出现的关联(称为链接)的特定出现次数,没有任何说明

对于“总裁”等特定角色,有多种设计选择:

  • 您可以在系统中拥有(硬编码?)控件,以确保只有一个链接。您可以在具有显式约束的类图中表达这一点。
  • 您可以指定具有该角色的最大人数作为该角色的属性。但这立即表明存在不同类型的 if 角色(一些有最大值,一些没有限制)。

深入了解这个启动模型会引发其他问题:

  • 该系统是否有 1 位全球总裁的限制,或者该角色是否与其他角色相关联(例如,某个实体的总裁、陪审团、公司......)?在后一种情况下,将缺少一些额外的类(和要求)。
  • 角色列表是否固定,是否有很多与之相关的规则?如果是,您可以考虑 Bruno 建议的枚举。如果不是,你可以想一个字符串属性来描述角色。
  • 最后但同样重要的是,特定角色在系统中是否具有特定行为?如果是,您可以考虑在您的图表中添加角色的专业化(并且President显然是成为这种专业化的候选人Role)。

所以这一切都取决于你设计的大局。


推荐阅读