Menu
Coddy logo textTech

Итоги — Платежная система

Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy. Урок 40 из 87.

challenge icon

Задание

Легко

Давайте создадим полноценную систему обработки платежей, которая объединит всё, что вы узнали об interface в этой главе. Вы создадите гибкую систему, в которой различные payment method можно обрабатывать единообразно через общий interface.

Вы организуете свой код в пяти файлах:

  • Payable.java: Define основной interface, который должны Implement все payment method. Он должен Declare единственный method pay(double amount), возвращающий String с описанием действия по оплате.
  • CreditCard.java: Create class, Implement Payable, который представляет платежи с помощью кредитной карты. У CreditCard есть cardNumber field (String), хранящий последние 4 digits. Добавьте constructor для его initialize. Method pay должен возвращать: Paid [amount] using Credit Card ending in [cardNumber]
  • PayPal.java: Create ещё один class, Implement Payable, для платежей через PayPal. У PayPal account есть email field (String). Добавьте constructor для его initialize. Method pay должен возвращать: Paid [amount] via PayPal account [email]
  • PaymentProcessor.java: Create processor class, способный обрабатывать любой Payable object. В нём должен быть method processPayment(Payable paymentMethod, double amount), который вызывает method pay payment method и возвращает результат. Это демонстрирует, как interface обеспечивают полиморфное поведение: processor не нужно знать конкретный тип платежа!
  • Main.java: Объедините всё вместе. Вы получите три inputs: номер карты (последние 4 digits), email-адрес и сумму платежа. Create PaymentProcessor, затем используйте его для обработки платежей с помощью как CreditCard, так и PayPal account на указанную сумму. Выведите каждый результат в отдельной строке.

Вы получите три inputs: последние 4 digits номера карты (String), email PayPal (String) и сумму платежа (double).

Форматируйте суммы в выводе с двумя знаками после десятичной точки. Обратите внимание, как один и тот же PaymentProcessor обрабатывает совершенно разные типы платежей благодаря возможностям interface!

Попробуйте сами

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Прочитать входные данные
        String cardNumber = scanner.nextLine();  // Последние 4 цифры
        String email = scanner.nextLine();       // Email PayPal
        double amount = scanner.nextDouble();    // Сумма платежа
        
        // TODO: Создать PaymentProcessor
        
        // TODO: Создать CreditCard с cardNumber
        
        // TODO: Создать аккаунт PayPal с email
        
        // TODO: Обработать платёж с CreditCard и вывести результат
        
        // TODO: Обработать платёж с PayPal и вывести результат
    }
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Java