Menu
Coddy logo textTech

Zusammenfassung – Zahlungsprozessor

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 62 von 110.

challenge icon

Aufgabe

Einfach

Erstellen wir ein Zahlungsabwicklungssystem, das die Leistungsfähigkeit des Polymorphismus demonstriert! Du erstellst eine abstrakte Klasse für Zahlungsmethoden und mehrere konkrete Implementierungen und verarbeitest anschließend eine Sammlung verschiedener Zahlungstypen über eine einheitliche Schnittstelle.

Du organisierst deinen Code in zwei Dateien:

  • payments.dart: Definiere hier deine Zahlungshierarchie:
    • Eine abstrakte Klasse PaymentMethod mit einer Eigenschaft String accountHolder, einem Konstruktor und einer abstrakten Methode processPayment(double amount)
    • Eine Klasse CreditCard, die PaymentMethod mit einer zusätzlichen Eigenschaft String cardNumber (nur die letzten 4 Ziffern) erweitert. Ihre Methode processPayment soll Processing $[amount] via Credit Card ****[cardNumber] for [accountHolder] ausgeben
    • Eine Klasse PayPal, die PaymentMethod mit einer zusätzlichen Eigenschaft String email erweitert. Ihre Methode processPayment soll Processing $[amount] via PayPal ([email]) for [accountHolder] ausgeben
    • Eine Klasse BankTransfer, die PaymentMethod mit einer zusätzlichen Eigenschaft String bankName erweitert. Ihre Methode processPayment soll Processing $[amount] via Bank Transfer from [bankName] for [accountHolder] ausgeben
    Erstelle außerdem eine Funktion processAllPayments(List<PaymentMethod> methods, double amount), die:
    • Processing [count] payments of $[amount] each: ausgibt, wobei count der Anzahl der Zahlungsmethoden entspricht
    • jede Zahlungsmethode durchläuft und processPayment(amount) aufruft
    • nach der Verarbeitung aller Zahlungen zählt, wie viele vom Typ CreditCard sind, indem sie den Operator is verwendet, und Credit card payments: [count] ausgibt
  • main.dart: Importiere deine Zahlungsdatei und führe den Zahlungsprozessor vor:
    • Erstelle eine List<PaymentMethod>, die Folgendes enthält:
      • Eine CreditCard für 'Alice Smith' mit der Kartennummer '1234'
      • Eine PayPal für 'Bob Jones' mit der E-Mail-Adresse 'bob@email.com'
      • Eine BankTransfer für 'Carol White' mit der Bank 'National Bank'
      • Eine CreditCard für 'David Brown' mit der Kartennummer '5678'
    • Rufe processAllPayments mit dieser Liste und dem Betrag 99.99 auf

Beachte, wie die Funktion processAllPayments mit dem abstrakten Typ PaymentMethod arbeitet, während jede Zahlung gemäß ihrer spezifischen Implementierung verarbeitet wird. Die Typprüfung am Ende zeigt, wie du bei Bedarf weiterhin bestimmte Typen identifizieren kannst.

Erwartete Ausgabe:

Processing 4 payments of $99.99 each:
Processing $99.99 via Credit Card ****1234 for Alice Smith
Processing $99.99 via PayPal (bob@email.com) for Bob Jones
Processing $99.99 via Bank Transfer from National Bank for Carol White
Processing $99.99 via Credit Card ****5678 for David Brown
Credit card payments: 2

Probier es selbst

import 'payments.dart';

void main() {
  // TODO: Erstelle eine List<PaymentMethod>, die Folgendes enthält:
  // - CreditCard für 'Alice Smith' mit der Kartennummer '1234'
  // - PayPal für 'Bob Jones' mit der E-Mail 'bob@email.com'
  // - BankTransfer für 'Carol White' mit der Bank 'National Bank'
  // - CreditCard für 'David Brown' mit der Kartennummer '5678'
  
  // TODO: Rufe processAllPayments mit der Liste und dem Betrag 99.99 auf
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler