はじめに
クラス図の関係を表す矢印の違いがどうもしっくりこなくて、違いをいまいち理解できていない、、、
でも、自分の好きなことと関連付ければわかるようになるかもしれない!?
ということで、クラス図の関係線について、音楽関係の具体例を考えながらまとめることにしてみました!
関係線とは
クラス図における関係線は、関連、集約、コンポジション、汎化、依存、実現の6つ
それぞれの記法は以下の通り

関連(Association)
AがBを参照できるという関係性
実線で表現する。片方のみしか知らない場合に矢印がつく
例)ピアノ奏者 → ピアノ
ピアノ奏者はピアノを知っている(から、ピアノを使うことができる)
でもピアノはピアノ奏者を知らない(から、ピアノ奏者を使うことはできない)
集約(Aggregation)
AはBの集まりという関係性。AがなくなってもBがなくなることはない。Bは独立した存在
実線に白抜きのひし形で表現する
A has a B
例)バンド → バンドメンバー
バンドはバンドメンバーの集まり
バンドがなくなったとしても、バンドメンバーの人たちがいなくなるわけではない
また、バンドメンバーは別のバンドに所属することもできる
コンポジション(Composition)
AはBを所有するという関係性。AがなくなるとBもなくなる。BはAに固有のもの
実線に黒塗りのひし形
B is a part of A
例)声帯 ← 人間
人間は声帯を持っている
その人間がいなくなったら、その人の声帯も使い物にならなくなる
集約とコンポジションは似たような関係といえる
集約よりもコンポジションのほうが結びつきが強い
色が塗られているほうが強い結びつき!
依存(Dependency)
Aが一時的にBを使うという関係性
点線に矢印で表現する
例)合唱団 → 客演ピアニスト
ある曲を演奏するために、合唱団が客演でピアニストを呼んでくる
演奏会が終われば関係性も終わる
実際のプログラミングだと、メソッドの引数や一時的な関数の呼び出しなどが当てはまる
汎化(Generalization)
AはBであるという関係。継承の一種。上位クラスの性質を引き継ぐ
実線に白抜き三角で表現する
A is a B
例)エレクトーン → 鍵盤楽器
エレクトーンは鍵盤楽器である
鍵盤を持っているという鍵盤楽器の性質を受け継いでいる
実現(Realization)
AはBを実装している。いわゆるインタフェース
点線に白抜き三角で表現する
例)曲を演奏するオーケストラ → その曲の楽譜
楽譜は曲の仕様を定めたもの。その曲を実際の音楽として実現するのはオーケストラ
感想
自分で例を見つけるのは、いくら好きなものとはいえ大変でした
でも、オブジェクト指向の考え方が身の回りのことにも適応できると分かったのは発見です
関係線の理解が深まったかといわれると微妙なので、素直に勉強頑張ります
参考文献