コンポジションとは?こんぽじしょん
コンポジションとは、オブジェクト指向の設計で、全体と部分の関係のうち、部分が全体に完全に属し、全体がなくなると部分も一緒になくなる強い関係。部分は同時に二つの全体に属さない。UMLのクラス図では、全体の側に黒塗りのひし形を付けた線で表す。設計の考え方としては、ほかのクラスの機能を、継承(親クラスの性質を引き継ぐこと)ではなく、部品として内部に持って使う作り方も指す。
最終更新:2026-10-10
この語が出る過去問を解く →背景
部分を全体と別々に管理すると、全体を削除したのに部分だけが残り、どこからも使われないデータが積み上がる。部分の寿命を全体に結び付けると決めておけば、消すときの手順が設計図から一意に決まる。また、継承で機能を引き継ぐと親クラスの変更が子クラスへ波及しやすいため、「継承よりも部品として持つ」コンポジションが設計の定石として広まった。
具体例
Amazonの注文(全体)と注文明細(部分)はコンポジションの関係にあたる。注文明細は「この注文の1行目の商品と数量」なので、注文を取り消して削除すれば明細も意味を失って一緒に消え、別の注文の明細を兼ねることもない。これに対し、明細が指している商品そのものは注文が消えても残るので、注文と商品はコンポジションではない。
試験での引っ掛け
集約との区別が最頻出。部分が全体と一緒に消えるのがコンポジション(黒塗り)、独立して残るのが集約(白抜き)。また、同じ呼び出しでもクラスごとに違う処理が動く性質はポリモーフィズム(多相性)で、コンポジションや継承、委譲(処理をほかのオブジェクトに任せること)は関係の作り方を表す語にすぎない。この取り違えを狙う選択肢が出る。
関連用語
出た過去問
出典:令和7年度 公開問題 基本情報技術者試験 科目A 問12(IPA)解説で登場
オブジェクト指向プログラミングの特徴のうち,異なるクラスのオブジェクトを同一のインタフェースで操作したときに,操作対象クラスに応じた異なる動作を可能にすることを…
正解:多相性
要点:多相性は同じ呼出しでクラスごとに動作が変わる性質
多相性(ポリモーフィズム)は、同じメッセージや同じインタフェースで呼び出しても、実際のオブジェクトのクラスに応じて異なる処理が実行される性質である。呼び出す側は相手の具体的な型を意識せずに済むため、拡張性の高い設計ができる。継承や委譲、コンポジションは関係の作り方に関する概念であり、この性質そのものではない。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。