From: matz@... (Yukihiro Matsumoto) Date: 1998-02-24T12:47:51+09:00 Subject: [ruby-list:6697] Re: Object-Orientation (was Re: tree.rb) まつもと ゆきひろです In message "[ruby-list:6693] Re: Object-Orientation (was Re: tree.rb)" on 98/02/24, Kazuhisa YANAGAWA writes: | 「継承がある抽象データ型」と「オブジェクト」の区別って何でしょう | ね. C++ なんかだと, つい「オブジェクト指向プログラミング」ではなくて | 「抽象データ型を使ったプログラミング」をしてしまうのですが. # こーゆー話はruby本4章のネタなのですが,きっとここまではカ # バーできないと思うのでここで意見を述べておきます.間違って # ネタに出来たらめっけものだし.^^;;; 私の理解だと「オブジェクト指向」は「オブジェクトを中心にした 考え方」であり,「オブジェクト」の要件は「カプセル化」だと思 うので,「抽象データ型」はオブジェクト指向の範疇に含まれると 思います. ただ,オブジェクト指向プログラミングという話をする場合には * カプセル化 * 継承 * 動的結合(ポリモルフィズム) がないと,オブジェクト指向プログラミングしている気にならない と言うのは本当なのですが,分析レベルではかえって邪魔でしょう. で,rubyの(つーか,まつもとの)提案する設計法は * 継承は使わない * 既存のクラスのオブジェクトを抽象データ型として使う * 場合によってはポリモルフィズムは活用する 普通のユーザと * 実装の共有(つまり楽するため)継承をがんがん使って * クラスやモジュールを提供する ライブラリ提供者の二層に明確に分かれる,というものです. そーゆー観点からいうと, | 「抽象データ型を使ったプログラミング」をしてしまうのですが. というのは「うんうん,望ましい姿だ」なんて思っちゃいます. さらにいうと, | 結局「書くのが楽しいように書く, メンテナンスが楽にできるようならさら | に素晴らしい」ぐらいの考えで, いい加減なスクリプトを書き散らしている | 現状がある.... これまたrubyのポリシーにまったく合致してたりします.正直言っ て言語仕様に込めたメッセージにこれだけ反応して下さるとは思い ませんでした. # バベル17のようだ. |で, 後ろにあるようなのを投稿してみたりする (^^; エントリーしておきます. まつもと ゆきひろ /:|)