[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>
度々オブジェクト指向についての質問ですいません。
17 messages
2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について
— Yukihiro Matsumoto <matz@...>
2008/01/04
まつもと ゆきひろです
[#44453] RSS取得時<enclosure>タグでエラー? — "garyo hosu" <garyohosu@...>
garyoです。いつもお世話になっております。
5 messages
2008/01/08
[#44463] [ANN] Rails勉強会@東京 第26回のお知らせ — "MOROHASHI Kyosuke" <moronatural@...>
各位
1 message
2008/01/11
[#44464] [ANN] rcairo 1.5.1 — Kouhei Sutou <kou@...>
須藤です。
5 messages
2008/01/11
[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>
はじめまして、青木ルイスと申します、
14 messages
2008/01/12
[#44479] ファイル出力時のprintについて
— m-hatake@...
2008/01/16
畠山と申します。
[#44481] Re: ファイル出力時のprintについて
— KIMURA Koichi <kimura.koichi@...>
2008/01/16
木村です。
[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>
山崎(ゆ)です。
14 messages
2008/01/16
[#44517] www.ruby-lang.org/ja/man/ を静的HTMLに変更 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
6 messages
2008/01/20
[#44536] カタカナ→ひらがな変換 — "Hideo Konami" <konami@...>
小波です。
8 messages
2008/01/25
[ruby-list:44442] Re: コンストラクタの引数について&インスタンス変数の持ち方について
From:
Akira Hayakawa <ruby@...>
Date:
2008-01-05 09:26:44 UTC
List:
ruby-list #44442
さっき考えたのですが、 例えばPCを考えます。 PCは外から見ると、ディスプレイと箱とキーボードくらいしかありません。 でも箱の中にはCPUやメモリもありますし、ファンもありますしとたくさんあります。 ぼくの考えからいうと、 PCは def initialize(display, box, keyboard) となるべきです。 keyboardなどは何を使ってもオブジェクト指向的には意味がないように思いますが、 boxは特に何が入っているかによって性能がずいぶん違います。 boxは入ってきた情報を処理するメソッドも持っています。 例えば1+1と入れると2としてdisplayに表示してくれます。 それらはCPUの性能やメモリの大きさで性能が決まります。 Box def initialize(cpu, memory) そこで考えたのですが、 今、CPUを変えたところで、同じ動作をしてもらわなければ困ります。 CPU1をCPU2に変えたら1+1が3になりましたというのは話になりません。 CPUがなんであろうと、同じような動作をしてくれればいいわけで、 boxの中身は気にならないはずです。 例えば、時代が変わって、BoxがCPUとメモリによって構成されなくなったとします。 どういう風になったかは知りませんが、 例えばなんかの液体を使って処理するようになったとします。 PCとしては、 箱を付け替えたとしても、 boxにはいつもと同じ動作をしてくれればいいだけで、 コンストラクタを変えるのは嫌です。 そんな事PC全体としては知った事ではないはずです。 WindowsのパソコンかLinuxのパソコンかをkeyboardやdisplayも巻き込んで議論すべきではないと思います。 つまりなんというか、引数の価値は同じにすべきだと思うのです。 結局、パソコン本体としては、 この白い箱が何をしているかなど興味があることではなく、 1+1を2と計算してくれるものであれば問題ないわけで、 たぶんまつもとゆきひろさんは、 「Bが未来永劫wheel_sizeしか外に見せないと確信があれば、 後者の方がデータ隠蔽の度合が高いので望ましい」 という文章でこんな事を意味していたのではないかと思います。 そのコンストラクタが構成されている要素の要素まで引数にとる必要はないのではないでしょうか? また、もし「そうしなければならない」という風にすると、2段3段とコンポジッションする場合に、 一番上のクラスの引数が膨れ上がります。 これはあまりにも美しくないし、使い勝手も悪くなります。(10段下に持たれているクラスの事なんか考えたくもないはずです) 車やさんとしては、タイヤやさんがどういう製法で作ろうが、どんな形をしてようが、 とりあえずタイヤとして機能するものであればなんでもいい。 だからタイヤのインスタンスを引数をとるべきではないのですか? 重複っぽいですが。 もし、 間違っているのであれば、 あるいは「場合による」 という事であれば、 もっと決定的な反例が欲しいです。 -- Akira Hayakawa <ruby@i-mail.jp>