Menu
Coddy logo textTech

Zusammenfassung – Bankkonto-Manager

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 20 von 91.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein vollständiges Bankkonten-Verwaltungssystem erstellen, das alle Konzepte für Klasseneigenschaften vereint, die Sie in diesem Kapitel gelernt haben. Sie werden eine BankAccount-Klasse erstellen, die Kontodaten ordnungsgemäß kapselt und gleichzeitig bankweite Statistiken verfolgt.

Sie werden Ihren Code in zwei Dateien organisieren:

  • BankAccount.php — Definieren Sie eine BankAccount-Klasse, die einzelne Konten verwaltet und allgemeine Bankstatistiken verfolgt. Die Klasse sollte Folgendes enthalten:
    • Eine Konstante MINIMUM_BALANCE, die auf 100 gesetzt ist
    • Eine öffentliche Readonly-Eigenschaft string $accountId, die nach der Erstellung nicht mehr geändert werden kann
    • Eine öffentliche Eigenschaft $holderName für den Namen des Kontoinhabers
    • Eine private Eigenschaft $balance zum Schutz des Kontostands
    • Eine private statische Eigenschaft $totalAccounts, beginnend bei 0
    • Eine private statische Eigenschaft $totalDeposits, beginnend bei 0
    Der Konstruktor sollte eine Konto-ID, den Namen des Inhabers und einen Anfangskontostand akzeptieren. Er sollte alle Instanzeigenschaften setzen und den Zähler für die Gesamtzahl der Konten erhöhen. Fügen Sie diese Methoden hinzu:
    • getBalance() — gibt den aktuellen Kontostand zurück
    • deposit($amount) — addiert den Betrag zum Kontostand, aktualisiert den Tracker für die Gesamteinlagen und gibt den neuen Kontostand zurück
    • withdraw($amount) — zieht den Betrag nur dann vom Kontostand ab, wenn der verbleibende Kontostand bei oder über der Mindestguthaben-Konstante bleibt; gibt den neuen Kontostand zurück (oder den unveränderten Kontostand, falls die Auszahlung nicht zulässig ist)
    • Eine statische Methode getTotalAccounts() — gibt die Gesamtzahl der erstellten Konten zurück
    • Eine statische Methode getTotalDeposits() — gibt die Summe aller Einzahlungen zurück, die über alle Konten hinweg getätigt wurden
  • main.php — Binden Sie die BankAccount-Klassendatei ein. Sie erhalten vier Eingaben: die erste Konto-ID, den ersten Inhabernamen, die zweite Konto-ID und den zweiten Inhabernamen. Erstellen Sie zwei Konten, beide mit einem Anfangsguthaben von 500. Für das erste Konto: zahlen Sie 200 ein und heben Sie dann 100 ab. Geben Sie die Konto-ID, den Inhabernamen und den Kontostand in einer Zeile im Format "[accountId]: [holderName] - $[balance]" aus. Für das zweite Konto: zahlen Sie 300 ein und versuchen Sie dann, 800 abzuheben (dies sollte aufgrund des Mindestguthabens fehlschlagen). Geben Sie das gleiche Format für dieses Konto aus. Geben Sie abschließend die Gesamtzahl der Konten und die Gesamteinlagen in separaten Zeilen aus:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Diese Herausforderung kombiniert Readonly-Eigenschaften für unveränderliche Identifikatoren, private Eigenschaften mit Getter-Methoden für geschützte Daten, Konstanten für feste Regeln und statische Eigenschaften mit statischen Methoden für bankweite Statistiken.

Probier es selbst

<?php

require_once 'BankAccount.php';

// Eingaben lesen
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: Erstes Konto mit einem Anfangsguthaben von 500 erstellen

// TODO: Zweites Konto mit einem Anfangsguthaben von 500 erstellen

// TODO: Erstes Konto: 200 einzahlen, dann 100 abheben

// TODO: Informationen des ersten Kontos ausgeben: "[accountId]: [holderName] - $[balance]"

// TODO: Zweites Konto: 300 einzahlen, dann versuchen 800 abzuheben

// TODO: Informationen des zweiten Kontos ausgeben: "[accountId]: [holderName] - $[balance]"

// TODO: "Total Accounts: [count]" ausgeben

// TODO: "Total Deposits: $[amount]" ausgeben

?>

Alle Lektionen in Objektorientierte Programmierung