推奨されます, 2019

エディターズチョイス

集約と構成の違い

集約と構成は関連のタイプです。 集約と構成の主な違いは、集約によって、子が親から独立して存在できるという関係が暗黙的に示されることです。 一方、構成は、子が親から独立して存在することができない関係を暗示します。

オブジェクト指向プログラミングは、ソフトウェア開発で使用される一般的なパラダイムです。 オブジェクトは、クラスによって作成されたクラスのインスタンスです。 オブジェクトはリンクを介して互いに連携します。 リンクは、オブジェクト間に存在する物理的および概念的な接続です。 類似した構造と意味を持つリンクの集まりは、 関連として記述されます。

比較表

比較基準集約組成
基本集約では、子が親から独立して存在できるという関係があります。構成では、親から独立して存在することはできません。
関係のタイプ"があります""一部の"
協会タイプ弱い協会強い協会
UMLデザインシンボルアセンブリクラスの横にある菱形で表されています。アセンブリクラスの隣にある実線のダイヤモンドで表されています。
関数アセンブリの削除はその部品には影響しません。所有クラスオブジェクトが削除されると、それは包含クラスオブジェクトに大きな影響を与える可能性があります。

集計の定義

集約は、構成クラスに対するアセンブリクラスとの関係として定義できます。 2つのオブジェクト間の関係は、UML(Unified Modeling Language)で線分を描くことによって表すことができます。

集約は、1対1、1対多、多対多など、多数のオブジェクトを指定するためにも使用されます。 クラスXのオブジェクトがクラスYの単一のオブジェクトに関連付けられている場合、その場合1対1の関係が存在します。 同様に、クラスの1つのオブジェクトがクラスの複数のオブジェクトと関連付けられている場合、この関係は1対多と呼ばれます。

たとえば、自動車は、車輪、エンジン、ギアボックス、ステアリング、本体などで構成されています。自動車はアセンブリで、他の部品はその構成要素です。 車から車輪までが1つの集合体であり、車からエンジンまでが別の集合体です。 各個々のペアリングは、オブジェクトの数も描くことができる結果として、アセンブリ内の各構成部品の多重度を指定するように定義されます。

集約は、オブジェクト間の「持っている」タイプの関係を記述するタイプの関連付けです。 例えば、自動車はギアボックスを「持って」いて、自動車はエンジンを持っています。 1対多の関係の場合、例として自動車が多数の車輪を「持っている」ことが挙げられます。

構成の定義

構成はまた、一種の関連付けですが、より限定的な形式です。 これはUMLではアセンブリクラスに隣接する小さな菱形で表されます。

このタイプの関連付けでは、構成部分は最大で1つのアセンブリにリンクできます。 加えて、構成部品がアセンブリと協働するとき、それはアセンブリと同時に存続期間を有することになる。

したがって、構成は全体の構成部分の所有権を意味します。 これにより、最終的にプログラミングの利便性が向上します。 構成はアセンブリオブジェクトの削除によって構成オブジェクトの削除を引き起こすことができます。

構成は、 「一部」の関係を表します。 例えば、葉は木の一部であり 、木が破壊された場合、葉は破壊されなければならない。

集計と構成の主な違い

  1. 集約は、子エンティティと親エンティティが独立して存在できる関係を示します。 反対に、構成において、子エンティティは親に依存しています。
  2. 集合体には「持っている」という関係がありますが、構成にはアセンブリと構成クラスオブジェクトの間には「一部」の関係があります。
  3. 集約は弱い関連ですが、構成は強い関連ですが、制約が多いためです。
  4. UML設計では、集合体は中空のひし形で表されます。 対照的に、組成は中実のダイヤモンドで描かれています。

結論

集合体では、構成要素は独立した存在を持ち、集合体またはその集合体に共有または再割り当てすることができます。 一方、構成上、構成部分は正確に1つのアセンブリまたは集合体に属します。 さらに、骨材が形成されると部品が作成され、骨材が破壊されると部品が破壊される。

Top