K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[477] 「オブジェクト指向再入門」について
投稿者:CES
2007/02/20 02:13:25

はじめまして。 なんか最近、自前のプログラミング言語を作りたくなって来たのであちこちフラフラしていて、こちらに流れ着きました。 「プログラミング言語を作る」のコーナーは、後ほどじっくり読ませていただきます。 さて、今回は一言「オブジェクト指向再入門」に物申させて頂きに参上仕りました。 文句ばっかりでなく、賛同とか感想の方が多いかもしれませんが… 「いい加減、わけのわからない「たとえ話」はやめよう」 賛成です。 この「わけのわからないたとえ話」というのは、「オブジェクト指向とはどういうものであるか」を、筆者なりに精一杯噛み砕いて説明しようとしたものだと思います。 しかし、それでも難しいという印象を持たれているのは、「どういうものか」は頑張って説明するけれど、「どのようにありがたいのか」が伝わらないためではないでしょうか。 「オブジェクトに「メッセージ」を送って…」 > 「メッセージ送出」と呼ばれているのは、たいていのオブジェクト指向言語では実のところ一種の関数呼び出しです。 重箱の隅を突っつくような指摘をお許しください。 オブジェクト指向で言うところの「メッセージ送出」が、大抵の(メジャーな)オブジェクト指向言語において「関数呼び出し」という形をとっているのは、確かにその通りです。 が、「オブジェクト指向」と「オブジェクト指向言語」は別のものであることは(非「オブジェクト指向言語」で「オブジェクト指向」を実現されている管理人様ならば)周知のことであると存じます。 「メッセージ」というと、ぱっと思いつくのが「(WM_CREATE などの)Window メッセージ」ですが、Windows のアーキテクチャというのは、まさにオブジェクト指向なのだと痛感させられます。 ウィンドウの原型を定義するウィンドウ「クラス」があり、個々のインスタンスであるウィンドウはそのクラスから作られ、振る舞いをカスタマイズしたい場合は「サブクラス化」し、「メッセージ」を送ると、同じメッセージであってもウィンドウごとに「多態的」な動作をする。 が、MFC なんぞ使わず SDK でウィンドウプロシージャを書いている人は、非オブジェクト指向言語を使っているんだなぁ、と思うと、何だか妙な気分です。 「オブジェクト指向で再利用性は高まるか?」 高まると思いますが、マルチプルインスタンスについて論じているらしい「こちら」のリンクが切れているので、先がすごく気になります… 「それは「カプセル化」なのか?」 > データ隠蔽ではなく実装隠蔽だ、という言葉があって、まあこれも > 言葉遊びの匂いがしないでもないですが、同様のことを言っているように > 思います。 (皆様からのご意見(2)より) そういう文句を、ある Eiffel 本で見ました。 確かに、C++ でいうクラスで private にするものには「そのクラスがカプセル化するデータ」と「実装のために必要なデータ」の2種類があり、これを区別することは有用であると思います。 が、この Eiffel 本は「データを隠蔽してしまったら誰も触れなくなる。データは公開せよ」というわけのわからんことを言います。 それは Eiffel が「外部から書き込み可能な public 変数」という概念を持たないから言えることであって、その保護機能がない C++ では、変数を private にして getter のみ実装することは、Eiffel 風に言えば「公開」であると思います。 まぁ、この Eiffel 本は「だから C++ はダメな言語だ。さぁ、皆で Eiffel を使おう!」とか言い出しそうな勢いですが。 「継承について」 > 継承は、ソースの再利用の手段ではないということです。 うーん…結局、ソース以外の何を再利用するんだろう、と思います。 いや、言わんとすることはわかるんですが、突き詰めると、ソースの再利用じゃん、と。 「オブジェクト指向言語によるサポート」 > こんなの見た目が変わっただけじゃないか! > 全くそのとおり。継承を考えない限りにおいては、オブジェクト指向言語といってもその程度のものです。 オブジェクト指向とは、ある日、何の前触れも無くぽっと生まれたものではなく、それ以前の歴史を脈々と受け継いだ上に、生まれるべくして生まれたものだと思います。 そして、「オブジェクト指向言語」とは、非オブジェクト指向言語よりもオブジェクト指向を「それっぽく書ける」だけの代物であって、正に「サポート」程度の役割しかないものだと思います。 オブジェクト指向の三本柱は「カプセル化」「継承」「多態性」だなんて、いったい誰が言ったんでしょうか。 結局のところ、(最初にも書きましたが)その三本柱が「何の役に立つのか」が見えないとダメなんだと思います。 C 言語で継承や多態性を実現するのは難しいですが、継承や多態性によって「何を成し遂げたいのか」がわかっているなら、きっと C でも素晴らしいプログラムが書けることでしょう。 もっと言ってしまうと、「オブジェクト指向」って、結局何なんだかよくわからなくなってきます。 おそらくそれは「オブジェクト思考」みたいなもんであって、「これ」というはっきりした形が無い「考え方」なんだと思います。 でも「じゃあ、その考え方に則っていればなんでもオブジェクト指向なのか」というとそんなことは無くて。…何なんでしょうね、オブジェクト指向って。 最後にひとつ、感じたことを言わせていただくと… この再入門講座は「オブジェクト指向とは何であるか」ではなく「オブジェクト指向とは何でないか」を説明していることが多いように思えたのでした。
[この投稿を含むスレッドを表示] [この投稿を削除]
[479] Re:「オブジェクト指向再入門」について
投稿者:(ぱ)
2007/02/20 02:13:25

