ほのぼの開発メモ

AILight Blogs
ふと、疑問に思いました。

2週間ぐらい前に、後輩に継承とインターフェースの説明をしていたのです。
そこで、「継承はなんとなく前に聞いたケーキの説明で解ったのですが・・・」と言われて、
「ケーキの説明?」と聞き返したところ・・・

「継承とは・・・
スポンジケーキがある。
これに生クリームをつければショートケーキ。
チョコクリームをつければチョコケーキ。」

と。説明されました。
そのときは、「ああ、なるほど!」と思ったのですが・・・今、風呂場で疑問に思いました。

「あれ?スポンジケーキを継承してショートケーキ?これって、スポンジケーキとしても扱えるの??無理だよなぁ・・・」

この説明は、どうなんだろう?
ソースの書き方を一時的に覚えさせるにはいいかもしれませんが(それもちょっとなぁ・・・)、オブジェクト指向の継承としては、悪い説明のような気がします。

じゃあ、良い説明ってなんだろう・・・??
今のところ、一番納得したのが@IT:オブジェクト指向の世界 (1)
これを基本として持っていれば、継承に辿り着くのも簡単なのかなぁ?と思いました。
投稿日時 : 2004年3月27日 0:57
コメント
  • # re: 継承の説明
    菊池
    Posted @ 2004/03/27 1:32
    ケーキというクラスにはチーズケーキの様にスポンジが無い物も含まれたりしますが、どうしましょう。

    それはコンポジションとか、集成という物ですね。
  • # re: 継承の説明
    みゃみゅ玉子
    Posted @ 2004/03/27 2:58

    ● 菊地 様 ●
    いつも素早いコメントありがとうございます。

    >ケーキというクラスにはチーズケーキの様にスポンジが無い物も含まれたりしますが、どうしましょう。

    そうなんですよね。
    ケーキがベースになるんですよね。本来なら。
    そのときは、「チーズケーキは?・・・ああ、スポンジじゃないから外れるね」なんて話をしたような気がします。
    ・・・何か違うってなんで気づかなかったんだろう・・・

    >それはコンポジションとか、集成という物ですね。

    コンポジション・・・クラスの中に違うクラスをメンバとして入れることですか。

    チーズケーキ:ケーキ。スポンジケーキ:ケーキ。
    ショートケーキ:ケーキ。チョコケーキ:ケーキ。

    ショートケーキとチョコケーキは、スポンジケーキに味(クリーム?)をつけることで完成する。
    チーズケーキにはスポンジは使わない。

    あれ??・・・また考えなおします。(涙)
  • # re: 継承の説明
    菊池
    Posted @ 2004/03/27 11:06
    簡単な例を

     車には座席がありますが、車は椅子の派生でしょうか?

     is-a関係とhas-a関係と呼ばれるもので、機能を満たすために他の物を持っているのは継承では表現できないんですね。

     ケーキっていう物の特性は
     「食べておいしい、見た目かわいい」とかそういう所で決まるのであって、中に何が入っているかは、派生クラスの実装次第なわけです。

     そういえば、機能と目的と仕様の関係ってのもこれまた難しいんですよね。

  • # re: 継承の説明
    菊池
    Posted @ 2004/03/27 11:15
    ちょっと言葉たらずだな

    ショートケーキ はケーキの派生クラス
     スポンジ、生クリーム、イチゴをもつ
     「食べておいしい、見た目かわいい」とかの特性を満たす

    チーズケーキ はケーキの派生クラス
     チーズ、パイ生地をもつ
     「食べておいしい、見た目かわいい」とかの特性を満たす

    どちらも食べられるという食べ物クラスの特性も満たす。
  • # re: 継承の説明
    みゃみゅ玉子
    Posted @ 2004/03/27 14:43
    > is-a関係とhas-a関係と呼ばれるもので、機能を満たすために他の物を持っているのは継承では表現できないんですね。

    is-aとhas-a!
    そう言われるとわかりやすいですね。
    ショートケーキもチョコケーキもスポンジを持つ。
    そして、ケーキである。

    わかりやすい説明ありがとうございます☆

    >そういえば、機能と目的と仕様の関係ってのもこれまた難しいんですよね。

    うう・・・
    これでいつもいつも苦労しすぎてます。。。(涙)
  • # re: 継承の説明
    菊池
    Posted @ 2004/03/27 20:24
    >>そういえば、機能と目的と仕様の関係ってのもこれまた難しいんですよね。
    >うう・・・
    >これでいつもいつも苦労しすぎてます。。。(涙)

     面白い例を。

    Vaio PCG-U1の主な仕様
    http://www.sony.jp/products/Consumer/PCOM/PCG-U1/spec.html

     機能は「オーディオ機能」だけ
     本当か?
タイトル  
名前  
Url
コメント