Ruby入門season4~クラス分け~
やっほー。今回はクラスを分けることについてまとめていきます。
コードが増えてくると、一つのクラスに詰め込むのは精神衛生上良くないので、クラスを分けます。
分ける際には、require "./クラス"とします。こうすることでファイル内でファイル外のものを読み込めるようになります。
次に標準入力の受付についてです。ようやく登場しましたね。gets.chompを用いて標準入力を受け付けます。ただしこれは常に文字列として受け付けます。数値として受け付けたいときには、gets.chomp.to_iを使います。これで数値として入力を扱えます。
早速やってみます。これが実行クラス側です。
require "./menu" menu1 = Menu.new(name: "茶碗蒸し", price: 1000) menu2 = Menu.new(name: "釜めし", price: 1200) menu3 = Menu.new(name: "寿司", price: 3000) menu4 = Menu.new(name: "葛餅", price: 600) #配列に入れる。 menus = [menu1, menu2, menu3, menu4] #メニューを表示 index = 0 menus.each do |menu| puts "#{index}. #{menu.order}" index += 1 end puts "ご注文はお決まりですか" order_index = gets.chomp.to_i #注文番号を標準入力から受け取る selected_menu = menus[order_index] #受け付けたメニューを取り出す puts "ご注文は#{order_index}番の#{selected_menu.name}でよろしいでしょうか" puts "おいくつになさいますか" count = gets.chomp.to_i #個数を標準入力から受け取る puts "お会計は#{selected_menu.total_price(count)}円になります"
そしてこれが分割したクラスです。
class Menu attr_accessor :name attr_accessor :price def initialize(name:, price:) self.name = name self.price = price end def order return "#{self.name} #{self.price}円" end def total_price(count) total_price = self.price * count return total_price end end
実行した結果はこんな感じ。
葛餅の気分なので3を選択します。
個数を聞かれます。
個数を入力するとお会計まで計算してくれました。
今回はここまで。
余談ですが、今回からはコードをちゃんと表示できるようになりました。