プログラミングの勉強日記
2020年7月11日 Progate Lv.175
RubyⅣ
クラスとインスタンス
ここでは簡単にクラスとインスタンスについて説明する。プログラミングでメニューという「もの」を作るためには、まずその設計図が必要でとなる。設計図をクラス、「もの」をインスタンスという。(設計図(クラス)をもとに「もの」(インスタンス)を生成)なので、インスタンスを生成するためにはクラスを用意し、クラスからインスタンスを作成、そしてインスタンスに情報を追加する。
クラスの定義
クラスはclass クラス名
で定義できる。クラスは必ず大文字ではじめ、end
を忘れずに書く。
class Menu
end
attr_accessor
インスタンス変数を直接変更して操作ができるようにするもの。情報を持たせるためにattr_accessor シンボル
と書く。1つのクラスに対して複数のインスタンス変数を使うこともできる。
class Menu
attr_accessor :name
end
インスタンスの生成
クラスを元に新しくインスタンスを生成するためにはクラス名.new
とする。変数名=クラス名.new
とすることで生成したインスタンス変数を代入できる。
インスタンスに情報を持たせるためには、クラスで用意したインスタンス変数に値を代入する。インスタンス.変数名=値
でインスタンス変数に値をセットすることができる。
class Menu
#処理
end
# 変数menu1にMenuクラスからのインスタンスを生成し、代入する
menu1=Menu.new
menu1.name="すし"
クラスの中でメソッドを使う
クラスの中で定義したメソッドはインスタンスに対して使うようにして呼び出す。インスタンス.メソッド名
で呼び出す。クラスの中で定義したメソッドを呼び出すものをインスタンスメソッドという。
class Menu
attr_accessor :name
attr_accessor :price
#クラスの中でメソッドを定義
def show
puts "menu"
end
end
menu1=Menu.new
# クラスの中で定義したメソッドの呼び出し
menu1.show
menu
インスタンスメソッド
クラスの中で定義したインスタンスに対して呼び出すメソッドのこと。引数を受け取ったり戻り値を返したりすることができる。インスタンスが持つ情報である「インスタンス変数」とインスタンスに対して呼び出すインスタンスメソッドはクラスの中で定義する。
class Menu
#処理
def show(data)
return "#{data}です"
end
end
menu1=Menu.new
puts menu1.show("メニュー")
メニューです
インスタンスメソッドの中でインスタンス変数を使う
インスタンスメソッドの中では特殊な変数self
を用いてself.変数名
とすることで、インスタンス変数を扱える。インスタンスメソッドでは変数self
に呼び出したインスタンス自身が代入されている。
class Menu
#処理
def show_name
puts "#{self.name}です"
end
end
menu1=Menu1.new
menu1.name="すし"
# インスタンスメソッドの呼び出し
menu1.show_name
すしです
initializeメソッド
インスタンスを生成した直後に処理を実行できる。クラス名.new
でインスタンスを生成した直後に自動で呼び出される。
class Menu
#処理
def initialize
puts "メニュー"
end
end
# Menu.newが実行されると自動でinitializeメソッドを呼び出す
menu1=Menu.new
メニュー
インスタンスメソッドの中ではself.変数名
でインスタンス変数を扱うことができ、self.変数名=値
でインスタンス変数に値を代入する。
class Menu
#処理
def initialize
self.name="すし"
end
end
menu1=Menu.new
puts menu1.name
すし
initializeメソッドの変数
initializeメソッドにも引数を渡すことができる。クラス.new
に対して引数を渡すことでその値を渡せる。もちろんキーワード引数を用いることもできる。
class Menu
#処理
def initialize(message)
puts message
end
end
menu1=Menu.new("Hello")
Hello
require
ファイルの読み込みを行う。(main文がわかれていて、別のファイルのクラスを読み込みたいときに使う)
requie "./menu"
menu1=Menu.new(name: "すし"
class Menu
attr_accessor :name
attr_accessor :price
end
gets.chomp
入力を受け付けるときに使う。このコードが実行されるとコンソールが入力待機状態になる。変数=gets.chomp
とすることでエンターキーを押されるまで入力された値を変数に代入できる。
puts "名前の入力"
name=gets.chomp
puts "あなたの名前は#{name}です"
名前の入力
田中(入力する)
あなたの名前は田中です
数値を受け取る場合は、gets.chomp.to_i
とすることで入力された内容を数値に変換できる。
puts "数字の入力"
number=gets.chomp.to_i #入力された内容を数値に変換
puts "#{number}の2倍は#{number*2}です"