UMLで大間違い

UMLで大きな勘違いをしていたことに最近気づいた。

それは、関連線(実線)と依存線(破線)だ。

依存と言うくらいだから、関連より強いものだと思っていたけど、
どうも違うらしい。
依存というのは、オブジェクト関連の中でもっとも弱いもので、
短期間の関係しかない場合は依存になるそうだ。
つまり、引数で渡されて、ちょっといじって終わり。的なものだね。

関連は、それとは違って、
フィールドなどに格納され、長期的な関係が生まれるものだ。

なーるほどね。

ついでに、
集約(◇→)はA◇→Bの場合、BはAの一部である場合に使う。
つまり、Aが存在意義を持つためにはBが必要ってこと。
 ツリーのノードとリーフの関係なんかがそう。

コンポジション(◆→)はA◆→Bの場合、Aの内部でBが作られるとか、Aが消えたらBも消えちゃうとか、そういう場合。
 こっちは、Bが存在意義を持つためにはAが必要不可欠って感じ。
集約のほうは、ノードが消えてもリーフの存在意義はあるからね。