【问题标题】:How can I specify multiple choices in Class-Diagram?如何在 Class-Diagram 中指定多个选项?
【发布时间】:2017-04-02 09:43:12
【问题描述】:

我正在制作一个系统的类图,其中用户可以充当学生、教师或助手。到目前为止,我已经创建了一个具有以下属性和方法的用户类,用户可以在其中以特定角色参与单个课程,也可以从特定课程中移除。因为,一个用户只能拥有一个角色,所以我在方括号中声明了它-Participant: Role [1]

但是,它只说一个用户可以拥有一个角色,而不是说一个用户的不同角色。如何在类图中指定它。我应该创建一个新的Role 类,还是可以在user 类中指定?

USER CLASS:
Attributes:
-username: String
-password: String
-Participant: Role [1]
Methods:
+participate(course: Course, role: Role): void
+remove_user(course: Course): void
+get_average(assignment: Assignment): int

【问题讨论】:

  • 有什么东西让你无法接受答案吗?

标签: uml class-diagram


【解决方案1】:

您可以将Role 抽象化,然后为学生、教师和助理创建子类。这样,您只能为每个用户实例化一个子类。

或者,您可以将Role 设为枚举,其中每个枚举文字都是Role 的特定实例。这样您就可以在整个系统中实例化每个Role 之一:学生、讲师和助理。

在您的系统中,是否所有用户都扮演相同角色,或者每个用户角色中是否应该有额外的信息,例如角色被分配到用户?此问题的答案会告诉您选择哪种方案。

顺便说一句,用户是学生、讲师或助理的限制,曾经,是不是有点限制了?为什么用户不能在一门课程中扮演学生的角色,而在另一门课程中扮演助手的角色?

【讨论】:

  • 非常感谢您的解释。你能描述得更详细一点吗?我应该创建一个Role 类并再创建3 个继承Role 类的类吗?在这种情况下,Role 类必须有一些属性,有关系吗?
  • 3 个子类或 3 个枚举字面量都可以。这个问题实际上涉及一个非常复杂的理论问题,它可能会让你的眼睛翻到你的头上,与谓词和 qua 实体有关。
猜你喜欢
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 2018-11-11
相关资源
最近更新 更多