以下の2つの図を検討してください。一番上の矢印には右端に普通の矢印が含まれ、一番下の矢印には左端にひし形の矢印があり、右端に普通の矢印があります。 グレートブックGoF には、これら2種類の図の両方が使用されています。
2番目のケースでdiamondが何を意味するのか、そしてこれら2つのうちCustomer
とOrder
。
Customer
クラスは、2つのケースのいずれかでOrder
クラスのライフサイクルを担当しますか?
no diamondがない場合、単純なassociationがあります。
ひし形がleft emptyの場合、それはaggregationであることを意味します。この関係は、単純な関連付けよりも強力です。この場合、顧客は注文を集約します。
ひし形がblackの場合、これはcompositionであることを意味します。これは、集約されたクラスを他のクラスで集約できないため、集約よりもさらに強力です。 。その「寿命」はコンテナに依存します。
次の場所でもう少し明確に説明されていると思います。
顧客と注文は、「has-a」構成関係です。顧客が存在しなくなると注文もなくなるためです。したがって、コンテナ(顧客)とそのコンテナ内のインスタンス(注文)との間にはライフサイクルの依存関係があります。コンテナが存在しなくなると、そのインスタンスもすべてなくなります。
一方、顧客が本を持っていると言えば。この場合、「has-a」集約関係があります。なぜなら、顧客が存在しなくなったとしても、その本はまだ利用可能だからです。
集約を意味します。ウィキペディアから:
UMLでは、含まれるクラスを含むクラスに接続する1本の線で、含まれるクラスの端にある中空の菱形としてグラフィカルに表現されます。集合体は、多くの操作で単位として扱われる拡張オブジェクトです、物理的にはいくつかの小さなオブジェクトで構成されていますが。