Ruby講座|第7回 クラスを使ったサンプルコード(料金表の課題回答編)
皆さん、こんにちは。
しょうとく(@syoucha0107)と申します。
こちらの講座は第3回目の課題の回答につながるものになります。前回の課題を知らずとも、こちら講座だけでも勉強できますのでご安心ください。
Rubyのクラスの学習をしておられる初心者の方に
学習用のサンプルコードとして
お使いいただければと思います。
まずはどんなものを作るかを定義します。
サンプルは、マッサージ店を想定してお客さんにメニューを提示してコースを選択。3名以上が利用した場合は、トータル合計金額から2000円割引を適用。
さらに1名あたりの料金を表示し、その料金が100円未満、つまり10円単位のものは切り捨てて表示。
クラスが記述されたファイル、出力ページが記述されたファイル、rubyファイルを2つに分けて作成。
サンプルソースを写経して実行してみよう
2つのrbファイルを同じ保存場所に配置して実行してみて下さい。
クラス記述ファイル
#ryoukin.rbというファイル名で保存 class Menu attr_accessor :name attr_accessor :price def initialize(name:, price:) self.name = name self.price = price end def info return "#{self.name} #{self.price}円" end def get_total_price(count) total_price = self.price * count if count >= 3 total_price -= 2000 end return total_price end end
出力ページ(外部ファイルを読む)
#ファイル名はお好きなもので保存して下さい。 #ターミナルからこちらのファイル名で実行しましょう。 require "./ryoukin" puts "リラクゼーションマッサージへようこそ" menu1 = Menu.new(name: "足つぼマッサージ", price: 3000) menu2 = Menu.new(name: "小顔リンパマッサージ", price: 5000) menu3 = Menu.new(name: "全身アロママッサージ", price: 8000) menus = [menu1, menu2, menu3] index = 1 menus.each do |menu| puts "#{index}. #{menu.info}" index += 1 end puts "--------------" puts "ご希望のマッサージの番号を入力してください。" order = gets.chomp.to_i selected_menu = menus[order - 1] puts "ご希望のマッサージ: #{selected_menu.name}" puts "何名様でご利用になりますか(3名以上でご利用されると2000円割引)" count = gets.chomp.to_i puts "#{count}名様#{selected_menu.get_total_price(count)}円になります。" puts "1名様につき#{(selected_menu.get_total_price(count)/count).floor(-2)}円(100円未満は切捨て)になります。"
今回の第7回でRuby講座はひとまず終了になります。他の言語の講座もありますので、そちらもぜひ学習してみてくださいね。