問題
以下の要件を満たすVegetableクラスを実装しましょう。
条件
クラスメソッド
メソッド名:description
処理:"新鮮で美味しい野菜です"と表示する
インスタンス変数
name:野菜の名前
color:野菜の色
インスタンスメソッド
メソッド名:initialize
処理:引数で名前と色を受け取り、インスタンス変数に代入します。
メソッド名:details
処理:"【名前】は【色】です"と表示します。
雛形
class Vegetable
def クラスメソッド
# 正しくメソッドを定義した上で、ここに処理を記入してください
end
def initialize
# ここに処理を記入してください
end
def インスタンスメソッド
# 正しくメソッドを定義した上で、ここに処理を記入してください
end
end
# 3つのインスタンスを生成してください
# クラスメソッドを呼び出し、「新鮮で美味しい野菜です」と表示してください
# インスタンス毎にインスタンスメソッドを呼び出し、「【名前】は【色】です」と表示してください
期待している実行結果例
新鮮で美味しい野菜です
キャベツは緑色です
トマトは赤色です
にんじんはオレンジ色です
回答
class Vegetable
def self.description
puts "新鮮で美味しい野菜です"
end
def initialize(name, color)
@name = name
@color = color
end
def details
puts "#{@name}は#{@color}です"
end
end
# 3つのインスタンスを生成してください
cabbage = Vegetable.new("キャベツ", "緑色")
tomato = Vegetable.new("トマト", "赤色")
carrot = Vegetable.new("にんじん", "オレンジ色")
# クラスメソッドを呼び出し、「新鮮で美味しい野菜です」と表示してください
Vegetable.description
# インスタンス毎にインスタンスメソッドを呼び出し、「【名前】は【色】です」と表示してください
cabbage.details
tomato.details
carrot.details
解説
クラスメソッドの定義
def self.description
puts "新鮮で美味しい野菜です"
end
クラスメソッドself.description
を定義し、「新鮮で美味しい野菜です」を表示します。
インスタンス変数の初期化
def initialize(name, color)
@name = name
@color = color
end
initialize
メソッドで、インスタンス変数@name
と@color
を初期化します。
インスタンスメソッドの定義
def details
puts "#{@name}は#{@color}です"
end
details
メソッドで、インスタンス変数@name
と@color
を使って指定された形式で出力します。
インスタンスの生成
cabbage = Vegetable.new("キャベツ", "緑色")
tomato = Vegetable.new("トマト", "赤色")
carrot = Vegetable.new("にんじん", "オレンジ色")
Vegetableクラスのインスタンスを3つ生成し、それぞれに名前と色を渡します。
クラスメソッドの呼び出し
Vegetable.description
クラスメソッドdescription
を呼び出して、"新鮮で美味しい野菜です"と表示します。
インスタンスメソッドの呼び出し
cabbage.details
tomato.details
carrot.details
各インスタンスに対してdetails
メソッドを呼び出し、それぞれの名前と色を表示します。