From: sinara@... Date: 1997-04-10T15:21:12+09:00 Subject: [ruby-list:2750] Re: class design (Re: url escape) 原です。 > けいじゅ@SHLジャパンです. > >それです。 > > おかしい. 普通ですね(^^;;; 普通なのか、よっぽど本人が普通で無く見えたのか。 > 基礎論は数学じゃないって話しはありますからね. でも, 私にいわせれば, 数 > 学全部難しいですけど(^^;;;; そういういみでは原さんはすごいですねえ. コ > ンピュータと数学と両立しているんだから... 両立?、、、共倒れかも。^^; > >なるほど、理解できた気がします。「ラッパー」と呼ばれるのも似た > >所があるようですね。 > > やることは同じなんですけど, 用法がちょっと違うのかも知れません. ラッパー > というと何か見せたくないものを隠すイメージが強いですね. ああ、なるほど。 > デレゲーションだと, 相手を利用しているってイメージですよね. それに1つ > のオブジェクトにデレゲートする必要もないですし... ふむふむ。 > プロキシは, 中継地点みたいなイメージが... この用語はどっから来ているん なるほど、なるほど。 > これらは全部オブジェクトであると考えて, メソッドも各自に登録されている > と考えると: > > オブジェクト -> 特異クラス -> extendされたモジュール群 -> 自クラス ->... > > のようにメソッド検索が行なわれ, 実行されると考えることができますよね. > > これがデレゲーションの本来のいみです. この場合は, デレゲーション関係 > (クラス継承関係)を宣言しておけば, あとは, 言語側であるオブジェクトに送 > られたメッセージは上記のパスを通って必要なメソッドが自動的に起動してく > れます. ありがとうございました。大分イメージがつかめてきました。委譲というのは 日常言語に近い広い意味を持つこともあるし、かなり専門的なオブジェクト指 向プログラミング(とは限らない?)の用語でもあるようですね。 ところで、思い出したのが thread.rb のクラス Queue。 クラス Queue は、push, pop のメソッドを持ち、ちょっと Array の ように見える。 しかし、Queue は Array の全ての機能(メッソッド)を持つ必要は ないので Array を継承せず(実際は ruby の制限からもできないの だが)、中心的な役割をするインスタンス変数 @que を Array とし て持ち、push, pop は @que に対するメッソッドとして、Arrayに 「委譲」するようしている。 と、こんな感の表現でいいのかな。