Zusammenfassung - Zahlungssystem
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 40 von 87.
Aufgabe
EinfachLassen Sie uns ein vollständiges Zahlungssystem aufbauen, das alles zusammenführt, was Sie in diesem Kapitel über Interfaces gelernt haben. Sie werden ein flexibles System erstellen, in dem verschiedene Zahlungsmethoden einheitlich über ein gemeinsames Interface verarbeitet werden können.
Sie werden Ihren Code über fünf Dateien organisieren:
Payable.java: Definieren Sie das Kern-Interface, das alle Zahlungsmethoden implementieren müssen. Es sollte eine einzige Methodepay(double amount)deklarieren, die einen String zurückgibt, der die Zahlungsaktion beschreibt.CreditCard.java: Erstellen Sie eine Klasse, diePayableimplementiert und Kreditkartenzahlungen repräsentiert. Eine CreditCard hat eincardNumber-Feld (String), das die letzten 4 Ziffern speichert. Fügen Sie einen Konstruktor hinzu, um es zu initialisieren. Diepay-Methode sollte zurückgeben:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: Erstellen Sie eine weitere Klasse, diePayablefür PayPal-Zahlungen implementiert. Ein PayPal-Konto hat einemail-Feld (String). Fügen Sie einen Konstruktor hinzu, um es zu initialisieren. Diepay-Methode sollte zurückgeben:Paid [amount] via PayPal account [email]PaymentProcessor.java: Erstellen Sie eine Prozessor-Klasse, die jedesPayable-Objekt verarbeiten kann. Sie sollte eine MethodeprocessPayment(Payable paymentMethod, double amount)haben, die diepay-Methode der Zahlungsmethode aufruft und das Ergebnis zurückgibt. Dies demonstriert, wie Interfaces polymorphes Verhalten ermöglichen – der Prozessor muss den spezifischen Zahlungstyp nicht kennen!Main.java: Bringen Sie alles zusammen. Sie erhalten drei Eingaben: eine Kartennummer (letzte 4 Ziffern), eine E-Mail-Adresse und einen Zahlungsbetrag. Erstellen Sie einenPaymentProcessorund verwenden Sie ihn dann, um Zahlungen sowohl mit einerCreditCardals auch mit einemPayPal-Konto für den angegebenen Betrag zu verarbeiten. Geben Sie jedes Ergebnis in einer separaten Zeile aus.
Sie erhalten drei Eingaben: die letzten 4 Ziffern der Kartennummer (String), die PayPal-E-Mail (String) und den Zahlungsbetrag (double).
Formatieren Sie Beträge in Ihrer Ausgabe mit zwei Dezimalstellen. Beachten Sie, wie derselbe PaymentProcessor durch die Kraft von Interfaces 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 this-SchlüsselwortMethodenFelder (Attribute)Konstruktor-MethodeKonstruktor-ÜberladungRückblick – Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (extends)Das super-SchlüsselwortMethoden überschreiben (@Override)Konstruktor-VerkettungDie Object-KlasseEinfache & mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-InterfaceZusammenfassung – Benutzerdefiniertes Sortieren2Zugriffsmodifikatoren & Kapselung
Überblick über ZugriffsebenenGetter- und Setter-MethodenInformation HidingDas final-SchlüsselwortRückblick – Bankkonto-Manager5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenZusammenfassung – Formenrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, geschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Sealed Classes (Java 17+)11Design Patterns Teil 1
Einführung in Design PatternsSingleton-PatternFactory-PatternBuilder-PatternObserver-PatternStrategy-Pattern14Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung3Klasseneigenschaften & Statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Zusammenfassung – Zähler & Utility6Interfaces & Abstrakte Klassen
Einführung in InterfacesInterfaces implementierenImplementierung mehrerer InterfacesDefault- & statische Methoden in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesZusammenfassung - Zahlungssystem