UML クラス間相互関係

UML(Unified Modeling Language)におけるクラス間の「相互関係」の種類及び関係の表現法をまとめます。また、Javaのクラス実装との対応も付記します。

関連(association)

クラス間に何らかの結びつきがある関係
「has-a関係」AはBを持っている関係
[実装]データメンバが他のクラスのインスタンスを参照する。

集約(aggregation)

クラス間に関連よりも強い結びつきがある関係
「owns-a関係」AはBを所有している関係
二つのクラスが「全体-部分」の関係だが、他のクラスとの共有の場合もありうる。
なお、ひし形は相手を所有する、「全体」側に付きます。
[実装]データメンバが他のクラスのインスタンスを参照する。

コンポジション(composition)

クラス間に集約よりも強い結びつきがある関係
「part-of関係」BはAの一部である完全な包含関係
二つのクラスが「全体-部分」の独占関係で同時に生成・消滅する。
なお、ひし形は相手を所有する、「全体」側に付きます。
[実装]データメンバが他のクラスのインスタンスを参照する。

依存(dependency)

あるクラスが別のクラスを一時的に利用する関係
[実装]あるクラスのメソッド内で別のクラスのインスタンスを使用する。

汎化(generalization)

あるクラス(スーパークラス)を元に別のクラス(サブクラス)を派生させ、元のクラスの属性・操作も引き継ぐ関係
「is-a関係」Bはある種のAである関係
Javaでいう「継承」
なお、サブクラスからスーパークラスを導くのが汎化、逆にスーパークラスからサブクラスを導くのが特化

実現(realization)

他のクラスに「扱い方」、具象化時の条件を規定する関係
Javaでいう「Interface」
カテゴリー: Java タグ: , , , , , , , , , , , , , パーマリンク