教科書P.123下部の“関連名を定義するには注意が必要です。…”の補足です。図書館の本を題材に説明します。 ## 正しい例 ![図1](1.png) 右側のクラスは名前の通り、貸出中の本を表している。図書館にあるが誰も借りていない本はこの図に出てきていない。 ![図2](2.png) 右側のクラスは図書館にある全ての(帯出可能な)本を表している。利用者は本に対して“借りる”や“返す”などの手続きを行なう。手続きの対象になっていない本には関連する利用者が無いので、利用者側の多重度は"0..1"となっている。 ## 間違いの例 設計者Aが次のクラス図を描いた。 ![図3](3.png) 関連名が“借りている”となっているので、この図を見た人は右側のクラスは貸出中の本のみを表していると思って良いはずである。(この図自体は間違いではない) しかし、詳細化をしていったところ、 ![図4](4.png) と操作等が追加された。操作に注目すると、借りている本を返すのは分かるが、借りている本をさらに借りる、というのは矛盾している。つまり、設計者Aが右側のクラスで表したかったのは(2番目の図と同じく)全ての本であったようである。 このような誤解が生じた原因は、設計者Aが関連名を付けるときに、本が借りられた状態のみをイメージして“借りている”としてしまったからである。理想としては本が借りられた状態だけでなく、まだ借りられていない状態もイメージした上で、“手続き”等とすべきだったのである。