0
0

More than 1 year has passed since last update.

【自分用】Rubyの基礎を振り返る。②

Posted at

はじめに

前回の続き。
【自分用】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の基礎部分。
というか基礎のきの半分くらい。もしかしたらきの半分の半分かもしれない。
でも基礎概念大事!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0