2022/10/2(日) 現場Rails Chapter1_1 オブジェクトを理解してみよう

クラスとは

全てのオブジェクトが持つそのオブジェクトの原型のことです。

"おはよう".class
=> String
  • 「おはよう」という文字列のクラスを調べると、Stringクラスということが分かります。
  • classというメソッドを使って、どのクラスに属するのかということを調べます。

オブジェクトに対して、どんな機能を持たせるかは、そのオブジェクトがどのクラスに属するかによって決まります。クラスによって予め持っているメソッドなどが異なるためです。

"おはよう".length
=> 4

4.length
(irb):4:in `<main>': undefined method `length' for 4:Integer (NoMethodError)
  • 「おはよう」という文字列オブジェクトは、Stringクラスに属するため文字数を調べることができるlengthメソッドを使用することができます。
  • 一方で、integerクラスに属する数値の4は、lengthメソッドを使用することができません。これは、integerクラスがlengthメソッドを持っていないからです。

今まで出てきたStringクラスやIntegerクラスのようにRubyが標準的に用意しているクラスの他にも、自分のやりたいことに合わせてクラスを作成することもできます。

クラスとインスタンス

クラスは、オブジェクトの原型であると説明しました。代わって、インスタンスは、クラスを元にして作られたオブジェクトのことです。 1クラスからは、インスタンスを生み出すことができ、作成されたインスタンスは、クラスが持つ属性やメソッドを持っています。

例) 分かりやすく例えると、クラスはたい焼きの金型であると言えます。金型を元にして、実際に作られるたい焼きがインスタンスになります。

クラスであるたい焼きの金型があることで、小倉あんのたい焼きや抹茶味のたい焼き、クリーム味のたい焼きなどの様々なたい焼きインスタンスを作り出すことができるのです。

変数

変数とは、コンピュータプログラムのソースコードなどで、データを一時的に記憶しておくための領域に固有の名前を付けたもの。
e-Words

label = "おはよう"
=> "おはよう"

p label
=> "おはよう"     
  • あるオブジェクトを参照したい時にそのオブジェクトの参照口を指し示してアクセスできるように名前をつけたものです。
  • labelという変数に文字列「おはよう」を代入すると、変数を使うだけで、文字列「おはよう」を参照できるようになります。

変数には、プログラム中の一定の処理の範囲で使われ、その範囲が終わったら捨てられるローカル変数とオブジェクトの内部に保持されてオブジェクトが存在する限り一緒に存在するインスタンス変数があります。

  • ローカル変数とは、プログラム中のブロック(関数やメソッドなど)の内部で宣言され、その範囲内でのみ有効な変数のことです。
  • インスタンス変数とは、個々のインスタンスごとの固有の変数です。インスタンスの情報が入った変数のことで、メンバ変数、フィールドとも言われます。

メソッド

オブジェクトの振る舞いをメソッドと言います。色々な処理をひとつにまとめてメソッドとして定義することで、何度も再利用(実行)ができるようになります。

インスタンスに対して、呼び出せるメソッドはインスタンスメソッドと呼ばれ、クラス内に定義します。インスタンスメソッドをクラス内に定義することで、別のインスタンスにも同じような振る舞いをさせることができるのです。

class Human
    # メソッドの定義
    def walk
        puts "歩きます"
    end
end

# Humanクラスからインスタンスを生成
humanA = Human.new()

# インスタンスに対して、インスタンスメソッドを呼び出す
humanA.walk # => 歩きます

参考

現場で使える Ruby on Rails 5速習実践ガイド

e-Words