はじめに
クラスとインスタンスに苦手意識があり、復習を兼ねて記事に残しておこうと思い執筆しました。
飲み物を売っているお店を例にして、ターミナルで以下のように出力できるようにしたいと思います。
ターミナル
いらっしゃいませ!
水は100円です
コーラは150円です
モンスターは200円です
クラスの定義
まずクラスを定義します。
クラスの定義は以下のように行います。
class クラス名
end
クラス名をDrinkとします。
大文字から始めるようにします。
drink.rb
# クラスの定義
class Drink
end
インスタンスの生成
newメソッドを使ってインスタンスを生成します。
変数名 = クラス名.new
この後に定義するinitializeメソッドに情報を渡せるように引数も記述します。
drink.rb
# クラスの定義
class Drink
end
# インスタンスの生成
water = Drink.new("水", 100)
cola = Drink.new("コーラ", 150)
monster = Drink.new("モンスター", 200)
initializeメソッドの定義
initializeメソッドを定義します。
newメソッドの引数を(name, price)で受け取り、@nameと@priceにそれぞれ代入しています。
drink.rb
# クラスの定義
class Drink
# initializeメソッドの定義
def initialize(name, price)
@name = name
@price = price
end
end
# インスタンスの生成
water = Drink.new("水", 100)
cola = Drink.new("コーラ", 150)
monster = Drink.new("モンスター", 200)
クラスメソッドの定義
クラスメソッドの定義はクラスに以下のような記述をします。
メソッド名の前にself.を付けます。
def self.メソッド名
end
putsメソッドを使い、「いらっしゃいませ!」と出力できるようにします。
drink.rb
# クラスの定義
class Drink
# クラスメソッドの定義
def self.welcome
puts "いらっしゃいませ!"
end
# initializeメソッドの定義
def initialize(name, price)
@name = name
@price = price
end
end
# インスタンスの生成
water = Drink.new("水", 100)
cola = Drink.new("コーラ", 150)
monster = Drink.new("モンスター", 200)
インスタンスメソッドの定義
インスタンスメソッドの定義はクラスの中に以下のように記述します。
def メソッド名
end
各インスタンスに対して「【名前】は【価格】円です」と出力していきたいので、putsメソッドを使用します。
drink.rb
# クラスの定義
class Drink
# クラスメソッドの定義
def self.welcome
puts "いらっしゃいませ!"
end
# initializeメソッドの定義
def initialize(name, price)
@name = name
@price = price
end
# インスタンスメソッドの定義
def introduce
puts "#{@name}は#{@price}円です"
end
end
# インスタンスの生成
water = Drink.new("水", 100)
cola = Drink.new("コーラ", 150)
monster = Drink.new("モンスター", 200)
クラスメソッドとインスタンスメソッドの呼び出し
最後に、定義したクラスメソッドとインスタンスメソッドを呼び出します。
書き方は以下の通りです。
# クラスメソッドの呼び出し
クラス名.メソッド名
# インスタンスメソッドの呼び出し
インスタンス名.メソッド名
drink.rb
# クラスの定義
class Drink
# クラスメソッドの定義
def self.welcome
puts "いらっしゃいませ!"
end
# initializeメソッドの定義
def initialize(name, price)
@name = name
@price = price
end
# インスタンスメソッドの定義
def introduce
puts "#{@name}は#{@price}円です"
end
end
# インスタンスの生成
water = Drink.new("水", 100)
cola = Drink.new("コーラ", 150)
monster = Drink.new("モンスター", 200)
# クラスメソッドの呼び出し
Drink.welcome
# インスタンスメソッドの呼び出し
water.introduce
cola.introduce
monster.introduce