Rangkuman: Kode Kupon
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 16 dari 57.
Tantangan
SedangLengkapi 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
1class dan object
Bekerja dengan fileMendefinisikan classVariabel instansmethod dan selfto_s dan inspectRingkasan: Kartu Perpustakaan4Enkapsulasi
private methodprotected methodprivate setterMelindungi StatusUlasan, Mesin Penjual Otomatis7Polimorfisme dan Duck Typing
PolimorfismeDuck TypingMethod Abstrakcase dan classRingkasan: Method Pembayaran2Accessor dan self
Pembaca dan PenulisSetter Kustomself dalam methodIdentitas dan KesetaraanRangkuman: Daftar Kontak8Special method
Kesetaraan dan hashOperator methodPengindeksan dan penambahanKoleksi kustomRingkasan: Pecahan11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Method dan Variabel class
Method classVariabel instance classKonstantaMethod pabrikRangkuman: Kode KuponLatihan sendiri: Compiler Ruby online