Rückblick – Bankkontoverwaltung
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 22 von 110.
Aufgabe
EinfachLass uns ein Bankkontoverwaltungssystem erstellen, das alle Konzepte zu Klasseneigenschaften zusammenführt, die du in diesem Kapitel gelernt hast. Du erstellst ein System, das die Daten einzelner Konten verfolgt und gleichzeitig bankweite Statistiken verwaltet.
Du organisierst deinen Code in zwei Dateien:
bank_account.dart: Definiere eineBankAccount-Klasse, die einzelne Konten verwaltet und die Gesamtstatistiken der Bank verfolgt. Deine Klasse sollte Folgendes enthalten:- Ein
final String accountNumber, das nach der Erstellung nicht geändert werden kann - Ein
String holderNamefür den Namen des Kontoinhabers - Ein privates
double _balance-Feld, das mit0.0beginnt - Ein
static int totalAccounts, das mit0beginnt, um zu verfolgen, wie viele Konten existieren - Ein
static double totalDeposits, das mit0.0beginnt, um alle bei der Bank getätigten Einzahlungen zu verfolgen - Einen Konstruktor, der
accountNumberundholderNameübernimmt undtotalAccountserhöht - Einen Getter
balance, der den aktuellen Kontostand zurückgibt - Eine
deposit(double amount)-Methode, die den Kontostand nur erhöht, wenn der Betrag positiv ist, und bei Erfolg außerdemtotalDepositserhöht - Eine
withdraw(double amount)-Methode, die den Kontostand nur verringert, wenn der Betrag positiv ist und den aktuellen Kontostand nicht überschreitet - Eine
displayInfo()-Methode, die die Kontodetails ausgibt - Eine statische Methode
getBankStats(), die eine Zeichenkette mit den bankweiten Statistiken zurückgibt
- Ein
main.dart: Importiere deine Bankkontoklasse und demonstriere das System:- Erstelle ein Konto mit der Nummer
'ACC001'für'Alice' - Erstelle ein Konto mit der Nummer
'ACC002'für'Bob' - Zahle
500.0auf Alices Konto ein - Zahle
300.0auf Bobs Konto ein - Hebe
150.0von Alices Konto ab - Versuche,
1000.0von Bobs Konto abzuheben (sollte ignoriert werden – unzureichendes Guthaben) - Versuche,
-50.0auf Alices Konto einzuzahlen (sollte ignoriert werden – negativer Betrag) - Rufe
displayInfo()für Alices Konto und anschließend für Bobs Konto auf - Gib die Bankstatistiken mit
BankAccount.getBankStats()aus
- Erstelle ein Konto mit der Nummer
Die Methode displayInfo() sollte in diesem Format ausgeben:
Account [accountNumber] | Holder: [holderName] | Balance: $[balance]Die Methode getBankStats() sollte Folgendes zurückgeben:
Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]Erwartete Ausgabe:
Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0Probier es selbst
import 'bank_account.dart';
void main() {
// TODO: Erstelle ein Konto mit der Nummer 'ACC001' für 'Alice'
// TODO: Erstelle ein Konto mit der Nummer 'ACC002' für 'Bob'
// TODO: Zahle 500.0 auf das Konto von 'Alice' ein
// TODO: Zahle 300.0 auf das Konto von 'Bob' ein
// TODO: Hebe 150.0 vom Konto von 'Alice' ab
// TODO: Versuche 1000.0 vom Konto von 'Bob' abzuheben (sollte ignoriert werden)
// TODO: Versuche -50.0 auf das Konto von 'Alice' einzuzahlen (sollte ignoriert werden)
// TODO: Rufe displayInfo() für das Konto von 'Alice' auf
// TODO: Rufe displayInfo() für das Konto von 'Bob' auf
// TODO: Gib die Bankstatistiken mit BankAccount.getBankStats() aus
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienBibliotheken & ImportsEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenInstanzvariablenGrundlagen von KonstruktorenRückblick – Einfacher Taschenrechner4Null-Sicherheit
Einführung in die Null-SicherheitNullable vs. Non-NullableDie Operatoren ? und !Late-Schlüsselwort und Null-SicherheitNull-bewusste OperatorenNull-Sicherheit in KlassenRückblick – Benutzers профilsystem7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrere InterfacesZusammenfassung – Formrechner10Collections & Generics
Übersicht über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische EinschränkungenIterable & IteratorRückblick – Generischer Speicher13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungErweiterungsmethodenAufrufbare KlassenVersiegelte Klassen (Dart 3)Records (Dart 3)Muster & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
StandardkonstruktorBenannte KonstruktorenInitialisierungslistenKonstantenkonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenRückblick – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _-Präfix-KonventionBibliotheksweite SichtbarkeitTiefergehende Getter & SetterInformationsverbergungRückblick – Studierendendaten8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas Schlüsselwort „on“ in MixinsMixin vs. VererbungMixin vs. SchnittstelleRückblick – Tiersystem11Spezielle Methoden
toString()-ÜberschreibunghashCode- & ==-ÜberschreibungComparable-Schnittstellecall()-MethodenoSuchMethod-ÜberschreibungWiederholung – Benutzerdefinierte Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFabrikmusterBeobachtermusterStrategiemuster17Abschließende Herausforderungen
E-Learning-PlattformBankingsystemSpielcharaktersystemFahrzeugvermietung3Klassen-Eigenschaften
Instanz- vs. statische MemberFinal- und Const-FelderLate-VariablenStatische Methoden und FelderGetter und SetterRückblick – Bankkontoverwaltung6Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungDie Annotation @overrideDas Schlüsselwort final für KlassenKonstruktoren und VererbungZusammenfassung – Mitarbeiterhierarchie9Polymorphismus
Grundlagen des PolymorphismusPolymorphismus über InterfacesLaufzeit-TypüberprüfungDie Operatoren is & asCovariant-SchlüsselwortZusammenfassung – ZahlungsprozessorÜbe selbstständig: Online-Dart-Compiler