LoginSignup
0
1

More than 1 year has passed since last update.

Ruby インスタンスの生成

Posted at

クラスとインスタンスの問題を解いてみた。基礎の復習も兼ねて今日もアウトプット。

問題

クラスFruitを定義して以下のように出力してください。

採れたて新鮮な果実です
リンゴは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

最初に3つのインスタンスの生成とインスタンス変数(@name@price)を定義する。
initializeメソッドはnewメソッドの引数を受け取ることができるので、インスタンス毎の名前と価格をnewメソッドから受け取って代入する。

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

apple = Fruit.new("リンゴ", 120)以降が呼び出しの記述にあたり、
apple = Fruit.new("リンゴ", 120)でinitializeメソッドが呼び出されてインスタンス変数に値がそれぞれ代入され、Fruit.freshでクラスメソッド内の記述が呼び出され、apple.freshで最初に代入されたインスタンス変数が使われてインスタンスメソッド内の記述が呼び出される流れになる。

0
1
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
1