81

以下の2つの図を検討してください。上の方には右端に普通の矢印があり、下の方には左端にひし形の矢印があり、右端に普通の矢印があります。すばらしい本GoFには、これら2種類の図の両方の使用法があります。

2番目のケースでひし形が何を意味するのか、そしてこれら2つのどちらがとの間のより強い関連性を与えるのCustomerかを理解したいと思いOrderます。

2つのケースのいずれかで、クラスはクラスCustomerのライフサイクルに責任がありますか?Order

ここに画像の説明を入力してください ここに画像の説明を入力してください

4

3 に答える 3

117

ひし形がない場合は、単純な関連付けがあります。

ひし形が空のままの場合、それは集合体であることを意味します。この関係は、単純な関連付けよりも強力です。この場合、顧客は注文を集約します。

ひし形がの場合、これは、集約されたクラスが他のクラスによって集約されないため、集約よりもさらに強力な構成であることを意味します。その「寿命」は容器によって異なります。

私はそれがもう少し明確に説明されていると思います:

于 2013-02-28T17:35:34.553 に答える
23

顧客と注文は「has-a」構成関係です。顧客が存在しなくなると、注文も存在しなくなるためです。したがって、コンテナ(顧客)とそのコンテナ内のインスタンス(注文)の間にはライフサイクルの依存関係があります。コンテナが存在しなくなると、そのすべてのインスタンスも存在しなくなります。

一方、顧客が本を持っていると言えば。この場合、「has-a」集約関係があります。なぜなら、顧客が存在しなくなった場合でも、その本は引き続き利用できるからです。

于 2014-08-10T15:57:24.487 に答える
9

それは集約を意味します。ウィキペディアから:

UMLでは、ツリーの包含クラスの端にある中空のひし形として、包含クラスを包含クラスに接続する1本の線でグラフィカルに表されます。集合体は、意味的には拡張オブジェクトであり、多くの操作で1つの単位として扱われます。 、物理的にはいくつかの小さなオブジェクトで構成されていますが。

http://en.wikipedia.org/wiki/Class_diagram

于 2013-02-28T17:20:46.790 に答える