どうも。はじめまして。 >しかし、それでも難しいという印象を持たれているのは、「どういうものか」は >頑張って説明するけれど、「どのようにありがたいのか」が伝わらないためでは >ないでしょうか。 そう思います。ていうかプログラミング言語はもちろん、プログラミングパラダイム まで含めても所詮「道具」に過ぎないわけで、道具なら、何の役に立つのかが わからなければならないはずです。 >「メッセージ」というと、ぱっと思いつくのが「(WM_CREATE などの)Window > メッセージ」ですが、Windows のアーキテクチャというのは、まさに > オブジェクト指向なのだと痛感させられます。 … >が、MFC なんぞ使わず SDK でウィンドウプロシージャを書いている人は、 >非オブジェクト指向言語を使っているんだなぁ、と思うと、何だか妙な気分です。 SDKでウィンドウプロシージャを書く人は、「メッセージ」のディスパッチを 特に苦労なく学べるんじゃないかと思っています。まあイベントドリブンへの 発想の転換は必要でしょうが、メッセージの受け渡しそのものは別に難しくない。 Cの知識そのままでいけます。 でも、「オブジェクト指向ではオブジェクト同士がメッセージを~」という 説明では混乱する人が出てくる。これは、「メッセージパッシングは 関数呼び出しとは異なるものだ」という説明があるせいだろうと思うわけです。 >「オブジェクト指向で再利用性は高まるか?」 > >高まると思いますが、マルチプルインスタンスについて論じているらしい >「こちら」のリンクが切れているので、先がすごく気になります… や、すみません。リンク先のURLにNOREFと書いてあるので、いずれ続きを書くつもり だったんだろうと思います。 で、当初書くつもりだったことは既に書いたつもりですので、 おそらくこのリンク先は、 http://kmaebashi.com/programmer/object/shigoto.html ここのStringTokenizerあたりの説明のことを指しているのだと思います。 # 既に忘却の彼方です。すみません。 >それは Eiffel が「外部から書き込み可能な public 変数」という概念を >持たないから言えることであって、その保護機能がない C++ では、 >変数を private にして getter のみ実装することは、Eiffel 風に言えば >「公開」であると思います。 もうひとつ重要なのは、Eiffelでは引数無しのメソッド呼び出しでは()が 不要だということですね。 >まぁ、この Eiffel 本は「だから C++ はダメな言語だ。さぁ、皆で >Eiffel を使おう!」とか言い出しそうな勢いですが。 すみません、ちなみにその本は何という本でしょうか。 よろしければ教えてください。 >> 継承は、ソースの再利用の手段ではないということです。 > >うーん…結局、ソース以外の何を再利用するんだろう、と思います。 >いや、言わんとすることはわかるんですが、突き詰めると、ソースの >再利用じゃん、と。 私が書いたのは、「継承は、(ソースであれなんであれ)再利用の手段ではない」 ということです。継承は抽象化の手段だと思っています。 >最後にひとつ、感じたことを言わせていただくと… >この再入門講座は「オブジェクト指向とは何であるか」ではなく >「オブジェクト指向とは何でないか」を説明していることが多いように >思えたのでした。 まあこれはそうでしょうねえ。 既存の説明について、ちょっとそれはないんじゃないか、というコンセプトで 書いてますから。
[この投稿を含むスレッドを表示] [この投稿を削除]
[480] Re:「オブジェクト指向再入門」について
投稿者:CES
2007/02/20 02:13:25

