Zusammenfassung – Bankkonto-Manager
Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 20 von 91.
Aufgabe
EinfachLassen 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 eineBankAccount-Klasse, die einzelne Konten verwaltet und allgemeine Bankstatistiken verfolgt. Die Klasse sollte Folgendes enthalten:- Eine Konstante
MINIMUM_BALANCE, die auf100gesetzt ist - Eine öffentliche Readonly-Eigenschaft
string $accountId, die nach der Erstellung nicht mehr geändert werden kann - Eine öffentliche Eigenschaft
$holderNamefür den Namen des Kontoinhabers - Eine private Eigenschaft
$balancezum Schutz des Kontostands - Eine private statische Eigenschaft
$totalAccounts, beginnend bei0 - Eine private statische Eigenschaft
$totalDeposits, beginnend bei0
getBalance()— gibt den aktuellen Kontostand zurückdeposit($amount)— addiert den Betrag zum Kontostand, aktualisiert den Tracker für die Gesamteinlagen und gibt den neuen Kontostand zurückwithdraw($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
- Eine Konstante
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 von500. Für das erste Konto: zahlen Sie200ein und heben Sie dann100ab. 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 Sie300ein und versuchen Sie dann,800abzuheben (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
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas $this-SchlüsselwortMethodenEigenschaftenKonstruktor (__construct)Destruktor (__destruct)Rückblick - Einfacher Taschenrechner4Vererbung
Grundlagen der VererbungDas parent:: SchlüsselwortMethoden überschreibenDas final SchlüsselwortAbstrakte KlassenZusammenfassung – Mitarbeiter-Hierarchie7Kapselung
Public, Protected, PrivateZugriffsmodifikatoren im DetailGetter und SetterInformation HidingConstructor Promotion (8.0)Zusammenfassung – Studentenverwaltungssystem2Namensräume & Autoloading
Einführung in NamensräumeDas use-SchlüsselwortPSR-4 Autoloading-StandardComposer AutoloaderZusammenfassung – Organisiertes Projekt5Interfaces & Verträge
Einführung in InterfacesInterfaces implementierenMehrfache Interface-ImplementierungInterface vs. Abstrakte KlasseType Hinting mit InterfacesZusammenfassung – Formen-Rechner8Magische Methoden
Einführung in magische Methoden__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Objekt-Klonen__serialize & __unserializeZusammenfassung - Eigene Collection11Typsystem & Fehlerbehandlung
TypdeklarationenNullable-TypenUnion- & Intersection-TypenException-KlassenEigene Exception-HierarchieTry, Catch, FinallyZusammenfassung - Formular-Validator14Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Klasseneigenschaften
Instanz- vs. statische EigenschaftenKonstanten in KlassenStatische Methoden & EigenschaftenPrivate & geschützte EigenschaftenReadonly-Eigenschaften (PHP 8.1)Zusammenfassung – Bankkonto-Manager6Polymorphismus
Method Overriding erneut betrachtetPolymorphismus über InterfacesType Hinting & Union TypesLate Static BindingZusammenfassung – Payment Processor9Traits
Einführung in TraitsVerwendung mehrerer TraitsKonfliktlösung bei TraitsAbstrakte Methoden in TraitsTraits vs. Vererbung12Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster15Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung