Review Progate Ruby(クラス)

・クラスとは
動かしたいアプリケーションの設計図
クラスの中に部品となる処理を入れていく

書き方
class Menu(クラス名)
 attr_accessor :name(インスタンス名) *インスタンス変数を定義
end  *忘れずに

・インスタンスの生成
 作成したクラスの処理を使用するためには、インスタンスを生成する必要がある。「変数名=クラス名.new」で使用していく(複数使用することが多いので)。

書き方
class Menu
  attr_accessor :name
  attr_accessor :price
end
menu1 = Menu.new
menu1.name = " ゴルゴンゾーラ"
menu1.price = "80000"


・クラスの中でのメソッド定義
 もちろんクラスの中でも機能(メソッド)を定義して使用していく(インスタンスメソッド)。
 引数も使える。
ex.)
class Menu
  attr_accessor :name
  attr_accessor :price
  def show(data)
     return "#{data}という企業の提供です"
  end

end
menu1 = Menu.new
puts menu1.show("ムラクモ")


・インスタンスメソッド
 クラスの中のインスタンス変数に対して呼び出すメソッド
引数を受け取ったり戻り値を返したりできる。上記参照。


・クラスの中身を出力する self
 生成したインスタンスに代入した数値を直接反映させる特殊なメソッド
書き方
ex.1)
class Menu
  attr_accessor :name
  attr_accessor :price
  def info
     return "#{self.name} #{self.price}円"
   end
end
menu1 = Menu.new
menu1.name = "ゴルゴンゾーラ"
menu1.price = 80000
puts menu1.info

=ゴルゴンゾーラ 80000円

ex2.)*計算
class Menu
  attr_accessor :name
  attr_accessor :price

  def info
     return "#{self.name} #{self.price}円"
  end

   def get_total_price(count)
        total_price = self.price * count  *priceにカウントをかけたものを代入
    if count >= 3
      return total_price - 100
    end
      return total_price
    end  
*カウントが3以上だったらpriceから100マイナス
3より小さかったらそのまま計算結果出力
*endは忘れないように注意、はじめに作ってしまう。
end

menu1 = Menu.new
menu1.name = "ピザ"
menu1.price = 800

* get_total_priceに引数を与えて呼び出す
puts menu1.get_total_price(3)
=2300


・initialezeメソッド
 インスタンスを生成した直後に処理を実行できる
class = Menu.new ←の後すぐクラスの中身が実行される

書き方ex.1)
class Menu
         :
         :
    def initialize
         puts "まだ戦争は終わっちゃいないんだ"
    end
end
menu1 = Menu.new   ←*ここで実行されちゃう

まだ戦争は終わっちゃいないんだ

書き方ex.2)(変数を扱う
class Menu
          :
          :
      def initialize
          self.name = "ランボー"    *ここでもう出力結果を代入しちゃう
      end
      def info
           return "#{name}、もう戦争は終わったんだ"
      end
end
end

menu1 = Menu.new
puts menu1.info
=ランボー、もう戦争は終わったんだ

・initializeメソッドに引数を渡す
 上記のやり方だと、ずっとnameがランボーなので、引数を渡す。
 initializeメソッドにも( )をつけて、Menu.new(引数)で引数を渡せる。
 キーワード変数も使える(今までやったのが出てくる)
書き方
  class Menu
             :
             :
     def initialize(name:,price:) 
        self.name = name
        self.price = price
     end
     def info
         return "#{self.name}はベトナムでは#{self.price}ドルの武器を扱っていました"
     end         
     end
  end

menu1 = Menu.new(name:"ランボー", price: 2000万*数字)
puts menu1.info

=ランボーはベトナムでは2000万ドルの武器を扱っていました


この記事が気に入ったらサポートをしてみませんか?