はじめに
前回の続き。
【自分用】Rubyの基礎を振り返る。①
Rubyのあれこれ②
クラス
クラスは、値の元となるものです。値の共通のルールを定義。
ここで決めるルールは、共通の属性と処理(メソッド)。
例えるのであればクラスが設計図(雛形)でインスタンスが車(普通車・パトカー・スポーツカーなど。)
class Car
# 変数やメソッドの定義
end
インスタンス
クラスを元にして作られるデータ。クラスとは違い実態を持つ。
newメソッド
クラスは、定義しなくてもnewという特別なメソッドをはじめから持っている。
使用したクラスのインスタンスを生成して返す。
# インスタンスを生成し変数で扱う
変数名 = クラス名.new
例:
class Car
end
fire_truck = Car.new # Carクラスのインスタンスを生成
puts fire_truck # インスタンスを出力
インスタンスメソッド
インスタンスが使用できるメソッドクラスに定義しておく。
インスタンスメソッドは、インスタンスごとの個別の情報(属性値)を使った処理に使用する。
class クラス名
def メソッド名
# 処理
end
end
インスタンスメソッドの呼び出し
インスタンス名.メソッド名(引数)
例:
class Car
def ride_car()
end
end
fire_truck = Car.new()
fire_truck.ride_car()
インスタンス変数
データが持つ属性を定義する変数。
インスタンス変数は、クラス内のメソッドの中で、変数名の始めにアットマーク@
を1つつけて定義。
class クラス名
def メソッド名
@変数名 = 値 # インスタンス変数
end
end
例:
class Car
def ride_car(ride_number)
@ride_number = ride_number
end
end
fire_truck = Car.new()
fire_truck.ride_car(3)
クラスメソッド
クラスが使用できるメソッド。クラスで共通の情報を使った処理に使用。
class クラス名
def self.メソッド名
# 処理
end
end
クラスメソッドの呼び出し
クラス名.メソッド名(引数)
newメソッド
# インスタンスを生成するためにクラスメソッドとして定義されている
user = User.new
例:
class Car
def self.run
puts '走行します'
end
def ride_car(ride_number)
@ride_number = ride_number
end
end
fire_truck = Car.new()
fire_truck.ride_car(3)
Car.run
メソッドと変数の違いを整理
クラスメソッド | インスタンスメソッド | |
---|---|---|
概念の違い | クラス全体で共通したふるまい | クラスから生成されたインスタンスのふるまい |
使い方の違い | 定義するときは、self.を頭につける。クラスのみに用いることができる。 | インスタンスのみに用いることができる |
コード | def self.メソッド名end | def メソッド名 end |
ローカル変数 | インスタンス変数 | |
---|---|---|
ふるまい | 記述してあるインスタンスメソッド内でしか使用できない | 別のインスタンスメソッド内でも使用できる |
書き方 | 何も頭につかない | 頭に@がつく |
initializeメソッド
インスタンスが生成された瞬間に、生成されたそのインスタンスが実行する処理を定義するインスタンスメソッド。
class クラス名
def initialize
# インスタンス生成したときに実行される処理(以下は例)
puts "クラス名のインスタンスが生成されました"
end
end
インスタンス = クラス名.new # initializeメソッドが呼ばれ文字が表示される
例:
class Car
def initialize(car_name, car_model, capacity)
@name = car_name
@model = car_model
@capacity = capacity
end
def self.run
puts '走行します'
end
def ride_car(ride_number)
@ride_number = ride_number
end
end
fire_truck = Car.new('消防車', '大型車', 5)
fire_truck.ride_car(3)
Car.run
終わりに
以上の2記事がRubyの基礎部分。
というか基礎のきの半分くらい。もしかしたらきの半分の半分かもしれない。
でも基礎概念大事!