集約とコンポジションとは?しゅうやくとこんぽじしょん
集約とコンポジションとは、クラス図で全体と部分の関係を表す2つの記法。ひし形は全体側に付け、白抜きなら集約、黒塗りならコンポジションを表す。集約は部分が全体と独立して存在できる緩い関係、コンポジションは全体の消滅とともに部分も消える強い関係で、部分は複数の全体へ同時に属せない。
最終更新:2026-10-06
この語が出る過去問を解く →背景
「AはBを持つ」とだけ書いた図では、全体を消したときに部分をどう扱うかが読み手に伝わらず、実装者ごとに解釈が割れる。生存期間が従属するかどうかを記法として区別しておけば、削除の連鎖や外部キー制約の方針がモデルの段階で確定する。設計書がそのまま実装の判断材料になるかがここで決まる。
具体例
受注と受注明細はコンポジションで、受注を取り消せば明細も存在意義を失うため、削除のカスケードや親キーへの依存として実装へ落ちる。プロジェクトと参加メンバーは集約で、プロジェクト終了後も社員は残るので、関連表を別に置いて双方を独立に扱う。
試験での引っ掛け
ひし形は全体側に付ける。どちらへ付けるかの取り違えが定番。日本語の「〜を持つ」だけでは判別できず、部分の生存期間が全体に従属するかどうかで決める。両者は排他ではなく関係の強さの度合いなので、判断が付かないときは弱いほうの集約に倒す。
関連用語
出た過去問
出典:平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問3(IPA)
図は"顧客が商品を注文する"を表現したUMLのクラス図である。"顧客が複数の商品をまとめて注文する"を表現したクラス図はどれか。ここで、注文明細は注文に含まれる…
正解:顧客1―0..*注文。注文の側に黒ひし形(多重度1)を置き、注文明細(多重度1..*)をコンポジションで束ねる。注文明細0..*―1商品。
要点:一括注文は注文が明細1..*を束ねる構造で表す
複数商品をまとめて注文する構造は、注文が複数の注文明細を束ね、各注文明細が一つの商品に対応する形で表現する。したがって注文と注文明細はコンポジション(注文が全体、注文明細が部分)で、注文側の多重度が1、注文明細側が1..*になる。顧客と注文は1対0..*、注文明細と商品は0..*対1が正しい。この関係を全て満たすのはアである。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。