0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】クラスとインスタンス

Posted at

はじめに

クラスとインスタンスに苦手意識があり、復習を兼ねて記事に残しておこうと思い執筆しました。
飲み物を売っているお店を例にして、ターミナルで以下のように出力できるようにしたいと思います。

ターミナル
いらっしゃいませ!
水は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
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?