クラス図の書き方

クラス図とは実は当たり前で簡単なものなのです。

関係の種類

ここでは、特別な意味があってUMLで特別な表記法が用意されている関係につ いてお話しします。

集約

「集約」とは、「あるインスタンスが別のインスタンスの集合である」という 関係です。下の図で、関係の線の「裁判所」側にある菱形が集約を表します。

集約の書き方
集約の書き方

これは、「裁判所とは(複数の)裁判官が集まった所である」と読みます。ある いは「裁判官は裁判所の構成要素である」と読んでもよいでしょう。裁判所に は他にも事務員や速記者などもあるかもしれませんが、それはこの図には書か れていないだけで、そうした色々なものも同様に集約関係になります。

菱形の集約マークは(当然のことながら)両方向には付きません。そして必ずツ リー状になります。集約関係の場合、双方のオブジェクトは普通の関係より密 接につながります。

コンポジション

集約関係の中で、部品と全体の関係になるものを特に「コンポジション」と呼 びます。コンポジションは菱形を黒く塗り潰して表記します。

コンポジションの書き方
コンポジションの書き方

集約とコンポジションの違いは、部分が全体に組込まれているか否かです。コ ンポジションの場合は、部分に対する全体オブジェクトは必ず一つだけ存在し ます。それに対して集約の場合はそのような制約はありません。例えば裁判官 は(規則の話は無視すると)複数の裁判所を兼任することも不可能ではありませ んし、一時的にどこの裁判所にも所属していないという状態になることがある かもしれません。しかし法廷の場合にはそんな事はあり得ません。「最高裁判 所第一小法廷」が最高裁判所から独立する事はありません。法廷というのは最 高裁判所の中に組込まれてしまっていて、外すことはできないからです。

汎化

汎化とは、オブジェクト指向で「継承」と呼ばれている関係です。UMLでは白 抜き三角矢印で表します。普通の線で書くやり方とツリーのように書くやり方 と2通りありますが、見やすい方を使えばいいでしょう。

汎化(継承)の書き方 汎化(継承)の書き方

汎化の関係名を書きたい場合には、普通の関係と同じように線の上にその名前 を書きます。しかし汎化の場合は名前を書くことはあまりありません。

まとめ

集約とコンポジションは部分と全体の関係です。概念を理解するのは難しいで すが、通常より結び付きの強い関係ですので特別扱いをしておくと何かと便利 です。また、汎化の関係はオブジェクト指向ではよく出てくる関係です。