Ôn tập: mã giảm giá
Thuộc phần Lập trình hướng đối tượng trong hành trình Ruby của Coddy. Bài học 16 trên 57.
Thử thách
Trung bìnhHoàn thiện lớp Coupon. Hàm tạo Coupon.parse(code) chấp nhận SAVE theo sau là một tỷ lệ phần trăm (SAVE10) hoặc OFF theo sau là một số tiền (OFF5), và trả về nil với mọi mã khác. Tỷ lệ phần trăm cao hơn hằng số MAX_PERCENT (50) sẽ được giảm xuống còn 50. Đếm mỗi phiếu giảm giá mà hàm tạo tạo ra bằng một biến thực thể của lớp, có thể đọc qua Coupon.issued; đặt new ở chế độ riêng tư. apply(total) trả về tổng tiền sau giảm giá, không bao giờ thấp hơn 0, còn to_s trả về SAVE10 (10% off) hoặc OFF5 (5.00 off).
Code được cung cấp đọc tổng tiền đơn hàng từ dòng đầu tiên và mỗi dòng tiếp theo là một mã. Code in ra SAVE10 (10% off): 90.00 hoặc invalid code HELLO, rồi cuối cùng in ra issued: 2.
Đặt code của bạn trong coupon.rb. main.rb chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.
Tự làm thử
require_relative 'coupon'
# Đoạn code đầu vào/đầu ra đã được cung cấp: giữ nguyên
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}"
Tất cả bài học trong Lập trình hướng đối tượng
1Lớp và đối tượng
Làm việc với tệpĐịnh nghĩa lớpBiến instancePhương thức và selfto_s và inspectÔn tập: thẻ thư viện4Tính đóng gói
Phương thức riêng tưPhương thức được bảo vệPhương thức thiết lập riêng tưBảo vệ trạng tháiÔn tập: máy bán hàng tự động7Tính đa hình và duck typing
Tính đa hìnhDuck typingPhương thức trừu tượngcase và lớpÔn tập: phương thức thanh toán2Phương thức truy cập và self
Phương thức đọc và ghiPhương thức gán tùy chỉnhself trong phương thứcĐịnh danh và tính bằng nhauÔn tập: Danh sách liên hệ3Phương thức và biến của lớp
Phương thức lớpBiến thực thể của lớpHằng sốPhương thức tạo đối tượngÔn tập: mã giảm giáTự luyện tập: Trình biên dịch Ruby online