レスありがとうございます。CES です。 >SDKでウィンドウプロシージャを書く人は、「メッセージ」のディスパッチを >特に苦労なく学べるんじゃないかと思っています。まあイベントドリブンへの >発想の転換は必要でしょうが、メッセージの受け渡しそのものは別に難しくない。 >Cの知識そのままでいけます。 >でも、「オブジェクト指向ではオブジェクト同士がメッセージを~」という >説明では混乱する人が出てくる。これは、「メッセージパッシングは >関数呼び出しとは異なるものだ」という説明があるせいだろうと思うわけです。 これについては、 「Smalltalk に端を発する、『オブジェクト同士のコミュニケーションはメッセージパッシングだ』とする派と、C++ 流儀の『メッセージパッシングとは要するに関数呼び出しのことだ』とする派、2通りの『オブジェクト指向』が存在し、それがごっちゃになって受け取られているためだ」 という記述を見つけました。 http://sumim.no-ip.com:8080/wiki/414 私は C++ 流しか知らないので、やはりオブジェクト指向の源流を理解するためには、Smalltalk(というか Simula?)を学ぶべきなのかな、と思います。 >>「オブジェクト指向で再利用性は高まるか?」 >> >>高まると思いますが、マルチプルインスタンスについて論じているらしい >>「こちら」のリンクが切れているので、先がすごく気になります… > >や、すみません。リンク先のURLにNOREFと書いてあるので、いずれ続きを書くつもり >だったんだろうと思います。 >で、当初書くつもりだったことは既に書いたつもりですので、 >おそらくこのリンク先は、 >http://kmaebashi.com/programmer/object/shigoto.html >ここのStringTokenizerあたりの説明のことを指しているのだと思います。 ># 既に忘却の彼方です。すみません。 了解いたしました。後ほど読ませていただきます。 >>まぁ、この Eiffel 本は「だから C++ はダメな言語だ。さぁ、皆で >>Eiffel を使おう!」とか言い出しそうな勢いですが。 > >すみません、ちなみにその本は何という本でしょうか。 >よろしければ教えてください。 http://www.amazon.co.jp/exec/obidos/ASIN/4894711885/ コイツです。 >私が書いたのは、「継承は、(ソースであれなんであれ)再利用の手段ではない」 >ということです。継承は抽象化の手段だと思っています。 「継承はコードを書かないための技術である」というのも、あながちハズレではない気がしています。 結局、オブジェクト指向とは何のために存在するのかというと、突き詰めれば「バグを減らすため」だと思います。 バグを減らすにはどうすればいいかというと、極力コードを書き起こす量、書き換える量を減らすことです。 継承や多態性は抽象化のための手段であり、抽象化は再利用のための手段であり、再利用はコードを書く量を減らすための手段であると思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[481] Re:「オブジェクト指向再入門」について
投稿者:(ぱ)
2007/02/20 02:13:25

>これについては、 >「Smalltalk に端を発する、『オブジェクト同士のコミュニケーションは > メッセージパッシングだ』とする派と、C++ 流儀の『メッセージパッシングとは > 要するに関数呼び出しのことだ』とする派、2通りの『オブジェクト指向』が > 存在し、それがごっちゃになって受け取られているためだ」 そういうことなら、C++やJavaを使いたい人には、ことさらメッセージ云々と 説明するのは有害だということになりそうです。違う流儀なのですから。 >>すみません、ちなみにその本は何という本でしょうか。 >>よろしければ教えてください。 > >http://www.amazon.co.jp/exec/obidos/ASIN/4894711885/ あ、やっぱり。この本は読みました。 >バグを減らすにはどうすればいいかというと、極力コードを書き起こす量、 >き換える量を減らすことです。 >継承や多態性は抽象化のための手段であり、抽象化は再利用のための手段であり、 >利用はコードを書く量を減らすための手段であると思います。 そこまで一般化してしまえばそうかもしれませんが。 たとえば、interfaceを使うのと継承を使うのとでは、短期的には継承を使う方が ソースは短くなるものですが、それでもinterfaceを使おう、というのが 最近の風潮ですし。 一例ですけど、StrutsのActionがinterfaceでなくクラスなのが気になって しょうがないのです。私の場合。
[この投稿を含むスレッドを表示] [この投稿を削除]
[482] Re:「オブジェクト指向再入門」について
投稿者:CES
2007/02/20 02:13:25

