2017-04-01 15 views
0

私は、ユーザーが学生、インストラクター、またはアシスタントとして行動できるシステムのクラス図を作成しています。これまでは、ユーザーが特定の役割を持つ単一のコースに参加でき、特定のコースから削除できる、次の属性とメソッドを持つユーザークラスを作成しました。ユーザーは1つの役割しか持つことができないので、角括弧-Participant: Role [1]で宣言しました。クラス図で複数の選択肢を指定するにはどうすればよいですか?

ただし、ユーザーは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を抽象化して、学生、インストラクタ、アシスタントのサブクラスを作成することができます。そうすることで、ユーザごとにサブクラスのうちの1つだけをインスタンス化することができます。

また、Roleを列挙型にすることもできます。各列挙型リテラルは、Roleの特定のインスタンスです。そうすれば、システム全体でRoleのいずれかをインスタンス化することができます:学生、インストラクター、アシスタント。お使いのシステムでは

は、すべてのユーザーが同じな役割を果たすべきか、内の各ユーザ役割は、そのような役割がユーザーに割り当てられた日付など、追加の情報を持っている必要がありますか?この質問に対する答えは、どの選択肢を選択するかを示します。

はところで、学生、講師、またはアシスタントされているユーザの制限、これまで、ビットすぎ限定するものではないのですか?なぜ、別のコースでアシスタントの役割を果たしている間に、ユーザーが1つのコースで学生の役割を果たすことができなかったのですか?

+0

ありがとうございました。あなたはもう少し説明的なことができますか?私は 'Role'クラスを作成し、' Role'クラスを継承する3つのクラスを作成する必要がありますか?そのような場合、 'Role'クラスにはいくつかの属性が必要です。重要ですか? –

+0

3つのサブクラスまたは3つの列挙リテラルが機能します。この質問は実際にはあなたの目があなたの頭の中に巻き込まれるような、非常に複雑な理論上の問題に触れ、述語とクォー・エンティティと関係があります。 –

関連する問題