2017-04-01 15 views
0

我正在制作一个系统的类图,用户可以充当学生,教师或助理。到目前为止,我已经创建了一个具有以下属性和方法的用户类,其中用户可以参与具有特定角色的单个课程,也可以从特定课程中删除。因为用户只能有一个角色,所以我在方括号-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 
+0

是什么东西阻止你接受答案? –

回答

1

您可以制作Role摘要,然后为学生,讲师和助理创建子类。这样你只能为每个用户实例化一个子类。

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

在你的系统中,应在所有用户玩相同作用,还是应该在一个角色的每个用户有额外的信息,比如角色被分配给用户的日期?这个问题的答案告诉你选择哪个选择。

BTW,是不是用户作为一个学生,教师或助教的限制,曾经,有点太限制?为什么用户不能在一门课程中扮演学生的角色,而在其他课程中扮演助理的角色呢?

+0

非常感谢您的解释。你能更具描述性吗?我应该创建一个Role类,并创建3个继承Role类的类吗?在这种情况下,角色类必须具有一些属性,这是否重要? –

+0

可以使用3个子类或3个枚举文字。这个问题实际上触及了一个非常复杂的理论问题,它可能会让你的眼睛卷入你的脑海,不得不处理谓词和实体。 –

相关问题