Menu
CoddyTech

Ôn tập: hệ thống thanh toán

Thuộc phần Lập trình hướng đối tượng trong hành trình Java của Coddy. Bài học 40 trên 87.

challenge icon

Thử thách

Dễ

Hãy xây dựng một hệ thống xử lý thanh toán hoàn chỉnh, kết hợp mọi điều bạn đã học về giao diện (interface) trong chương này. Bạn sẽ tạo một hệ thống linh hoạt, có thể xử lý thống nhất nhiều phương thức thanh toán khác nhau thông qua một giao diện chung.

Bạn sẽ sắp xếp code trong năm tệp:

  • Payable.java: Định nghĩa giao diện cốt lõi mà mọi phương thức thanh toán phải triển khai. Giao diện này cần khai báo một phương thức duy nhất là pay(double amount), trả về một String mô tả thao tác thanh toán.
  • CreditCard.java: Tạo một lớp triển khai Payable để biểu diễn các khoản thanh toán bằng thẻ tín dụng. CreditCard có trường cardNumber (String) lưu 4 chữ số cuối. Thêm hàm khởi tạo để khởi tạo trường này. Phương thức pay cần trả về: Paid [amount] using Credit Card ending in [cardNumber]
  • PayPal.java: Tạo một lớp khác triển khai Payable để xử lý các khoản thanh toán bằng PayPal. Tài khoản PayPal có trường email (String). Thêm hàm khởi tạo để khởi tạo trường này. Phương thức pay cần trả về: Paid [amount] via PayPal account [email]
  • PaymentProcessor.java: Tạo một lớp xử lý có thể xử lý mọi đối tượng Payable. Lớp này cần có phương thức processPayment(Payable paymentMethod, double amount), gọi phương thức pay của phương thức thanh toán rồi trả về kết quả. Đây là cách giao diện cho phép hành vi đa hình: bộ xử lý không cần biết loại thanh toán cụ thể!
  • Main.java: Kết hợp mọi thành phần. Bạn sẽ nhận ba đầu vào: số thẻ (4 chữ số cuối), địa chỉ email và số tiền thanh toán. Tạo một PaymentProcessor, rồi dùng nó để xử lý khoản thanh toán bằng cả tài khoản CreditCard lẫn PayPal với số tiền đã cho. In mỗi kết quả trên một dòng riêng.

Bạn sẽ nhận ba đầu vào: 4 chữ số cuối của số thẻ (String), email PayPal (String) và số tiền thanh toán (double).

Định dạng số tiền với hai chữ số thập phân trong đầu ra. Hãy chú ý cách cùng một PaymentProcessor xử lý các loại thanh toán hoàn toàn khác nhau nhờ sức mạnh của giao diện!

Tự làm thử

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Đọc dữ liệu đầu vào
        String cardNumber = scanner.nextLine();  // 4 chữ số cuối
        String email = scanner.nextLine();       // Email PayPal
        double amount = scanner.nextDouble();    // Số tiền thanh toán
        
        // TODO: Tạo một PaymentProcessor
        
        // TODO: Tạo một CreditCard bằng cardNumber
        
        // TODO: Tạo tài khoản PayPal bằng email
        
        // TODO: Xử lý thanh toán bằng CreditCard và in kết quả
        
        // TODO: Xử lý thanh toán bằng PayPal và in kết quả
    }
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Java online