[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00505] Re: 型情報によるディスパッチ ( に似たもの) がメソッドオーバーロードで実現できない理由 ? (Re: Java プログラマーのための Perl 入門 ?)



前橋です。

えんどう さんは書きました:
>>まあ最低限連想配列とクロージャーがあれば、オブジェクト指向システムを
>>実現することは可能ですけど
>
>なぜ連想配列が? クロージャーがあれば不要だと思います。

連想配列とクロージャーを使ったオブジェクト指向の例です(JavaScript)。
クラスベースではないですが、継承もポリモフィズムも実現できます。

↓↓ここから↓↓ここから↓↓ここから↓↓ここから↓↓ここから↓↓
function createPoint(x, y) {
  var a = new Object();
  a["x"] = x;
  a["y"] = y;
  a["draw"] = function () {
    document.writeln("Point.." + a["x"] + ", " + a["y"]);
  }

  return a;
}
document.writeln("HELLO Javascript");
var p = createPoint(10, 20);
p["draw"]();
↑↑ここまで↑↑ここまで↑↑ここまで↑↑ここまで↑↑ここまで↑↑

私はLispはろくに知らないのですが、Lispではよくやる手かと思ってました。
最近たまたま読んだ文書より↓
http://www.shiro.dreamhost.com/scheme/trans/noop-j.html
| ハッシュテーブルにクロージャを詰め込むとか、弱い言語だったらオブジェクト
| 指向テクニックが必要だっただろうと思えることはたくさんやってきたけれど、

>型タグをつけるのと「クラスベースのオブジェクト指向」どう異なるのでしょうか?

???
型タグを使って処理を振り分けてたらオブジェクト指向じゃないと思いますが。
そんなことならCでもできるし、一般的な手法です。

>>Schemaの例は私は知りませんけど。
>http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-17.html#%_idx_2486
>このへんを読んでみてください。

見てみました。
連想配列版が連想配列でクロージャーを探すところを、condの連発で探すように
しているだけで、基本的な考え方は同じなのでは。

------------------------------------------------------------
  前橋 和弥                        PXU00211@xxxxxxxxxxx
                                   http://kmaebashi.com
------------------------------------------------------------