[#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:44434] Re: [ruby-list:44431] コンストラクタの引数について&インスタンス変数の持ち方について

From: "Shingo Hagiwara" <rindou@...>
Date: 2008-01-04 16:47:39 UTC
List: ruby-list #44434
萩原と言います。

基本的には全て趣味によると思います。
ただ、自分の場合は以下のようにするかもしれません。

(1)
# ある車用のFactory
Class HogeCarFactory
 def create
   tire = Tire.new
   tire.diameter = 10 #数値は適当
   car = Car.new
   car.tire = tire

   return car
 end
end

#車クラス
Class Car
  def initalize
   @tire=nil
 end
 attr_accessor :tire
end

#タイヤクラス
Class Tire
 def initialize
   @diameter=nil
 end
 attr_accessor :diameter
end

car_a = HogeCarFactory.new.create

(2)
Class Point
 def initialize(x=0,y=0)
   @x=x
   @y=y
 end

 def to_array
   return [@x,@y]
 end

 attr_accessor :x, :y
end

point = Point.new(2,3)
p point.x
p point.y
p point.to_array[0]
p point.to_array[1]
point.to_array.each{|value|
 p value
}

なお、Rubyに通しているわけではないので、どこか間違っていたらすいません。
08/01/05 に Akira Hayakawa<ruby@i-mail.jp> さんは書きました:
> 度々オブジェクト指向についての質問ですいません。
> 先日は、メソッドが他の自作オブジェクトを引数にとってよいかという話でしたが、
> ぼくはRubyが始めてで、静的なオブジェクト指向をやったことがありません。
> なので、Javaを3日で集中的に勉強して、目の前にある課題を書こうとしましたが、すごくめんどくさい事が分かりました。
> いちいち型をつけないといけないのは、すごくめんどくさい事なのですね。
> というわけで、Rubyに戻ってきました。
>
> そこで質問が2つあります。
>
> (質問1)
> 今、AとBというクラスを考えます。
> BはAにオブジェクトコンポジションでもたれる事にします。
> 例えば、
> Aが車で、Bがタイヤだとします。
> ここで、Aは、コンストラクタの引数で
>
> class A
>   def initialize(class_B_instancere)
>     @tyre = class_B_instance
>
> ととるのがいいのか、
> もしくは、Bのコンストラクタが、タイヤの直径だとします。
> つまり、
>
> class B
>   def initialize(wheel_size)
> という形であるとして、
>
> class A
>   def initialize(wheel_size)
>     @tyre = B.new(wheel_size)
>
> とするのがいいか、どちらでしょう?
>
> (質問2)
> 今、ある座標上の点を表すクラスPointというものを考えます。
> このPointは当然、x座標とy座標を持つと思いますが、ここで質問です。
>
> class Point
>   def initialize(x, y)
>     @x = x
>     @y = y
> の形で持つのと、xとyは所詮座標であり、仲間であるという事を意識する為に
> class Point
>   @where[0] = x
>   @where[1] = y
> の形で持つのはどちらがいいのでしょうか?
>
> ぼく個人の意見では後者ではないかというのが今の考えです。
> なぜなら何かアルゴリズムをいじる時に、数字をindexとして持っていた方が便利だと思うからです。
> 前者は例えば、テーブルの値を
> a00 = 3
> a10 = 1
> のように持つのと同様で、後者は
> a[0][0] = 3
> a[1][0] = 1
> のように持つのと同様ではないかと考えています。
>
> 以上2点を質問します。
> ぼくは考えすぎでしょうか・・・
> --
> Akira Hayakawa <ruby@i-mail.jp>
>
>

In This Thread