Re: いまさらながらだけど、オブジェクトとクラスの関係を究めてみよう

連休に入ったので、ちょっと気になってた檜山さんのエントリ
http://d.hatena.ne.jp/m-hiyama/20080109/1199863428
を読んだらはまってしまった。
昨日も会社で「知識レベルと操作レベル」「エンティティと値オブジェクト」の話を延々としていたし... 最近、抽象論議に縁があるみたい。(^^;)


まず最初に、上記エントリに対するあかさたくんの反応
http://born1981.g.hatena.ne.jp/akasata/20080109/1199871631
この最後の図が間違ってるよね。
↓正解はおそらくこんな感じ。
http://homepage2.nifty.com/glad/work/hatena/20080112/reification.png
下半分は実際の Java の言語構造だけれど、上半分は檜山さんの妄想。Java が上半分のようなメタな構造をもっていると想定すると、クラス・プレーンやオブジェクト・プレーンにも reify されたクラスやオブジェクトが出現するはず。それも追記しようかと思ったけど、めんどくさいし、図が見づらくなるのでやめた。
おそらく、メタクラス・プレーンの BUILT_IN_CLASS と USER_DEFINED_CLASS が、クラス・プレーンに reify されて BuiltInClass と UserDefinedClass ができ、さらにオブジェクト・プレーンに reify されて BuiltInClass.class と UserDefinedClass.class ができる。
さらに、メタメタクラス・プレーンの METACLASS が、メタクラス・プレーンに reify されて METACLASS.class? ができ、さらにクラス・プレーンに reify されて Metaclass ができ、またさらにオブジェクト・プレーンに reify されて Metaclass.class ができる感じ。あってるかな?


で、本題に戻ると。こんなこと考えて何のメリットがあるのか、ちゃんと整理したことはないけれど、まぁリフレクションとかツールの作成などでは役立つので、難しいことは専門家におまかせして、僕らはありがたく使わせていただきましょう。
最後にちょっとだけ疑問点。

  • レイフィケーションとパワータイプって同じような概念ととらえてよいのかな?
  • 檜山さんのエントリで、is-created-by とレイフィケーションは、他の関係と矢印の向きが逆な気がするんですけど、何か意図があるのでしょうか?