Ruby復習①からの続きです。
クラスの定義
Rubyファイル
class Menu #クラスは大文字で始める
end
attr_accessor
Rubyファイル
class Menu
attr_accessor :name # :nameはインスタンス変数
end
複数のインスタンス変数
Rubyファイル
class Menu
attr_accessor :name
attr_accessor :price
end
インスタンスの生成
Rubyファイル
class Menu
.
.
end
menu1 = Menu.new
#menu1にMenuクラスから生成したインスタンスを代入した
インスタンス変数に値を代入する
```Ruby:Rubyファイル class Menu attr_accessor :name attr_accessor :price end menu1 = Menu.new menu1.name = "すし" puts menu1.name ```コンソール
すし
インスタンスメソッド
クラスの中でメソッドを定義し、呼び出す
クラスの中で定義したメソッドはインスタンスメソッドと呼ばれる
Rubyファイル
class Menu
attr_accessor :name
attr_accessor :price
def show
puts "私はメニューです"
end
end
menu1 = Menu.new
menu1.show
コンソール
私はメニューです
インスタンスメソッドの中でインスタンス変数を使う
Rubyファイル
class Menu
attr_accessor :name
attr_accessor :price
def show_name
puts "私は#{self.name}です"
end
end
menu1 = Menu.new
menu1.name = "おでん"
menu1.show_name
コンソール
私はおでんです
initializeメソッド
Menu.newでMenuインスタンスが生成された直後に、initializeメソッドが呼び出され、その中の処理が実行されるRubyファイル
class Menu
.
.
def initialize
puts "メニューが生成されました"
end
.
.
end
menu1 = Menu.new
コンソール
メニューが生成されました
initializeメソッドの引数
Rubyファイル
class Menu
.
.
def initialize(message)
puts message
end
.
.
end
menu1 = Menu.new("こんにちは")
コンソール
こんにちは
require
menu.rb
class Menu
.
.
end
index.rb
require "./menu"
.
.
gets.chomp
gets.chompと記述すると入力を受け付けることができるRubyファイル
puts "名前を入力してください"
name = gets.chomp
puts "あなたの名前は#{name}です"
コンソール
名前を入力してください
Tanaka #自分で打ち込む
あなたの名前はTanakaです
gets.chomp.to_i
gets.chomp.to_iと記述すると数値の入力を受け付けることができるRubyファイル
puts "数字を入力してください"
number = gets.chomp.to_i
puts "#{number}の2倍は{number * 2}です"
コンソール
数字を入力してください
3 #自分で打ち込む
3の2倍は6です
継承
food.rb
require "./menu"
class Food < Menu
end
#Menuが親クラス、Foodは子クラス
super
オーバーライドしたメソッドの中で、superとすることで、 親クラスの同名のメソッドを呼び出すことができるmenu.rb
class Menu
attr_accessor :name
attr_accessor :price
def initialize(name:, price:)
self.name = name
self.price = price
end
end
food.rb
class Food < Menu
attr_accessor :calorie
def initialize(name:, price:, calorie:)
super(name: name, price: price) #親クラスの同名メソッドを呼び出す
self.calorie = calorie
end
.
.
end
Dateクラス
Dateクラスの読み込み
Dateクラスは日付を扱うRubyファイル
require "date"
.
.
Dateクラスのインスタンス
Rubyファイル
require "date"
date1 = Date.new(2021, 1, 28) #引数に「年・月・日」を渡して、Dateインスタンスを生成する
puts date1
コンソール
2021-1-28
Dateクラスのインスタンスメソッド
Rubyファイル
require "date"
date1 = Date.new(2021, 1, 28)
puts date1.sunday? #sunday?メソッドはDateクラスのインスタンスの日付が日曜日かどうかを真偽値で返す
コンソール
false
今日の日付のDateインスタンスを取得する
```Ruby:Rubyファイル require "date" date1 = Date.today puts date1 ``` ```:コンソール 2021-1-28 #今日の日付が出力される ```クラスメソッドを呼び出す
Rubyファイル
class Menu
.
.
def Menu.is_discount_day?
.
.
end
end
puts Menu.is_discount_day?
コンソール
true
ri コマンド
ri コマンドで知りたい命令、オブジェクトのドキュメントを見ることができるprint, put, p
Rubyファイル
print "hello world" #渡したオブジェクトを文字列にして表示させるための命令
puts "hello world" #printの動作+ 改行が付く
p "hello world" #デバッグ用
コンソール
hello worldhello world
"hello world"