>>バグを減らすにはどうすればいいかというと、極力コードを書き起こす量、 >>き換える量を減らすことです。 >>継承や多態性は抽象化のための手段であり、抽象化は再利用のための手段であり、 >>利用はコードを書く量を減らすための手段であると思います。 > >そこまで一般化してしまえばそうかもしれませんが。 それが悩みと言えば悩みで。 「オブジェクト指向はバグを減らすための技術である」は真であると思いますが、「バグを減らすための技術はオブジェクト指向である」これは偽です。 じゃあ「オブジェクト指向」という言葉の定義は何かというと、詰まってしまって… カプセル化も継承も多態性も「ソースコードを量を減らし、バグを減らすための手段である」と括ってしまうと、「バグを減らすための技術はオブジェクト指向である」が真になってしまうので。 「カプセル化を中核とし、それにバグ軽減のための様々な技法を付随させたものである」という定義を試みたこともありましたが、カプセル化だけ特別扱いするのもどうかと思いますし… >たとえば、interfaceを使うのと継承を使うのとでは、短期的には継承を使う方が >ソースは短くなるものですが、それでもinterfaceを使おう、というのが >最近の風潮ですし。 ただ闇雲にソースを短くすればいいというわけではありません。 そもそも、オブジェクト指向を使えば、どうしたってソースは肥大化すると思います。 一時的にはそうであっても、将来的に、トータルで見て書く量を減らそう、ということです。 >一例ですけど、StrutsのActionがinterfaceでなくクラスなのが気になって >しょうがないのです。私の場合。 Struts については(というか、Java 自体)よく知らないので、コメントは控えさせていただきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[483] Re:「オブジェクト指向再入門」について
投稿者:kei
2007/02/20 02:13:25

横槍、失礼します。 >>>バグを減らすにはどうすればいいかというと、極力コードを書き起こす量、 >>>き換える量を減らすことです。 >>>継承や多態性は抽象化のための手段であり、抽象化は再利用のための手段であり、 >>>利用はコードを書く量を減らすための手段であると思います。 (中略) >「オブジェクト指向はバグを減らすための技術である」は真であると思いますが、「バグを減らすための技術はオブジェクト指向である」これは偽です。 (中略) >カプセル化も継承も多態性も「ソースコードを量を減らし、バグを減らすための手段である」と括ってしまうと、「バグを減らすための技術はオブジェクト指向である」が真になってしまうので。 確かに、 1) バグを減らすには、コード量を減らすことである 2) オブジェクト指向による抽象化は、再利用のための手段である 3) 再利用によってコード量が減る 4) コード量が減れば、バグが減る 5) オブジェクト指向は、バグを減らすための技法である という論理の筋は、理解できます。 でも、オブジェクト指向って、再利用だけが利点でしょうか? オブジェクト指向に限らず、「抽象化すること」によって得られる利点を、適当につらつらと考えてみましたが、 ・ 設計の向上(データ構造、モジュール間の関連等) ・ 可読性の向上 ・ 保守性の向上 ・ 意思疎通の向上 等々、ちょっと考えただけでも色々出てきそうです。 なので、「オブジェクト指向はバグを減らす技術」っていうのは、確かに真かもしれないのですけど、それはひとつの側面に過ぎないんじゃないかな、と思いました。 以上、横槍というか、茶々でした。
[この投稿を含むスレッドを表示] [この投稿を削除]
[484] オブジェクト指向とは…(Re:「オブジェクト指向再入門」について)
投稿者:CES
2007/02/20 02:13:25

