Because We Love Happy Coding

フリーライターがPHPとかJavaとか勉強してます

Javaの勉強3

f:id:mogami74:20170611084200j:plain

UML

コンポジション

以下の記事がわかりやすかった。

集約もコンポジションも「全体 - 部分」の関係。 集約は、モデリングする際には無視する(?)。関連と意味合いには変わらないので関連で表現できる。 コンポジションは、1つの部分インスタンスに対して最大1つの全体インスタンスで構成される。 最大1つなので、全体インスタンスの多重度は「0..1」もしくは「1」のどちらかになるはず。 部分インスタンスの譲渡や破棄などの責務を所有している全体インスタンスが担うことができる。 全体インスタンスと部分インスタンスのライフサイクルが完全一致しなくてもよくなった。 --via UMLの集約とコンポジションの違いについて - 目指せ!三流エンジニア

あと、こちらも役に立ちそう。

誤解しがちなモデリングの技:第1回:コンポジションにまつわるアレコレ | 豆蔵ソフト工学ラボ

誘導可能性

可視性と同じような意味で考えればいいのかな?

関連はデフォルトでは双方向性を持ちます。これは、関連から生成される2つのオブジェクトは両方相手を知っており、お互いにメッセージを交換し合うことを意味します。しかし、明らかに片方のオブジェクトからしかメッセージを送る必要がない場合に双方向性を持つとするならば、実装局面においてはプログラムコードに冗長性をもたらすことになります。また、モデルの意味上においても分かりづらさをもたらしてしまいます。このようなときには、関連の端に矢印を書くことで、関連の方向性を明確にします。図13では、明細から商品に向けて矢印を書くことで、明細は商品を知っているが、商品は明細を知らないという意味をモデルに付加しています。こうすることで、商品クラスが明細クラスから独立していることを強調することができます。このように関連の方向性をつけることを誘導可能性と呼びます。 --via 【改訂版】初歩のUML:第6回 「関連」の理解をさらに深める - ITmedia エンタープライズ