Notice : 内容無保証。禁無断転載。リンク不自由。

オブジェクトコンポジション

再利用のためのメカニズム。継承からオブジェクトコンポジションへ。

クラス継承
(ホワイトボックス再利用)
オブジェクトコンポジション
(ブラックボックス再利用)
クラス図 クラス継承 オブジェクトコンポジション
利点

言語による直接的な支援がある。

実装方法を修正しやすい。
(オーバーライドによる)

実行時に実装を動的に選択できる。

カプセル化の概念を壊さない。

各クラスの目的が明確になる。

欠点

柔軟性が無い。
(実装がコンパイル時に静的に決まるため)

親クラスの変更が子クラスの変更を強いる。

親クラスの実装の詳細が子クラスに明かされる。
(カプセル化の概念を破る)

再利用の過程で親クラスが肥大化しがち。
(クラスの目的が不明確になる)

インタフェース設計に注意深さが要求される。

システムの振る舞いがわかりにくくなる。
(オブジェクト間の関連が動的に決まるため)