だんだんこちらのサイトのコンテンツの内容と関係なくなってきましたので、タイトル変えました。 >横槍、失礼します。 横槍大歓迎です。 >でも、オブジェクト指向って、再利用だけが利点でしょうか? >オブジェクト指向に限らず、「抽象化すること」によって得られる利点を、適当につらつらと考えてみましたが、 > >・ 設計の向上(データ構造、モジュール間の関連等) >・ 可読性の向上 >・ 保守性の向上 >・ 意思疎通の向上 > >等々、ちょっと考えただけでも色々出てきそうです。 うん、なるほど。 確かに抽象化と再利用を直結させるのは短絡的ですね。 が、もう一歩突っ込んで、 ・何のために設計をはっきりさせるん? ・可読性や保守性が向上するとどんなメリットがあるん? ・意思疎通が円滑になるとどのように嬉しいん? という話になると、結局、「バグが減るから嬉しい」に帰結するんじゃないでしょうか。 #とか言ってるとそのうち「より儲かるから嬉しい」に帰結しそうで、身も蓋もなくなってくるんですが。 はじまりは 「わけわからんたとえ話よりも、『オブジェクト指向を使うと何が嬉しいのか』に重きを置いて説明すべきではないか」 にあります。 C 言語の知識がある前提でオブジェクト指向を教えるとすると、何が嬉しいのかと言えばやっぱり「バグが減る・バグが出にくくなるから嬉しい」んだと思います。 #設計がきれいになることによってもたらされるメリットではなく、きれいになること自体が純粋に嬉しい、というのも共感できるところではあるのですが。 もうこうなると、オブジェクト指向のどこがいいのか、バグさえ減るならオブジェクト指向じゃなくたっていいじゃないか、ということになってしまうので、私の意見はやっぱりどこか間違えてるっぽいんですが。 括りすぎ、一般化し過ぎたんでしょうか。 そもそも「オブジェクト指向」という言葉の定義からして統一されたものがない…とも聞きますが。 余談になりますが、このサイトの「オブジェクト指向再入門」に言及されているページを見つけました。 http://sumim.no-ip.com:8080/wiki/755
[この投稿を含むスレッドを表示] [この投稿を削除]
[487] Re:オブジェクト指向とは…(Re:「オブジェクト指向再入門」について)
投稿者:kei
2007/02/20 02:13:25

>という話になると、結局、「バグが減るから嬉しい」に帰結するんじゃないでしょうか。 それもありだと思います。 ただ、これは個人的な感性の問題かもしれませんが、僕個人は、抽象化によって得られるメリットは、 「バグが減るから嬉しい」 よりも、 「表現力が高まるから嬉しい」 って側面の方が強いように思えます。 # 個人の主観の問題に還元しちゃうのは、ちょっとおもしろくないですけど。。 >余談になりますが、このサイトの「オブジェクト指向再入門」に言及されているページを見つけました。 >http://sumim.no-ip.com:8080/wiki/755 ↑このリンク先から引用 >くだんの再入門にかぎらず、世の多くの「オブジェクト指向入門」が入門の先に見据えているものは、 >実は、オブジェクト指向なんかじゃなく(実際、ほとんどその説明のために行を割いておらず) >オブジェクトのメリットを論じたり、オブジェクトを使った効率的なプログラミングをするためのもの >に過ぎないんじゃないかなぁ…という問題も、もちろんあります。 えーっ。 それじゃ駄目なの??? って思ってしまいました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[488] Re:オブジェクト指向とは…(Re:「オブジェクト指向再入門」について)
投稿者:CES
2007/02/20 02:13:25

>ただ、これは個人的な感性の問題かもしれませんが、僕個人は、抽象化によって得られるメリットは、 > >「バグが減るから嬉しい」 > >よりも、 > >「表現力が高まるから嬉しい」 > >って側面の方が強いように思えます。 > ># 個人の主観の問題に還元しちゃうのは、ちょっとおもしろくないですけど。。 まだ個々人の主観を越える同意が得られる段階ではないんでしょうか? 決して新しいものではないと思うんですけどね。 >>くだんの再入門にかぎらず、世の多くの「オブジェクト指向入門」が入門の先に見据えているものは、 >>実は、オブジェクト指向なんかじゃなく(実際、ほとんどその説明のために行を割いておらず) >>オブジェクトのメリットを論じたり、オブジェクトを使った効率的なプログラミングをするためのもの >>に過ぎないんじゃないかなぁ…という問題も、もちろんあります。 > >えーっ。 >それじゃ駄目なの??? > >って思ってしまいました。 「オブジェクトを使って効率的にプログラミングすること」って「オブジェクト指向」じゃないのかな? それとも、あくまで「オブジェクト指向とは何か?」っていう説明をせよということなのかしら。 #私は知りたいけれど、入門者には必要か? と思う (あっちから覗かれてないことを祈りつつビクビク書きこむけれど)Simula っぽくないとオブジェクト指向とは認められない、とか言わないよね…
[この投稿を含むスレッドを表示] [この投稿を削除]
[489] Re:「オブジェクト指向再入門」について
投稿者:(ぱ)
2007/02/20 02:13:25

