[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について

From: Yukihiro Matsumoto <matz@...>
Date: 2008-01-04 16:38:06 UTC
List: ruby-list #44433
まつもと ゆきひろです

In message "Re: [ruby-list:44431] コンストラクタの引数について&インスタンス変数の持ち方について"
    on Sat, 5 Jan 2008 00:16:02 +0900, Akira Hayakawa <ruby@i-mail.jp> writes:

|(質問1)
|今、AとBというクラスを考えます。
|BはAにオブジェクトコンポジションでもたれる事にします。
|例えば、
|Aが車で、Bがタイヤだとします。
|ここで、Aは、コンストラクタの引数で
|
|class A
|  def initialize(class_B_instancere)
|    @tyre = class_B_instance
|
|ととるのがいいのか、

|class A
|  def initialize(wheel_size)
|    @tyre = B.new(wheel_size)
|
|とするのがいいか、どちらでしょう?

場合によるとしか言いようがありません。Bが未来永劫wheel_size
しか外に見せないと確信があれば、後者の方がデータ隠蔽の度合が
高いので望ましいですが、AとBの結びつきがさほど強くなく、将来
B以外のオブジェクトをAと結合しようとすると、前者の方が望まし
いでしょう。

|(質問2)
|今、ある座標上の点を表すクラスPointというものを考えます。
|このPointは当然、x座標とy座標を持つと思いますが、ここで質問です。

|  def initialize(x, y)
|    @x = x
|    @y = y
|の形で持つのと、xとyは所詮座標であり、仲間であるという事を意識する為に
|class Point
|  @where[0] = x
|  @where[1] = y
|の形で持つのはどちらがいいのでしょうか?

これも場合によります。プログラムそのものは前者の方が意味が明
示されて見やすいでしょうが、アルゴリズムによっては2要素の配列
として扱った方が統一的に扱える場合もあるでしょう。

|ぼくは考えすぎでしょうか・・・

考えすぎかどうかはよくわかりませんが、正解を求めすぎていらっ
しゃるかもしれません。世の中に「いつも正しい解」というのはな
いことが多いのですよね。

                                まつもと ゆきひろ /:|)

In This Thread