Menu
Coddy logo textTech

Podsumowanie — system płatności

Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 40 z 87.

challenge icon

Wyzwanie

Łatwy

Zbudujmy kompletny system przetwarzania płatności, który łączy wszystko, czego nauczyłeś się o interfejsach w tym rozdziale. Stworzysz elastyczny system, w którym różne metody płatności można obsługiwać w jednolity sposób za pomocą wspólnego interfejsu.

Rozmieścisz kod w pięciu plikach:

  • Payable.java: Zdefiniuj główny interfejs, który muszą implementować wszystkie metody płatności. Powinien deklarować jedną metodę pay(double amount), która zwraca String opisujący operację płatności.
  • CreditCard.java: Utwórz klasę implementującą Payable, która reprezentuje płatności kartą kredytową. Obiekt CreditCard ma pole cardNumber (String) przechowujące 4 ostatnie cyfry. Dodaj konstruktor, który je inicjalizuje. Metoda pay powinna zwracać: Paid [amount] using Credit Card ending in [cardNumber]
  • PayPal.java: Utwórz kolejną klasę implementującą Payable, przeznaczoną do płatności przez PayPal. Konto PayPal ma pole email (String). Dodaj konstruktor, który je inicjalizuje. Metoda pay powinna zwracać: Paid [amount] via PayPal account [email]
  • PaymentProcessor.java: Utwórz klasę procesora, która może obsługiwać dowolny obiekt Payable. Powinna mieć metodę processPayment(Payable paymentMethod, double amount), która wywołuje metodę pay metody płatności i zwraca wynik. To pokazuje, jak interfejsy umożliwiają zachowanie polimorficzne: procesor nie musi znać konkretnego rodzaju płatności!
  • Main.java: Połącz wszystkie elementy. Otrzymasz trzy dane wejściowe: numer karty (4 ostatnie cyfry), adres e-mail i kwotę płatności. Utwórz obiekt PaymentProcessor, a następnie użyj go do przetworzenia płatności podaną kwotą zarówno za pomocą obiektu CreditCard, jak i konta PayPal. Wypisz każdy wynik w osobnym wierszu.

Otrzymasz trzy dane wejściowe: 4 ostatnie cyfry numeru karty (String), adres e-mail PayPal (String) i kwotę płatności (double).

Formatuj kwoty w wyniku, używając dwóch miejsc po przecinku. Zwróć uwagę, jak ten sam obiekt PaymentProcessor obsługuje zupełnie różne rodzaje płatności dzięki możliwościom interfejsów!

Spróbuj swoich sił

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Wczytaj dane wejściowe
        String cardNumber = scanner.nextLine();  // Ostatnie 4 cyfry
        String email = scanner.nextLine();       // Adres e-mail PayPal
        double amount = scanner.nextDouble();    // Kwota płatności
        
        // TODO: Utwórz obiekt PaymentProcessor
        
        // TODO: Utwórz obiekt CreditCard z cardNumber
        
        // TODO: Utwórz konto PayPal z email
        
        // TODO: Przetwórz płatność za pomocą CreditCard i wypisz wynik
        
        // TODO: Przetwórz płatność za pomocą PayPal i wypisz wynik
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Java online