やったこと
クラスについての学び
用語 | 説明 | 備考 |
---|---|---|
クラス | 設計図のようなもの | - |
インスタンス | 設計図から生成されたもの | - |
Class クラス名 end | クラス定義の仕方 | Class Car end |
〇〇 = クラス名.new | クラスをインスタンス化 | car = Car.new |
@変数名 | インスタンス変数。インスタンスごとの変数 | @color |
def color=(color) @color = color end | メソッド。インスタンス変数に値を代入したいときに定義。一連の処理を定義 | 定義したメソッドをセッターと呼ぶ |
def color @color | メソッドを呼び出すとき | 定義したメソッドをゲッターと呼ぶ。car.color = "red" puts car.color |
def initialize @color = "red" end | initializeメソッド。クラスがインスタンス化された時に実行される | - |
attr_reader | ゲッターを簡単に書ける | attr_reader :color |
attr_writer | セッターを簡単に書ける | attr_writer :color |
attr_accessor | ゲッター,セッターを簡単に書ける | attr_accessor :color |
### クラス定義
Class Car
end
### インスタンス化
car = Car.new
### インスタンス変数
Class Car
@color
end
### メソッド
Class Car
### セッターと呼ぶ
def color=(color)
@color=color
end
end
### 上記メソッドに代入(セッターと呼ぶ)
car = Car.new
car.color = "red"
=======================
Class Car
### ゲッターと呼ぶ
def color
@color
end
def color=(color)
@color=color
end
end
### 上記メソッドに代入
car = Car.new
car.color = "red"
### ゲッターから呼び出し
puts car.color
=======================
Class Car
def initialize(color)
@color = color
end
### ゲッターと呼ぶ
def color
@color
end
def color=(color)
@color=color
end
end
### 上記initializeにredを渡す
car = Car.new("red")
### 上記initializeにredを渡したものを呼び出し
puts car.color
=======================
Class Car
# ゲッター
attr_reader :color
# セッター
attr_writer :color
def initialize(color)
@color = color
end
end
### 上記initializeにredを渡す
car = Car.new("red")
### 上記initializeにredを渡したものを呼び出し
puts car.color
=======================
Class Car
# セッター&ゲッター
attr_accessor :color
def initialize(color)
@color = color
end
end
### 上記initializeにredを渡す
car = Car.new("red")
### 上記initializeにredを渡したものを呼び出し
puts car.color
クラスメソッド
クラスから直接呼ぶことができる
selfをつける
クラス変数
クラス自体に値を保持することができる変数
参考コード
class User
REASION = 'USA'
@@count = 0
def initialize(name)
@name = name
@@count += 1
end
def hello
puts "I am #{@name}. #{@@count} instance(s)."
end
def self.info
puts "#{@@count} instance(s).Reasion: #{REASION}"
end
end
emma = User.new('Emma')
emma.hello
olivia = User.new('Olivia')
olivia.hello
mary = User.new('Mary')
mary.hello
### 出力結果参考
⇨ I am Emma. 1 instance(s).
⇨ I am Olivia. 2 instance(s).
⇨ I am Mary. 3 instance(s).
----------------------------------------
User.info
User.info
User.info
### 出力結果参考
⇨ 1 instance(s). Reasion: USA
⇨ 2 instance(s). Reasion: USA
⇨ 3 instance(s). Reasion: USA
----------------------------------------
### 出力結果参考
puts User::REASION
⇨ USA
参考コード(クラス継承)
class User
REASION = 'USA'
@@count = 0
def initialize(name)
@name = name
@@count += 1
end
def hello
puts "I am #{@name}. #{@@count} instance(s)."
end
def self.info
puts "#{@@count} instance(s).Reasion: #{REASION}"
end
end
emma = User.new('Emma')
emma.hello
olivia = User.new('Olivia')
olivia.hello
mary = User.new('Mary')
mary.hello
### 出力結果参考
⇨ I am Emma. 1 instance(s).
⇨ I am Olivia. 2 instance(s).
⇨ I am Mary. 3 instance(s).
----------------------------------------
User.info
User.info
User.info
### 出力結果参考
⇨ 1 instance(s). Reasion: USA
⇨ 2 instance(s). Reasion: USA
⇨ 3 instance(s). Reasion: USA
----------------------------------------
### 出力結果参考
puts User::REASION
⇨ USA