ネタ元 → オブジェクト指向 01 定義
私が犬に鳴けといったら、犬がワンと鳴いた。
これをオブジェクト指向しろって?
まず私と犬はクラスかインスタンスか。
ワンと鳴くのは犬クラスのメソッドがそうさせるのか、
私が鳴けといった犬インスタンスがたまたまワンと鳴いたのか。
# 別の犬インスタンスならキャンと鳴くかも。あるいは鳴けないかも。
「犬」は四つ足でワンとかキャンとか鳴く動物の総称だからクラスっぽい。
「犬に鳴けという」は犬クラスのクラスメソッド「鳴く」を呼ぶのか。
だとすると犬の存在なしに鳴けることになる。まさかぁ。
ならばここでの犬は犬クラスのいちインスタンスなんだろう。
私は人クラスのインスタンスなんだろうか。
interface 鳴くもの {
void 鳴く();
}
class 犬 : 鳴くもの {
public void 鳴く() { ワン; }
}
class 人 {
public void 鳴けという(鳴くもの なにか) { なにか.鳴く(); }
}
...さて、登場人物が足りない。
私に鳴けといわせたのは誰だ? 神か?
神に「私に鳴けといわせる」のを指示したのは誰だ? 神の神か?
かくして無限連鎖に陥る。
(最初の)マッチに火をつけた"それ"をオブジェクトにできない。
オブジェクトはメソッドが呼ばれぬ限り仕事をしないはずだし、
そもそも"それ"を召喚した"誰か"が必要だから。
その誰かが存在するなら、"それ"はマッチに火をつけた張本人じゃない。