プログラミング言語、オペレーティング システムの設計、およびデータベース管理システムでは、さまざまなオブジェクトとクラスがオブジェクト間の関連付けと共に格納されます。 集約と構成の両方を使用して、オブジェクト間のこの関係を記述し、時間と空間の複雑さを軽減してデータセットをより効率的に保存および取得します。
主なポイント
- 集約は、XNUMX つのオブジェクトが他の複数のオブジェクトで構成される関連付けです。 対照的に、コンポジションは、XNUMX つのオブジェクトが他のオブジェクトを含み、それらのライフサイクルを担当するタイプの関連付けです。
- 集約では、構成されたオブジェクトはそれらを含むオブジェクトから独立して存在できますが、構成では、構成されたオブジェクトは独立して存在できません。
- アグリゲーションは、コンポジションよりも結合が緩い形式です。
集計と合成
集約とは、クラスが別のクラスのインスタンスをその属性の XNUMX つとして含むことができる関係です。 コンポジションとは、クラスがその属性の XNUMX つとして別のクラスのインスタンスを含む関係ですが、含まれるインスタンスはコンテナー クラスなしでは存在できません。

集約とは、クラスやオブジェクトなどの XNUMX つのデータセット間の関連付けであり、関連するオブジェクトは、その作成や機能に関して相互に直接依存していません。 したがって、XNUMX つのオブジェクトを操作しても、他のオブジェクトのステータスは変更されません。 この関連付けにより、変更を損失なく行うことができます。
コンポジションは特殊なタイプの集約であり、XNUMX つのデータセット間の関係を記述します。ここで、関連するオブジェクトまたはクラスは、作成、保存、機能などについて相互に直接依存しています。 したがって、データセットの XNUMX つを変更すると、他のデータセットに直接影響します。
比較表
比較のパラメータ | アグリゲーション | 構成 |
---|---|---|
定義 | 集約は、オブジェクトが相互に依存しないタイプの関連付けです | 構成は、オブジェクトの相互依存性との関連付けです |
関係 | データセット間には間接的な関係があります | データセット間の親子関係 |
UML シンボル | 集計は空のひし形で示されます | 構成は塗りつぶされたひし形で示されます |
修正 | XNUMX つのオブジェクトを変更しても、他のオブジェクトは変更されない | XNUMX つのオブジェクトを変更すると、他のオブジェクトのデータが変更されます |
協会の強さ | 弱い連想です | 強い連帯です |
アグリゲーションとは
集約は、クラス、オブジェクトなどの XNUMX つのデータセット間の関連付けまたは関係の一種です。 関連付けは、類似性を持つデータセットをグループ化するために行われます。
このタイプの関連付けでは、オブジェクトまたはクラスに直接的な関係はありません。 データセットには「Has-A」関係があります。
これは、データセットの作成、保存、または機能や操作が相互に依存していないことを意味します。 これは、同様のデータセットを格納するためにこの形式の関連付けを使用する主な利点です。
オブジェクトとクラスは相互に直接依存していないため、オブジェクトまたはクラスの XNUMX つに変更または変更を加えても、他のデータセットに格納されているデータの内容が変更または変更されることはありません。
これにより、集計中のデータセットの XNUMX つを破棄しても、他のデータセットに保存されているデータを気にする必要がなくなります。
集約関係のこの特性により、データが頻繁に変更されるテスト環境で使用されます。集約されたオブジェクト間の「Has-A」関係により、他のデータセットのデータは破棄されません。
UML 表現では、集約関係を指定するために空のダイヤモンド記号が使用されます。
コンポジションとは?
コンポジションとは、データセット間の関係性を指し、データベース管理システムやオペレーティングシステムの設計で使用されます。データセットには、オブジェクトやクラスなどが含まれる場合があります。
構成は、集計よりも直接的なデータセット間の関係を作成します。 したがって、オブジェクトとクラスは、データセットの作成中に互いに直接関連付けられます。
オブジェクトとクラスは直接関連しているため、それらの作成、保存、操作または機能は相互に依存しています。
この関係は、「親子」関係または「所有者」関係として表される場合があり、一方のデータセットが他方のデータセットの所有者になります。
このタイプのリレーションシップを使用する主な欠点は、オブジェクトまたはクラスの XNUMX つが変更または変更されると、その変更が他のデータセットに反映され、データセットに含まれるデータも変更されることです。
これは、データセットの XNUMX つが破棄または削除された場合、そのデータセットに関連付けられている他のデータセットも破棄されるなど、データセットを操作する際に注意する必要があります。
ただし、オブジェクトまたはクラス間のコンポジション関係を使用すると、データはより安全に保存されます。コンポジション タイプの関連の UML 表現には、塗りつぶされたダイヤモンドが使用されます。
集約と構成の主な違い
- 集約は、データセットが相互に依存しないデータセットの関連付けです。 コンポジションも関連の一種ですが、データセットは互いに依存しています。
- 集計では、データセット間に間接的な関係があります。 コンポジションでは、データセット間に直接的な関係があります。
- UML 表現では、集約は空のダイヤモンドで示され、塗りつぶされたダイヤモンドは構成を表します。
- 集約型の関連付けでは、関連付けに含まれるオブジェクトの XNUMX つに加えられた変更は、他のデータセットに存在するデータを変更しません。 構成タイプの関連付けでは、データセットの XNUMX つに加えられた変更は、関連付けに含まれる他のデータセットに反映されます。
- 集約は、構成よりも弱いタイプの関連付けです。 データは、合成タイプの関連付けでより安全に保存されます。