Rubyのクラスとインスタンスの作成
Rubyのクラスとは設計図のようなものです。
モノを組み立る設計図がクラスであり、そこで作られたモノがインスタンスです。
実際にコードを見てみましょう。
【コード】
#クラス
class Cat #メソッドのまとまり
def initialize(name,weight)
@name = name
@weight = weight
end
def eat(food)
@weight += 1
p "体重:#{@weight}kg"
end
def cry
p "私は#{@name}"
end
end
#インスタンス変数c
cat1 = Cat.new("一郎",5)
cat2 = Cat.new("二郎",3)
cat1.eat("魚")
cat2.eat("魚")
cat1.eat("魚")
【解説】
ネコが魚を食べると体重が1キロ増えるという処理です。
クラスは
class クラス名
@name = 値
end
で作成します。
class Cat #メソッドのまとまり
def initialize(name,weight)
@name = name
@weight = weight
end
最初のclassの後の変数は必ず大文字になります。
initializeメソッドはインスタンスの生成時に必ず実行したい処理をメソッドを呼び出すことなく実行することができます。
initialize(name,weight)のように引数を入れると@name = name、@weight = weightの値を引き渡して処理する事ができます。
ちなみに@変数はメンバ変数と言いインスタンス変数からアクセスできるようにします。
インスタンス変数は処理を実体化させるもので
cat1 = Cat.new("一郎",5)
cat2 = Cat.new("二郎",3)
cat1.eat("魚")
処理結果> 一郎 5
cat2.eat("魚")
処理結果>二郎 4
cat1.eat("魚")
処理結果> 一郎 6
cat1に一郎、5Kg、cat2に二郎、3Kgとします。
cat1 = Cat.new("一郎",5)がcat1.eat("魚")でこの魚がdef eat(food)の引数foodに代入されます。
そして、5が @weightに代入され += 1で6となります。
次のcat2 = Cat.new("二郎",3)はinitializeメソッドで初期化されまた違うデータとなりcat1と同じ流れで処理され4となります。
1番最後はまたcat1の処理でこれは先ほどのデータが残って2周するのでweightが 5 なのでなこれに+= 1なので6となります。
【結論】
Rubyのクラスはちょっと難解なとこです。
いきなり全部覚えるはなかなか大変です。
クラスは処理の型でインスタンス変数の生成で処理を実際に出すってとこは理解しておきましょう。
後はひたすらコード書いて慣れることです。
取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com