クラス図の要素間の関係

提供: RAD Studio
移動先: 案内検索

UML 1.5 クラス図:インデックス への移動

関係とは要素間を接続するものです。 モデリング機能で最も重要な 3 つの関係は、依存と汎化と関連です。 図上では、関係の種類を判断できるよう、それぞれ異なる線を使って描画されます。

クラス図の要素間の関係の種類

クラス図の要素の間では、次の種類の関係を使用することができます。

  • 汎化と実装
  • 依存
  • 関連(単純な関連、N 項関連、集約、合成)
  • 提供インターフェイスと要求インターフェイス(UML 2.0)

汎化と実装

  • 汎化 -- 汎化とは、一般的な要素(スーパークラス、親)と、その要素をより具体化したもの(サブクラス、子)の間の関係です。 また、汎化を使って、2 つのインターフェイス(子と親)の間の継承関係を示すこともできます。
汎化とは、子が親のプロパティ(属性、オペレーションなど)を継承し、親要素のオブジェクトが現れるすべての場所で子要素のオブジェクトを使用できるという意味です。
図上で、汎化は、親を指す大きな白抜きの矢印が付いた実線で描画されます。
汎化リンク
  • 実装 -- 実装関係は、汎化関係の特殊なものです。 実装とは、子クラスが親インターフェイスを実装することを示す継承リンクです。
図上で、実装は、親インターフェイスを指す大きな白抜きの矢印が付いた破線で描画されます。
実装リンク

依存(dependency)

依存とは、一方の要素(独立した要素 - サプライヤ)を変更すると、他方の要素(依存した要素 - クライアント)に対する変更が必要になるという、2 つの要素間の関係です。

図上で、依存は、依存されるもの(サプライヤ)を指す破線の矢印で描画されます。
依存リンク

関連(association)

2 つのクラスのインスタンス間の関係です。 2 つのクラス間に関連が存在するのは、一方のクラスのインスタンス(クライアント)が、他方(サプライヤ)について知っている必要がある場合です。

図上で、関連は、2 つのクラスを結ぶ実線で描画されます。

詳細を指定するために、必要に応じて誘導可能性、ロール、多重度を関連上に記述することができます。

  • 関連の誘導可能性。 関連には矢印の付いたものと付かないものがあります。 矢印の付いたリンクは、サプライヤ クラス(リンク先)を指しています。 関連に付けられた誘導可能性の矢印は、関連をたどって移動したり問い合わせを行うことができる方向を示します。 クラスが自分の "項目" について問い合わせることはできますが、その逆はできません。 この矢印を見ると、関連の実装をどちらが "所有" しているかを知ることもできます。 誘導可能性の矢印が付いていない関連は、双方向です。 たとえば、図書館クラスとクラスの間に双方向の関連があれば、図書館型のオブジェクトから型のオブジェクトへたどることも、逆方向にたどることも可能です。
  • ロール。 関連には 2 つの端があります。 それぞれの端にロール名を付けて、関連がどういうものかを明確に示すことができます。
  • 多重度。 関連端には多重度を指定することができます。 関連端の多重度とは、反対側の関連端の 1 つのインスタンスに対して関連付けることのできる、元のクラスのインスタンスの数です。 多重度は、数または数の範囲で表します。

よく使われる多重度を次の表に示します。

多重度 意味

0..1

0 個または 1 個のインスタンス。 n..m という表記は、インスタンスが nm 個であることを示します。

1 または n

必ず 1 個のインスタンス、または必ず n 個のインスタンス。

0..* または *

インスタンス数に制限はありません(ゼロも含みます)。

1..*

少なくとも 1 個のインスタンス。


関連の種類

関連関係には次の種類があります。

  1. 関連単純な関連) -- 2 つの対等なクラス間の関連("単純な関連")です。 対等な 2 つのものの間の、純粋な構造的関係を表します。 双方のクラスは概念的に同じレベルであり、一方が他方より重要ということはありません。
図上で、関連は、2 つのクラスを結ぶ実線で描画されます。
関連リンク
この図は "単純な関連" のリンクを表しています。owner というロールと、1 および 0..* の多重度が付いています。また、Client クラスから Password クラスへと関連をたどって誘導可能であることが指定されています。
  1. 関連N 項関連) -- N 項関連では、必要な数の関連端クラス(構成要素)を接続することができます。 N 項関連を作成するには関連クラスを使用します。
関連クラスは、3 つの関係する要素として図上に表示されます。
* 関連クラス自体(関連クラス要素)。クラス アイコンで表されます。
* N 項関連クラス リンク(関連端リンク)。ひし形で表されます。
* 関連コネクタ(関連クラス コネクタ)。関連クラスのアイコンと関連のひし形との間のリンクで表されます。
関連クラス、関連リンク、およびコネクタの[オブジェクト インスペクタ]には、[関連]タブが追加で表示されます。 このタブにはラベルのプロパティだけが含まれ、その値は関連クラスの名前と同期しています。 関連クラスと関連端リンクでは、[オブジェクト インスペクタ][カスタム]項目に、N 項関連のこの部分のロールに対応するプロパティが追加で表示されます(それぞれ associationClass および associationEnd)。
関連端リンクや構成要素クラスのどれを削除しても、N 項関連全体が壊れることはありません。 ただし、関連クラスを削除すると、N 項関連のすべての部品が削除されます。
次も参照してください: 関連クラスを作成する
  1. 集約 -- 集約は "部分 - 全体" の関係を表す特殊な関連です。一方のクラスが大きい要素("全体")を表し、そこに小さい要素("部分"。複数可)が含まれます。 部分を表す個々のクラスと全体を表す 1 つのクラスの間に、別々の集約リンクを作成します。
図上で、集約は、"全体" の端に白抜きのひし形が付いた、2 つのクラスを結ぶ実線で描画されます。
集約リンク
この図は集約リンクを表しています。 Group クラスは "全体" を、Person クラスは "部分" を表します。 両端の 0..* という多重度と、union および member というロールによって、それぞれの unionGroup 型)が任意の数の memberPerson 型)を含むことができ、逆に Person 型の各オブジェクトが任意の数の unionGroup 型)の member になれることが示されています。 この集約の誘導可能性は双方向であるため、Group 型のオブジェクトはそこに含まれる Person 型の member を要求でき、Person 型のオブジェクトは自分が member になっている union(Group 型)を要求できます。
  1. 合成 -- 合成は "強い" 形態の特殊な集約であり、その "合成端" は "部分端" の管理について全責任を負います(部分の作成や破棄など)。
図上で、合成は、塗りつぶしたひし形が合成端に付いた、2 つのクラスを結ぶ実線で描画されます。
合成リンク
この図は合成リンクを表しています。 Order クラスは "合成" を、Customer クラスおよび LineItem クラスは "部分" を表します。

提供インターフェイスと要求インターフェイス

UML 2.0 のクラス図では、提供インターフェイス要求インターフェイスが導入されています。

提供インターフェイスと必須インターフェイスを示すために、UML 2.0 のクラス図では、提供インターフェイス リンク 提供インターフェイス リンク("ロリポップ" 表記)と必須インターフェイス リンク 必須インターフェイス リンク("ソケット" 表記)を使用します(「UML 2.0 クラス図の要素」を参照)。


関連項目