K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>概ね、皆さんに同意ですね。 > >>struct bird { virtual void fly()=0; }; > >このクラス設計が意味するところは簡単で「鳥は飛べる」ただこれだけです。 >論理学風の言い方をすれば「鳥ならば飛べる」。 > >>Q1.案件B(あるいはA’と言い換えても)では「こうもり」を扱う必要が生じた。 >>基底クラスを書き換える/書き換えない?派生クラスの実装をどうする? > >「飛べるならば鳥である」ではありませんから、コウモリを鳥のサブクラスにすることはできません。 >どうしても統一的に扱いたいのならば、Flying-Animal クラスでも導入すべきです。 > >>Q2.案件C(あるいはA”)では「ダチョウ」「ペンギン」を扱う必要が生じた。 >>基底クラスを書き換える/書き換えない?派生クラスの実装をどうする? > >これは、前提条件が崩れているわけですから、理想的には一からやり直すべきです。 >鳥クラスの下に「飛べる鳥」クラスと「飛べない鳥」クラスを設けて、fly メソッドは飛べる鳥クラスに移動する…と、既存の bird.fly メソッドを使っているコードは動かなくなりますね。 >コスト的にやり直しが許されないのならば、飛べない鳥クラスの fly メソッドは、何もしない空実装にするのも手かもしれません。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!