Rubyでの「オブジェクト」「クラス」「メッセージ」の関係についてMatzから話を聞いた…という夢を見た。

オブジェクトはメッセージを受け取り、クラス定義に処理を委譲しているだけなので、例えばclass Aをnewして生成したオブジェクトは当然Aクラスのオブジェクトなわけだけど、そのオブジェクトがBクラスで定義されているメソッドを網羅したメッセージを受け付けることができるなら、そのオブジェクトはBクラスであるとも言えるわけだ。受け付けたメッセージをBクラスの定義に処理させる、ということももちろん出来るし、そうであれば、そのオブジェクトは正にBクラスであると言える。

という話を、Matzが砂浜で2つのフリスビーに例えて教えてくれた、という夢を見た。同時に2つのフリスビーを投げて、異なる軌道を描くけど、結局同じ場所に到達するよね…みたいな説明で、なぜか納得する俺。わけわからん。普通に考えれば、その2つのフリスビーが同じ場所に到達するのは投げ手のテクニックでしかないけど、その場の説明ではそのフリスビーの特性であって、必然に同じ場所に到達することができるような説明だった気がする。それがどうオブジェクトとクラスの関係に結びつくかはさらに謎。

会ったことないのに夢に出して、なんか申し訳なく感じる。会ったことがある人なら夢に出していいのかと聞かれるとよくわかんないけど。

寝起きは悪かったです。でも、内容はあってるはず。

ちなみにJavaでは、AクラスのオブジェクトがBクラスに処理を委譲できるかどうかはAクラスでのみ定義されることであり、オブジェクト自体には定義できない。