Person クラスのリストと、Book クラスのリストがあるとする。
Book には、著者である Person を指す「author」という関連があるとしよう。
すると「author」を指し示しているハズなのに、「person」という別のものを指してしまうことになる。
ゆえに、「author」という関連名を「authorPerson」にするか、「Author」という別のクラスを作って、Book.author が Author オブジェクトを指すようにして、Author クラスから Person クラスのオブジェクトを指すようにしたくなる。前者は若干不格好だし、意味論をコードに持ち込むなら、後者が望ましい。
また、Book の情報から Author の情報を直接引っ張り出すことがなければ、Book.author をなくして、Author クラスに book という関連を用意すれば良い。Book が多少自由になるのが利点である。
なんて通常は考えないけど、ビジュアルなプログラムを書いていて、2つ以上のビジュアルなコンポーネントに関係がある場合には、その関係自体を別オブジェクトとして導出しておく方が、描画関係の実装が簡単になったり関係の保守が簡単になる場合が結構あるのでした。
親子関係とか、グループ関係とか。
RDBS だとそもそもそういう設計になる場合も多いので、データベース・システムとオブジェクト指向の関係というのは根深いと思う次第。
コメントを書く