デジタルちんぶろぐ

デジタルな話題

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  268  : 記事  0  : コメント  4419  : トラックバック  79

ニュース


技術以外は
ちんぶろぐ

記事カテゴリ

書庫

日記カテゴリ

今となっては違うなぁと思うわけですが、以前こんなこと言ってたりして。

http://ml.tietew.jp/cppll/cppll/article/3553

僕は未だオブジェクト指向を理解しているとも言えないし、確認のために先日の3次会でとある方に聞いてみました。

「子供は父親と母親の多重継承だと思いません?」

「それは違うよ」

「どの辺がちがうんですか?」

「あんどちんも子供もてばわかるよ」

一瞬凄く納得できる言葉に思えたけど…この場合説明になってないです。

ちなみにこの話題はこの一言で終了しました。

投稿日時 : 2008年2月25日 23:57

コメント

# re: 多重継承について問うてみた 2008/02/26 0:16 アキラ
「説明になってないです」
と言ったらどう返ってくるのか気になりますね。

# re: 多重継承について問うてみた 2008/02/26 0:27 凪瀬
オブジェクト指向での継承は、親を完全に肩代わりできる必要がありますからねぇ。
1/2ずつ機能を集めた場合は「継承」とは言えない。
一般用語では部分的にでも「継承」って言いますけどね。

# re: 多重継承について問うてみた 2008/02/26 0:35 スーパーあんどちん
>> アキラさん
その通りなんですが、それよりも
「継承されてないんだ…」
という勝手な想像が働いてしまって。

>> 凪瀬さん
そうなんですよね。だから親子って親のインスタンスの属性値が双方からコピーされて子は生成されるって感じなのかな?と今は思ってます。
まぁこの手のものを本当にクラスで表そうとするのに無理があるんでしょうね。
性別を1/2づつコピーって…

# re: 多重継承について問うてみた 2008/02/26 9:45 επιστημη
# すごいぞcppll, 6年も前にこんなネタで盛り上がっちょる♪

親父とオフクロから多重継承してはいるが子のメソッドは親父/オフクロ(あるいはオリジナル)のどれかを選択せにゃならんので再定義”しない"って選択はありえないですねぇ。

enum blood_type_enum { A, B, O, AB };
class 父 { public: virtual blood_type_enum blood_type() const { ... } };
class 母 { public: virtual blood_type_enum blood_type() const { ... } };
class 子 {
public:
 virtual blood_type_enum blood_type() const {
  return 父::blood_type(); // あるいは 母::blood_type()
 }
};

継承する時点(子を宣言する時点)で"血液型は父から継承"なんて
書ければいいんだけど。

...てか、この場合父/母はクラスじゃないよな。どー考えてもインスタンスだ。そじゃないと"子の血液型は必ず父(or母)と同じ"となってまう。

"ドラえもん"はクラスかインスタンスか? と同じ問題をはらんでおります。




# re: 多重継承について問うてみた 2008/02/26 15:52 アキラ
>...てか、この場合父/母はクラスじゃないよな。どー考えてもインスタンスだ。そじゃないと"子の血液型は必ず父(or母)と同じ"となってまう。

父、母、子がインスタンスならこうかな

class Person {};

Person 産む(Person 父, Person 母)
{
 Person child;
 // 似る部分をいろいろ計算...
 return child;
}


クラスなのかインスタンスなのかで全然違いますね

# re: 多重継承について問うてみた 2008/02/26 15:59 中吉
子の血液型は必ず父(or母)と同じ"となってまう?
先生! A型とB型から生まれたO型やAB型の子供はどうしましょう、ってことですよね。
すでに親のインスタンスができていて、そこからコピーしてくる。
#って親の遺伝子(インスタンス)からコピーするって、そそのまま受精のプロセスじゃん^^;

遺伝子クラスのインスタンスが我々!?

# re: 多重継承について問うてみた 2008/02/26 16:34 επιστημη
そか、blood_typeはA/B/O遺伝子ふたつから導かれる派生属性か。
enum blood_gene { A, B, O };
anum blood_type { A,B,O,AB };

private blood_gene from父, from母;
public blood_type { get { from父/from母から発言する A/B/O/ABのどれか; }}

> 遺伝子クラスのインスタンスが我々!?
+演算子によって二つの遺伝子からランダムに拾って新たな遺伝子が生成され、
そいつが生物の形をとったもの、ですか。

そのようにモデル化するのなら大人/子供の違いは単に交尾/繁殖可能かを表す状態でしかありませんな。


# re: 多重継承について問うてみた 2008/02/26 16:46 επιστημη
うんうん、生物学的にみるならば親子は社会的な関係でしかありません、
ヒモで繋がってるわけでもなし。

おかぁたまのおなかん中にいたところで胎盤を境に別のインスタンスよね。胎盤もへその緒もあかんぼの一部だし。

遺伝てのは設計図を半分ずつもらった(メンバの複製)だけのこと、
is-a関係なんかどこにもないのよ"生物学的"にみれば。



# re: 多重継承について問うてみた 2008/02/26 17:00 επιστημη
# 連投スマソ
> まぁこの手のものを本当にクラスで表そうとするのに無理があるんでしょうね。
> 性別を1/2づつコピーって…

ペアになってる遺伝子の一つずつを父母からコピーし、
新たにできたペアの発現形態が♂か♀かってことなんで、
これまたインスタンスの(書き換え不能な)派生"属性"なんだよなー。


# re: 多重継承について問うてみた 2008/02/26 19:06 Jitta
最初に戻って、ほんの一例

うちの子は「お父さんに似とうなぁ」「お母さんに似とうなぁ」と声をかけられるとと、「似てへんわ!」と返事します。嫌いなのではなく、自分を主張したい、自分は自分なのだそうです。両親とも、その様な気質は持ち合わせておりません。

# re: 多重継承について問うてみた 2008/02/26 21:57 スーパーあんどちん
一通り議論されているから介入の余地なしですね。
# 相変わらず盛り上がるときは本人不在だなぁ…

>> Jittaさん
僕もどっちにも似てないです。今更自分を主張するとかないんですけど。


Post Feedback

タイトル
名前
Url:
コメント: