LoginSignup
0
0

More than 1 year has passed since last update.

【Ruby】インスタンスの生成

Posted at

※初心者向け
※アウトプット練習の為

開発環境
rails 6.0.4.4
ruby 2.6.5

問題

クラスFruitを以下の仕様で定義してください。

image.png
実行結果は以下のようになります。

採れたて新鮮な果実です
リンゴは120円です
オレンジは200円です
イチゴは60円です

雛形


class Fruit
 def クラスメソッド
   # 正しくメソッドを定義した上で、ここに処理を記入してください
 end

 def initialize
   # ここに処理を記入してください
 end

 def インスタンスメソッド
   # 正しくメソッドを定義した上で、ここに処理を記入してください
 end
end

# 3つのインスタンスを生成してください

# クラスメソッドを呼び出し、「採れたて新鮮な果実です」と表示してください
# インスタンス毎にインスタンスメソッドを呼び出し、「【名前】は【価格】円です」と表示してください

解答

class Fruit

 def self.fresh
   puts "採れたて新鮮な果実です"
 end

 def initialize(name, price)
   @name = name
   @price = price
 end

 def introduce
   puts "#{@name}#{@price}円です"
 end
end

apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

Fruit.fresh
apple.introduce
orange.introduce
strawberry.introduce

解答

まずは、インスタンスの生成と、インスタンス毎のインスタンス変数(@name@price)を定義します。
ポイントは、インスタンス生成時の引数と、initializeメソッドです。
initializeメソッドは、newメソッドの引数を受け取ることができます。
インスタンス毎の名前と価格をnewメソッドから受け取り、インスタンス変数(@name@price)に代入しましょう。

class Fruit
 def クラスメソッド
   # ここに処理を記入してください
 end

 def initialize(name, price)
   @name = name
   @price = price
 end

 def インスタンスメソッド
   # 正しくメソッドを定義した上で、ここに処理を記入してください
 end
end


apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

# クラスメソッドを呼び出し、「採れたて新鮮な果実です」と表示してください
# インスタンス毎にインスタンスメソッドを呼び出し、「【名前】は【価格】円です」と表示してください

次に、クラスメソッドfreshを定義します。
処理内容通りの文言が出力されるよう、putsメソッドを用いて記述しましょう。

class Fruit
 def self.fresh
   puts "採れたて新鮮な果実です"
 end

 def initialize(name, price)
   @name = name
   @price = price
 end

 def インスタンスメソッド
   # 正しくメソッドを定義した上で、ここに処理を記入してください
 end
end


apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

# クラスメソッドを呼び出し、「採れたて新鮮な果実です」と表示してください
# インスタンス毎にインスタンスメソッドを呼び出し、「【名前】は【価格】円です」と表示してください

続いて、インスタンスメソッドを定義します。
各インスタンスに対して処理内容通りの文言が出力されるよう、putsメソッドを用いて記述をしましょう。

class Fruit
 def self.fresh
   puts "採れたて新鮮な果実です"
 end

 def initialize(name, price)
   @name = name
   @price = price
 end

 def introduce
   puts "#{@name}#{@price}円です"
 end
end


apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

# クラスメソッドを呼び出し、「採れたて新鮮な果実です」と表示してください
# インスタンス毎にインスタンスメソッドを呼び出し、「【名前】は【価格】円です」と表示してください

最後に、定義したクラスメソッドとインスタンスメソッドを呼び出します。
クラスメソッドは「クラス名.メソッド名」で、インスタンスメソッドは「インスタンス.メソッド名」で呼び出しましょう。

class Fruit

 def self.fresh
   puts "採れたて新鮮な果実です"
 end

 def initialize(name, price)
   @name = name
   @price = price
 end

 def introduce
   puts "#{@name}#{@price}円です"
 end
end

apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)

Fruit.fresh
apple.introduce
orange.introduce
strawberry.introduce

以上です。

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