2017-08-06 6 views
2

私は学校のための簡単なクラス図を作成しようとしています。私のクラス階層の中で、学校は典型的には、2つの主要な利害関係者(学生&教師)とが先生に割り当てることができ、多くのの学生で構成されています。私はこの関係をどのように示すことができるのか分かりますか?学校のための簡単なUMLクラス図の作成

クラス図で集計と列挙を使用しましたが、正しいかどうかは正確には分かりません。私に助言してもらえますか? enter image description here

答えて

5

多重:(私はそれを予見することができますよう)あなたが多重度を使用している道が正しいです。 1人の教師につき少なくとも1人の生徒がいなければなりません。学生なしでは、先生はいません。恒久的な教師のいない雇用と消防のようなものです。

集約:共有集計(オープンダイヤモンド)は、あなたのやり方と同じように使用できます。それは正しいですが、以下の私の発言を参照してください。

列挙型<<enumeration>>に関しては、関連ではなく依存関係が必要です。クラスとの関係とは異なり、<<enumeration>>は、オブジェクトとして表されていない種類の「プリミティブ」です。

ロール名:@Oguzは、アソシエーションの最後にロール名を使用することをお勧めします。したがって、に近いTeacherstudents(複数あるので、1..*)の近くにteacherを置くことになります。これらの役割は属性として実装されます。

共有アグリゲーションについてのその他の注釈: 共有アグリゲーションについてはあまり気にする必要はありません。 UML仕様によれば、共通セマンティクス(UML 2.5のp。110)はありません。

プロパティが共有集約セマンティクスを持つことを示します。共有集約の正確なセマンティクスは、アプリケーション領域とモデラーによって異なります。

集約はオブジェクトの存続期間に関するもので、実際のアプリケーションはしばしば(まれに、コストやセキュリティの面でメモリを意識する必要がある)場合よりも稀です。

あなたの(そして他のほとんどの)ケースでは、多重度はあなたが見せたいものです。これは通常、複合アグリゲーション(子オブジェクトがその親と一緒に死ぬところ)。

+0

これは間違いなく正しい答えですが、私は重点を変更します。私は、OPが多重度を正しく使用しているという事実にもっと(最初に)焦点を当てるだろう。次に、関連付けを誤って使用することを指摘します。列挙型は依存関係に置き換えて、共有集約構造がモデルに付加価値をほとんど付加しないという副作用を追加するだけです。それでも、OPが共有集約を正しく使用したことに言及する必要があります。 – Ister

+0

@Isterコメントをいただきありがとうございます。私は、強調したように強調しました。 –

3

集計名を生徒に変更することができます。そして、Javaコードでは、教師クラスには配列、arraylist、setなどがあり、その名前は学生です。そして、もう1つのことがあります。この関係は、多くのものか​​0なのでしょうか(0 .. *)?

public class Teacher extends StakeHolders{ 

    public Student[] students; 

    public void markAttendance(){ 

    } 
} 
+2

ああ、そうです。属性ではなくロール名が良い考えです。私はそれを私の答えに加え、あなたのために+1します。 –

関連する問題