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万ドルの武器を扱っていました