追記(2017/11/26) この記事で紹介している内容を使って、集約やコンポジションの実装を補助するクラスを作りました。 UMLの関連を分かりやすく実装するクラス(C#)をどうぞ。 追記(2020/03/03) 集約のコードの中に、コレクション要素に追加/削除するときのチェックについてコメントを入れました。 集約とコンポジションの使い分け クラス図で、「白抜きのひし形(集約)」と「黒塗りのひし形(コンポジション)」をどのように使い分けたらよいのか? 悩んだ経験はありませんか? 集約とコンポジションの違いを誤解している人がいるようですので、同じ誤解をしている人のために記事にします。 モデリングだけだと、ピンとこない人のために、サンプルコードも付けました。 UMLをぼんやり知っているOさんの答え 白抜きのひし形は「has-a」=「所有している」という意味。 黒塗りのひし形は「part-of」
