オブジェクト指向プログラミングは、ソフトウェア開発で使用される一般的なパラダイムです。 オブジェクトは、クラスによって作成されたクラスのインスタンスです。 オブジェクトはリンクを介して互いに連携します。 リンクは、オブジェクト間に存在する物理的および概念的な接続です。 類似した構造と意味を持つリンクの集まりは、 関連として記述されます。
比較表
比較基準 | 集約 | 組成 |
---|---|---|
基本 | 集約では、子が親から独立して存在できるという関係があります。 | 構成では、親から独立して存在することはできません。 |
関係のタイプ | "があります" | "一部の" |
協会タイプ | 弱い協会 | 強い協会 |
UMLデザインシンボル | アセンブリクラスの横にある菱形で表されています。 | アセンブリクラスの隣にある実線のダイヤモンドで表されています。 |
関数 | アセンブリの削除はその部品には影響しません。 | 所有クラスオブジェクトが削除されると、それは包含クラスオブジェクトに大きな影響を与える可能性があります。 |
集計の定義
集約は、構成クラスに対するアセンブリクラスとの関係として定義できます。 2つのオブジェクト間の関係は、UML(Unified Modeling Language)で線分を描くことによって表すことができます。
たとえば、自動車は、車輪、エンジン、ギアボックス、ステアリング、本体などで構成されています。自動車はアセンブリで、他の部品はその構成要素です。 車から車輪までが1つの集合体であり、車からエンジンまでが別の集合体です。 各個々のペアリングは、オブジェクトの数も描くことができる結果として、アセンブリ内の各構成部品の多重度を指定するように定義されます。
集約は、オブジェクト間の「持っている」タイプの関係を記述するタイプの関連付けです。 例えば、自動車はギアボックスを「持って」いて、自動車はエンジンを持っています。 1対多の関係の場合、例として自動車が多数の車輪を「持っている」ことが挙げられます。
構成の定義
構成はまた、一種の関連付けですが、より限定的な形式です。 これはUMLではアセンブリクラスに隣接する小さな菱形で表されます。
したがって、構成は全体の構成部分の所有権を意味します。 これにより、最終的にプログラミングの利便性が向上します。 構成はアセンブリオブジェクトの削除によって構成オブジェクトの削除を引き起こすことができます。
構成は、 「一部」の関係を表します。 例えば、葉は木の一部であり 、木が破壊された場合、葉は破壊されなければならない。
集計と構成の主な違い
- 集約は、子エンティティと親エンティティが独立して存在できる関係を示します。 反対に、構成において、子エンティティは親に依存しています。
- 集合体には「持っている」という関係がありますが、構成にはアセンブリと構成クラスオブジェクトの間には「一部」の関係があります。
- 集約は弱い関連ですが、構成は強い関連ですが、制約が多いためです。
- UML設計では、集合体は中空のひし形で表されます。 対照的に、組成は中実のダイヤモンドで描かれています。
結論
集合体では、構成要素は独立した存在を持ち、集合体またはその集合体に共有または再割り当てすることができます。 一方、構成上、構成部分は正確に1つのアセンブリまたは集合体に属します。 さらに、骨材が形成されると部品が作成され、骨材が破壊されると部品が破壊される。