おひとりさまプログラミング

無料で学べるブログラミング学習サイト

Ruby講座|第7回 クラスを使ったサンプルコード(料金表の課題回答編)

皆さん、こんにちは。

しょうとく(@syoucha0107)と申します。

こちらの講座は第3回目の課題の回答につながるものになります。前回の課題を知らずとも、こちら講座だけでも勉強できますのでご安心ください。

Rubyのクラスの学習をしておられる初心者の方に
学習用のサンプルコードとして
お使いいただければと思います。

まずはどんなものを作るかを定義します。

f:id:sayo0425tan:20200821201523p:plain

サンプルは、マッサージ店を想定してお客さんにメニューを提示してコースを選択。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円未満は切捨て)になります。"

youtu.be

今回の第7回でRuby講座はひとまず終了になります。他の言語の講座もありますので、そちらもぜひ学習してみてくださいね。