集約、構成、および依存関係の違いは何ですか?
集約子が親から独立して存在できる関係を意味します。例:クラス(親)と学生(子供)クラスを削除しても、生徒はまだ存在します。
構成子が親から独立して存在できない関係を意味します。例:家(親)と部屋(子)部屋は家とは別に存在しません。
上記の2つは包含(したがって親子関係)の形式です。
依存関係は弱い形式の関係であり、コード用語ではクラスが別のパラメータまたは戻り値の型を使用することを示します。
依存関係は、関連の形式です。
集約と合成は、それ以外はほぼ完全に同一です合成は、子供の生活が完全に親によって制御されている場合に使用されます。
集約
Car -> Tires
Tires
をCar
オブジェクトから外して別のオブジェクトにインストールすることができます。また、車が合計されても、タイヤは必ずしも破壊する必要はありません。
構成
Body -> Blood Cell
Body
オブジェクトが破棄されると、BloodCells
も一緒に破棄されます。
依存関係
一方を変更すると他方に影響を与える可能性がある2つのオブジェクト間の関係。
集合 - 全体を分離できる部分。その部分は、それがその一部であるものとは別に、それ自身のアイデンティティを持っています。あなたはその部分を選んでそれを別のオブジェクトに動かすことができます。 (実世界の例:ホイール - >車、ブラッドセル - >ボディ)
構成 - 全体のうち分離できない部分。部品を別のオブジェクトに移動することはできません。プロパティのようなものです。 (実世界の例:曲線 - >道路、性格 - >人、最大速度 - >車、オブジェクトのプロパティ - >オブジェクト)
あるデザインの集計である関係は、別のデザインの構成になることがあります。その特定の設計で関係がどのように使用されるかについてのそれのすべて。
依存関係 - 変更の影響を受けやすいです。 (雨量 - >天気、頭位置 - >ボディ位置)
注:BloodというエンティティがなければBlood Cellsは存在できないため、 "Bloodcell" - > Bloodは "Composition"になる可能性があります。
composition関係に関連付けられたオブジェクトは、それを含むオブジェクトの外部には存在しません。 例は、予定と所有者(個人)またはカレンダーです。 TestResultと患者.
一方、包含オブジェクトによって集約されているオブジェクトcanは、その包含オブジェクトの外側に存在します。 例は扉と家です。従業員と部署.
A 依存関係はコラボレーションまたは委任に関連します。オブジェクトは別のオブジェクトからサービスを要求し、そのオブジェクトに依存します。サービスのクライアントとして、将来のサービスが提供されても、サービスインターフェイスを一定に保ちたいと思います。
集約と構成は、OO世界のほとんどの人がUMLを通じて習得した用語です。そして、例えば、Henderson-Sellers and Barbier(「これは集約された集合体とは何ですか?」、「統一モデリング言語での全部分関係の定式化」で示されているように、UMLはこれらの用語の定義に非常に劣っています。 ")。集約と構成の首尾一貫した定義を与えることができるとは思いませんifあなたはUMLに準拠することに興味があります。引用した作品を見てください。
依存性に関して、それはほとんど何でも意味することができる(オブジェクトではなく)型間の非常に抽象的な関係です。
あるオブジェクトは、その属性の一部として別のオブジェクトを含むことができます。
だから封じ込めは物理的である必要はありません。たとえば、コンピュータシステムには保証があります。
包含: - ここで内部オブジェクトにアクセスするには、外部オブジェクトを使用する必要があります。含まれているオブジェクトを再利用できます。集計: - ここでは、外部オブジェクトを使用せずに、内部オブジェクトに何度もアクセスできます。