UML における集約と合成の違い

集約と合成の主な違い

  • 集約は、「ある」関係を記述する XNUMX つのオブジェクト間の関連付けの XNUMX つのタイプであるのに対し、構成は所有権を暗黙的に示す特定のタイプの集約です。
  • 凝集は、一方の端に空の矢印が付いた直線を使用して示されます。 一方、構図は、いずれかの端に黒矢印が付いた直線を用いて表される。
  • 集約関係では、相互に関連付けられたオブジェクトは相互に関係なくシステムのスコープ内に留まることができます。 ただし、合成関係では、相互に関連付けられているオブジェクトが相互に存在せずにスコープ内に残ることはできません。
  • 集約では、リンクされたオブジェクトは他のオブジェクトに依存しませんが、合成では、オブジェクトは相互に強く依存します。
  • 集約では、単一の要素を削除しても、関連する別の要素には影響しません。 逆に、合成では、単一の要素を削除すると、関連する別の要素に影響します。
  • 凝集は黒のひし形で示され、白抜きのひし形は組成を示します。
集計と構成の違い
集約と合成の違い

アグリゲーションとは

集約は、オブジェクトが別のオブジェクトを「持っている」場合の関連付けの特殊なケースであり、それらの間で集約を行うことができます。 それらの間の方向は、どのオブジェクトに他のオブジェクトが含まれるかを指定するのに役立ちます。 集約は「Has-a」関係としても知られています。 これは、関連関係のサブタイプです。 UML.

コンポジションとは?

合成は、合成クラスと下位 (部分) クラスの間の全体部分の関係を指定するのに役立つ集約の特殊なケースです。

UML における集約と合成の違い

集約と構成の主な違いは次のとおりです。

アグリゲーション 構成
集約は、XNUMX つのオブジェクト間の関連付けの XNUMX つのタイプであり、「ある」関係も表します。 構成は、所有権を意味する特定のタイプの集約です。
凝集は、一方の端に空の矢印が付いた直線を使用して示されます。 構図は、いずれかの端に黒矢印が付いた直線を使用して示されます。
集約は関連付け関係の一部です。 構成は関連付け関係の一部です。
集約は弱いタイプの関連付けとみなされます。 構成は強力なタイプの関連性として考えられます。
集約関係では、相互に関連付けられたオブジェクトは相互に関係なくシステムのスコープ内に留まることができます。 合成関係では、相互に関連付けられているオブジェクトが相互に存在せずにスコープ内に残ることはできません。
集約では、リンクされたオブジェクトは他のオブジェクトに依存しません。 合成では、オブジェクトは相互に大きく依存します。
集約では、単一の要素を削除しても、関連する別の要素には影響しません。 合成では、単一の要素を削除すると、関連する別の要素に影響します。
例: 車にはホイールが必要ですが、常に同じホイールが必要なわけではありません。 車は別の車輪でも十分に機能します。 例: フォルダー内にファイルが配置されます。 フォルダーを削除すると、そのフォルダーに関連付けられたファイルも削除されます。
集計では、親
子エンティティとの関係。
合成では、親エンティティが子エンティティを所有します。
塗りつぶされたダイヤモンドで示されます 空のひし形で示されます
子供には寿命がありません。 子どもには一生があるかもしれない。
これは、アセンブリ クラスの横にある中空のダイヤモンドで表されます。 これは、アセンブリ クラスの横の実線のダイヤモンドで表されます。
アセンブリを削除しても、そのパーツには影響しません。 クラスを所有している場合、オブジェクトは削除されます。 また、それを含むクラス オブジェクトにも影響します。

集計と構成: 主要な統計

アグリゲーション 構成
オーナー 所有者なし 単一所有者
永続ライセンス 彼らの一生を過ごしてください。 オーナーの生涯。
子オブジェクト 子オブジェクトはすべて独立しています。 子オブジェクトは XNUMX つの親に属します。

構成例

フォルダーには多数のファイルを含めることができますが、各ファイルにはフォルダーの親が XNUMX つだけあります。 フォルダーを削除すると、含まれているすべてのファイルも削除されます。 コンポジット集約では、オブジェクトは一度に XNUMX つのコンポジットのみの一部となることができます。

構成例

集計の例

たとえば、自動車は車輪、エンジン、ギアボックス、ステアリング、本体などで構成されています。これはアセンブリであり、他の部品はその構成要素です。

ここで、車と車輪は 1 つの集合体であり、車とエンジンは別の集合体であり、車とギアボックスは別の集合体であり、というように続きます。

このタイプのペアリングは、アセンブリ内の構成パーツの多重度を結果として定義するのに役立ちます。オブジェクトの数も描画できます。

車が正しく機能するには車輪が必要です。 しかし、車の場合はそうはいきません。 同じロジックは、自転車、自転車、その他の乗り物には適用できますが、特定の車には適用できません。

ここで、車オブジェクトがなくても、車輪オブジェクトは意味がある。 これは集約関係として知られています。

集計の例