Menu
CoddyTech

Rangkuman: Kode Kupon

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 16 dari 57.

challenge icon

Tantangan

Sedang

Lengkapi class Coupon. Factory Coupon.parse(code) menerima SAVE yang diikuti persentase (SAVE10) atau OFF yang diikuti jumlah (OFF5), dan mengembalikan nil untuk kode lainnya. Persentase di atas konstanta MAX_PERCENT (50) dikurangi menjadi 50. Setiap kupon yang dibuat factory dihitung dalam variabel instance class, yang dapat dibaca sebagai Coupon.issued; jadikan new private. apply(total) mengembalikan total setelah diskon, tidak pernah kurang dari 0, dan to_s mengembalikan SAVE10 (10% off) atau OFF5 (5.00 off).

Kode yang disediakan membaca total pesanan dari baris pertama dan satu kode pada setiap baris berikutnya. Kode ini mencetak SAVE10 (10% off): 90.00 atau invalid code HELLO, lalu mencetak issued: 2.

Tulis kodemu di coupon.rb. main.rb berisi kode input/output yang disediakan dan tidak dapat diedit.

Coba sendiri

require_relative 'coupon'

# Kode input/output yang disediakan: biarkan apa adanya
input = []
while (line = gets)
  input << line.chomp
end
total = input[0].to_f
input.drop(1).each do |code|
  coupon = Coupon.parse(code)
  if coupon
    puts format("%s: %.2f", coupon, coupon.apply(total))
  else
    puts "invalid code #{code}"
  end
end
puts "issued: #{Coupon.issued}"

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Ruby online