赤坂です。
Kenji HIRANABE <hiranabe@....jp> san wrote:
> 平鍋です.
> まずは,こちらから.
了解しました。
> > Kenji HIRANABE <hiranabe@....jp> san wrote:
> >
> > > (A)現実の世界と直接対応【Direct Mapping Principle】(by Meyer)
> > > (B)シンプルである(直接対応でないが,簡単である)(by Beck)
> > >
> > > という2つの分担方針があるか,と思います.どちらの場合にも当てはまる,
> > > 責務分担の原則は,次に原則に照らして評価できます.
> >
> > 川俣さんのシンプルが(B)に対応するのだと思いますが、
> >
> > 「シンプル」で、かつ「自然な役割ではない」
> >
> > というケースを想定できないということです。
> > 「シンプル」に作ったものは「自然な役割」に落着いているのではないかと。
>
> 以前,Kent Beck に矢崎さんが果敢に試みた有名な質問があります.
>
> 「ユーザ情報」クラスに「電話番号」がある場合電話クラスを作りますか?
>
> class User { String telephoneNumber; }
>
> が Kent Beck のシンプルな回答.
>
> class User { Telephone telephone; }
> class Telephone { String number; public void call(); }
>
> が現実世界に近いモデリングかな.これについてどう思いますか?
矢崎さんがどういう状況で質問されたか想像できないので、
なんとも難しいのですが(^^;;
Kent Beck氏がどういうコンテキストを想定したのか分かりませんが、
少なくとも私は Kent Beck氏 のようなモデルは作らないと思います。
# どういうコンテキストだとTelephoneが有効なのだろう??
# 私は、万が一、Telephoneを分割したとしても、
# call()メソッドをここには置きません。
> ちなみに,羽生田さんの回答は,
> 「Kent Beckにモデリングの質問をしてはいけない」 ^^;
さすが、羽生田さんは大人ですね(^^;;
・・・ということは、(A)現実世界と(B)シンプルは違うということですか?
私の考えている(A')現実世界は、矢崎さんのユーザー情報なんですけどね。
オブジェクト指向の現実世界は、現実世界と似て非なるものですが、
妥当なクラス(つまり、自然な役割分担)で構成されるものだと思います。
# 結局、主観に満ちた(上手く説明できない)世界なのかしら??
矢崎さんのユーザー情報は(B)シンプルなんですか?
# 私は(A')現実世界だと思ってるんですけど。
ではでは。
--
赤坂 英彦 (Hidehiko AKASAKA)
akasaka.h@....com