K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>「オブジェクト指向における is-a の関係は、オブジェクトの振舞い >によって定義される」というのが、件の文献が言ってることなわけ >ですが、どうも CES さんには受け入れられないみたいですね。 >実はオブジェクト指向に限らず、ジェネリックプログラミングとも >通じる真理だと思うんですが… > >どうも CES さんとの溝は埋められそうにないわけですが、一応、 >直接的な疑問には答えておきます。 > >> 件の文献も言っているではありませんか。 >> 「サブタイプならば同じ振る舞いをすべきである」と書かれています。 >> 「同じ振る舞いをするならサブタイプである」とは書かれていません。 > >訳が分かりづらくて、CESさんを誤解させてしまったのかもしれませんね。 >Robert C. Martin の「アジャイルソフトウェア開発の奥義」をお持ちだ >そうですから、そちらの該当箇所を参照されてみてはどうでしょうか。 >144ページから引用します。 > ここで望まれるのは、次に述べるような置換可能な性質である。 > S型のオブジェクト o1 の各々に、対応するT型のオブジェクト > o2が1つ存在し、Tを使って定義されたプログラムPに対して > o2の代わりにo1を使ってもPの振る舞いが変わらない場合、 > SはTの派生型であると言える。 > >Webで公開されている和訳では、確かに > >> 「サブタイプならば同じ振る舞いをすべきである」 > >と書かれているように読めるかもしれませんが、本当は > >> 「同じ振る舞いをするならサブタイプである」 > >と書かれているんです。Web の和訳のこの部分は誤訳に近いですね。 > >Webで公開されている文書であっても、原文の方で確認をすれば > then S is a subtype of T. >と書かれていますから、後者の意味であることは明らかなんですけどね。 > >> あるクラスと互換性のある属性と振る舞いを持つクラスは、そのクラスと何 >> らかの関係があるクラスと見るべきです。 > >ここまでは合意します。 > >> 逆転させて言えば「関係の無いクラスに、互換性のある属性と振る舞いを持 >> たせるべきではありません=継承関係にすべきではありません=LSP が成立 >> してはいけません」となるのではないでしょうか。 > >違いますね。 >「完全に互換性のある属性と振舞いを示すのであれば、それは一見関係ないよ >うに見えても、実は関係があるのだ」というのが正解でしょう。 >CES さんは、この考え方を、一貫して拒否されているようですが… > >> 小文字の is-a ってどこで使ってますか? ひょっとして原文? >> 提示された日本語版には見当たらないのですが… > >ええと、小文字ではじまるのは「is-a」ではなく、「名詞」です。 >また、ここで書いているのは原文の話です。日本語版を読んでいるだけでは、 >何のことをさして書いているのか、分からないと思います。 > >> 俺は「LSP に照らすまでも無く、継承関係にしてはいけない場合がある」 >> と言う。 > >これも繰り返しになりますが、「照らすまでもなく」のような暗黙の知識は、 >法則としては役に立たないんですよ。だからこそ、明文化された LSP に >意味があるわけです。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!