Rückblick – Zahlungssystem
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 40 von 87.
Aufgabe
EinfachErstellen wir ein vollständiges Zahlungsabwicklungssystem, das alles zusammenführt, was du in diesem Kapitel über Schnittstellen gelernt hast. Du erstellst ein flexibles System, in dem verschiedene Zahlungsmethoden einheitlich über eine gemeinsame Schnittstelle verarbeitet werden können.
Du organisierst deinen Code über fünf Dateien:
Payable.java: Definiere die zentrale Schnittstelle, die alle Zahlungsmethoden implementieren müssen. Sie soll eine einzige Methodepay(double amount)deklarieren, die einen String zurückgibt, der die Zahlungsaktion beschreibt.CreditCard.java: Erstelle eine Klasse, diePayableimplementiert und Kreditkartenzahlungen repräsentiert. Eine CreditCard verfügt über ein FeldcardNumber(String), in dem die letzten 4 Ziffern gespeichert werden. Füge einen Konstruktor hinzu, um es zu initialisieren. Die Methodepaysoll Folgendes zurückgeben:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: Erstelle eine weitere Klasse, diePayablefür PayPal-Zahlungen implementiert. Ein PayPal-Konto verfügt über ein Feldemail(String). Füge einen Konstruktor hinzu, um es zu initialisieren. Die Methodepaysoll Folgendes zurückgeben:Paid [amount] via PayPal account [email]PaymentProcessor.java: Erstelle eine Prozessor-Klasse, die jedesPayable-Objekt verarbeiten kann. Sie soll eine MethodeprocessPayment(Payable paymentMethod, double amount)besitzen, die diepay-Methode der Zahlungsmethode aufruft und das Ergebnis zurückgibt. Dies zeigt, wie Schnittstellen polymorphes Verhalten ermöglichen: Der Prozessor muss den konkreten Zahlungstyp nicht kennen!Main.java: Führe alles zusammen. Du erhältst drei Eingaben: eine Kartennummer (die letzten 4 Ziffern), eine E-Mail-Adresse und einen Zahlungsbetrag. Erstelle einenPaymentProcessorund verwende ihn anschließend, um für den angegebenen Betrag sowohl eine Zahlung mit einerCreditCardals auch mit einemPayPal-Konto zu verarbeiten. Gib jedes Ergebnis in einer eigenen Zeile aus.
Du erhältst drei Eingaben: die letzten 4 Ziffern der Kartennummer (String), die PayPal-E-Mail-Adresse (String) und den Zahlungsbetrag (double).
Formatiere die Beträge in deiner Ausgabe mit zwei Dezimalstellen. Beachte, wie derselbe PaymentProcessor dank der Leistungsfähigkeit von Schnittstellen völlig unterschiedliche Zahlungstypen verarbeitet!
Probier es selbst
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Eingaben lesen
String cardNumber = scanner.nextLine(); // Letzte 4 Ziffern
String email = scanner.nextLine(); // PayPal-E-Mail
double amount = scanner.nextDouble(); // Zahlungsbetrag
// TODO: Erstelle einen PaymentProcessor
// TODO: Erstelle eine CreditCard mit der cardNumber
// TODO: Erstelle ein PayPal-Konto mit der email
// TODO: Verarbeite die Zahlung mit CreditCard und gib das Ergebnis aus
// TODO: Verarbeite die Zahlung mit PayPal und gib das Ergebnis aus
}
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler