Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

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

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

  • Payable.java: Определите основной интерфейс, который должны реализовать все способы оплаты. Он должен объявлять один метод pay(double amount), который возвращает String, описывающую действие по оплате.
  • CreditCard.java: Создайте класс, реализующий Payable, который представляет платежи по кредитным картам. CreditCard имеет поле cardNumber (String), в котором хранятся последние 4 цифры. Включите конструктор для его инициализации. Метод pay должен возвращать: Paid [amount] using Credit Card ending in [cardNumber]
  • PayPal.java: Создайте еще один класс, реализующий Payable для платежей PayPal. Аккаунт PayPal имеет поле email (String). Включите конструктор для его инициализации. Метод pay должен возвращать: Paid [amount] via PayPal account [email]
  • PaymentProcessor.java: Создайте класс процессора, который может обрабатывать любой объект Payable. У него должен быть метод processPayment(Payable paymentMethod, double amount), который вызывает метод pay способа оплаты и возвращает результат. Это демонстрирует, как интерфейсы обеспечивают полиморфное поведение — процессору не нужно знать конкретный тип платежа!
  • Main.java: Соберите все вместе. Вы получите три входных данных: номер карты (последние 4 цифры), адрес электронной почты и сумму платежа. Создайте PaymentProcessor, затем используйте его для обработки платежей как с помощью CreditCard, так и с помощью аккаунта PayPal на заданную сумму. Выведите каждый результат на отдельной строке.

Вы получите три входных значения: последние 4 цифры номера карты (String), адрес электронной почты PayPal (String) и сумму платежа (double).

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

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

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();       // Электронная почта PayPal
        double amount = scanner.nextDouble();    // Сумма платежа
        
        // TODO: Создать PaymentProcessor
        
        // TODO: Создать CreditCard с номером cardNumber
        
        // TODO: Создать аккаунт PayPal с электронной почтой email
        
        // TODO: Обработать платеж с помощью CreditCard и вывести результат
        
        // TODO: Обработать платеж с помощью PayPal и вывести результат
    }
}

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