Article View: fj.lang.lisp
Article #225Re: オブジェクト指向プログ
From: Ken Wakita
Date: Tue, 17 Dec 1996 00:00
Date: Tue, 17 Dec 1996 00:00
35 lines
2347 bytes
2347 bytes
東工大の脇田ともうします。 CLOS はあまりよくしらないので教えてください。 <UEDA.96Dec12212540@kinshow.shpcsl.sharp.co.jp>の記事において ueda@kinshow.shpcsl.sharp.co.jpさんは書きました。 > 別の派からは「CLOSなんてオブジェクト指向じゃない!」なんてよく言われる > ことです。確かに「多重メソッドはメッセージパッシングの自然な拡張である」 > なんて言われるとCLOS派でも「おいおい、それはちょっと...」と思ってしま > います。おかげでカプセル化なんて概念はCLOSでは雲霧消散してしまっています。 プログラミング言語ごとに言葉使いが違うので私は、ちょっと混乱しているか もしれません。多重メソッドとは総称関数 (generic function) をさすのです か?それとも、method override か method overload を指しているのでしょ うか? Method dispatch の意味が Smalltalk や C++ ではレシーバで specialize さ れているのに対して、CLOS や Dylan の総称関数ではすべての引数によって specialize されている点で自然な拡張だと思うのです。 カプセル化の話は総称関数の話とはまた直接の関係はない思います。少なくと も Dylan では、オブジェクトの構造は隠蔽されています。総称関数を導入す ると、メソッドが必ずしもクラスごとに定義されているわけではないのですが、 それ自体はカプセル化とは独立した事象だと思います。このことと、C++ の friend が CLOS や Dylan にないことは興味深いと思います。総称関数が特定 のクラスに属さないことによって、そもそも friend が必要となる状況がなく なるのだと思います。このことは、総称関数が Smalltalk 流のメッセージパッ シングの拡張になっていることの傍証になるのかしら? もし、わたしが多重メソッドの解釈で誤解をしていたら許してください。 わきた
Technical Details
Message-ID:
<5959r8$np@nsi.is.titech.ac.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<58o88i$ld8@isws01.is.noda.sut.ac.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 1421c0,94f4ed4aadcf189f X-Google-Attributes: gid1421c0,public From: wakita@is.titech.ac.jp (Ken Wakita) Subject: Re: オブジェクト指向プログ Date: 1996/12/17 Message-ID: <5959r8$np@nsi.is.titech.ac.jp> X-Deja-AN: 204869519 references: <58o88i$ld8@isws01.is.noda.sut.ac.jp> content-type: text/plain; charset=ISO-2022-JP organization: Dept. math. & comp. sci, Tokyo Inst. Tokyo mime-version: 1.0 newsgroups: fj.lang.lisp