Carpe Diem

備忘録

関連と集約と合成集約の違い

概要

UML図における

  • 関連 (Association)
  • 集約 (Aggregation)
  • 合成集約 (Composition)

の違いをまとめます。

関係図

まずそれぞれを集合で表現すると以下のようになります。

f:id:quoll00:20210505005300p:plain

何かしらモデル同士に関連があったとして、さらに条件が加わっていくと集約、合成集約となっていきます。

集約 (Aggregation) の場合

関連において2つのモデルの間に「束ねるもの」「束ねられるもの」の関係があれば集約となります。「構成する」とも読み替えられます。

各モデルはそれぞれ独立しており、「束ねるもの」が消えたとしても「束ねられるもの」は残り続けます。

具体例

  • 森と木
  • 車とパーツ(タイヤ・エンジン)
  • クラスと生徒

UML

UML図では白いひし形を使います。

合成集約 (Composition) の場合

集約の中でさらにモデル同士のライフサイクルが同じものを合成集約といいます。

「束ねるもの」が消えると「束ねられるもの」も消えるケースです。

具体例

  • 注文と明細
  • 家と部屋
  • 人と手足

UML

UML図では黒いひし形を使います。

まとめ

UMLモデリングする際は関連だけでなく集約や合成集約を用いると、モデル間の関係性がよりはっきりして分かりやすくなるので積極的に使っていきましょう。

参考