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

From: rubikitch@...
Date: 2008-01-04 16:35:43 UTC
List: ruby-list #44432
From: Akira Hayakawa <ruby@i-mail.jp>
Subject: [ruby-list:44431] コンストラクタの引数について&インスタンス変数の持ち方について
Date: Sat, 5 Jan 2008 00:16:02 +0900

るびきちです。

> ぼくはRubyが始めてで、静的なオブジェクト指向をやったことがありません。
> なので、Javaを3日で集中的に勉強して、目の前にある課題を書こうとしましたが、すごくめんどくさい事が分かりました。
> いちいち型をつけないといけないのは、すごくめんどくさい事なのですね。
> というわけで、Rubyに戻ってきました。

なるほど。前のメールの返答がないですが、理解できました?

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

車とタイヤの場合ならこっちでしょう。
車のタイヤならわかりますが、車の直径ってなに?って感じですから。

> 今、ある座標上の点を表すクラスPointというものを考えます。
> このPointは当然、x座標とy座標を持つと思いますが、ここで質問です。
> 
> class Point
>   def initialize(x, y)
>     @x = x
>     @y = y
> の形で持つのと、xとyは所詮座標であり、仲間であるという事を意識する為に

あえてクラスを定義するならばこっちです。

でもRubyの場合は2要素の配列で座標は表現できます。

> class Point
>   @where[0] = x
>   @where[1] = y

そもそもこっちだと動きません。

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

考えすぎです。
考える前に、試しになにか動くプログラムを書いてみてください。
実際に動かしてみて見えてくるものです。

初心者のうちはクラスを定義することは考えないほうがいいと思います。
Rubyはすでに使える組み込みクラスがたくさんあります。
まずは、リファレンスマニュアル片手にirbを使って
数値、文字列、配列、ハッシュなどの組み込みクラスで遊んでみてください。
既存のクラスを「使うオブジェクト指向」から始めましょう。
そして、オブジェクト指向の雰囲気を感じてください。
クラス定義はその後でも遅くありません。

Javaをやった人にありがちですが、毎回クラスを定義しないといけないという考えは
捨ててください。Rubyは「使うオブジェクト指向」のみで十分プログラムが書けます。

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

In This Thread