管理人である私のいないところで会話が進んでいくのが、この手の掲示板の あるべき姿だと思ってます。皆様書き込みありがとうございます。 >じゃあ「オブジェクト指向」という言葉の定義は何かというと、詰まってしまって… 用語定義に拘泥するのはあまり意味があるとは思えないんですが、 無意味なことにこだわるのも人間だってことで。 たとえば、以下のページでは、 http://www.shiro.dreamhost.com/scheme/trans/reesoo-j.html オブジェクト指向言語の要件を箇条書きにしたうえで、 | つまり、「オブジェクト指向」というのはちゃんと定義された概念ではない。 | ある人々 (AbelsonとSussman?) はLispはオブジェクト指向だと言うが、それは | {3,4,5,7} に基づく (但し、全ての型はプログラマの頭の中に存在するとする)。 | Javaは {1,2,3,7,8,9} があるからオブジェクト指向だ。 Eは {1,2,3,4,5,7,9} と | 6のほとんどをもつから、もっとオブジェクト指向だと言えるかもしれない。 (中略) | オブジェクト指向というものが動く標的であるため、オブジェクト指向の熱心な | 支持者はこのメニューのうちの適当なサブセットを気まぐれに選んで、 | それを以って他の言語はオブジェクト指向ではないと説得しようとする。 と述べています。実際、その通りだと私も思います。 でも、最低限、オブジェクト指向の必要条件(十分条件でないことは承知の上で)を 言うのであれば、「マルチプルインスタンス」は結構外せない線と言えると思います。 インスタンスとはすなわちオブジェクトであり、オブジェクトがなければ、 さすがにオブジェクト指向とは呼べないでしょうから。 ただ、マルチプルインスタンスという定義自体、クラスベースのOOに特化してないか、 と言われるとそれはそうかもしれず。プロトタイプベースの場合、(ある特定の クラスの)インスタンスが複数生成される、というわけではないですから。 # プロトタイプベースの言語でも、結局クラスっぽいものを作ることが # 多いとは思いますけどね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[491] Re:「オブジェクト指向再入門」について
投稿者:CES
2007/02/20 02:13:25

>| つまり、「オブジェクト指向」というのはちゃんと定義された概念ではない。 ふむ、結局そんなもんなんですか。 >でも、最低限、オブジェクト指向の必要条件(十分条件でないことは承知の上で)を >言うのであれば、「マルチプルインスタンス」は結構外せない線と言えると思います。 >インスタンスとはすなわちオブジェクトであり、オブジェクトがなければ、 >さすがにオブジェクト指向とは呼べないでしょうから。 ところで、C で int i; と書いたとき、これは(int クラスではないけれど)int 型のインスタンスと呼べはしまいか。 int 型のオブジェクトと呼んでも、間違いとは言えまい。 んで int j; これでマルチプルインスタンス、ってのはヒネクレ過ぎ? オブジェクト指向っていうと「データと関数をくっつけたものがオブジェクトです」という説明がなされることが多いが、いわゆるカプセル化というのは必須要件ではないのだろうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[492] Re:「オブジェクト指向再入門」について
投稿者:(ぱ)
2007/02/20 02:13:25

ええと、chatモード? >ところで、C で > >int i; > >と書いたとき、これは(int クラスではないけれど)int 型のインスタンスと >呼べはしまいか。 >int 型のオブジェクトと呼んでも、間違いとは言えまい。 ていうかK&Rでは、これのことをオブジェクトと呼んでますね。 >オブジェクト指向っていうと「データと関数をくっつけたものがオブジェクトです」と >いう説明がなされることが多いが、いわゆるカプセル化というのは必須要件では >ないのだろうか。 カプセル化のない(今はあるんでしたっけ?)のPythonとか、 メソッドとオブジェクトを実行時にくっつけるPerlとか、 メソッドとオブジェクトが直接関連していないCLOSとか…
[この投稿を含むスレッドを表示] [この投稿を削除]
[493] Re:オブジェクト指向とは…(Re:「オブジェクト指向再入門」について)
投稿者:(ぱ)
2007/02/20 02:13:25

>(あっちから覗かれてないことを祈りつつビクビク書きこむけれど) >Simula っぽくないとオブジェクト指向とは認められない、とか言わないよね… 詳しいわけではないですが、Simulaは、むしろC++に近い言語だという認識です。 http://www.cee.hw.ac.uk/~rjp/bookhtml/chap09.html Example 9.4のあたりを見ると、メソッドは「procedure」として宣言されてますし。
[この投稿を含むスレッドを表示] [この投稿を削除]