Rückblick – Bankkontenverwaltung
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 18 von 70.
Aufgabe
EinfachLass uns ein vollständiges Bankkontoverwaltungssystem erstellen, das alles zusammenführt, was du über Klassenarchitektur gelernt hast. Du erstellst eine BankAccount-Klasse, die korrekt zwischen Instanzdaten (einzigartig für jedes Konto) und statischen Daten (von allen Konten gemeinsam genutzt) unterscheidet und gleichzeitig Validierung verwendet, um die Konten in gültigen Zuständen zu halten.
Du erstellst zwei Dateien, um deinen Code zu organisieren:
BankAccount.cs: Definiere eineBankAccount-Klasse imBanking-Namespace. Dein Konto sollte Folgendes enthalten:- Ein
const-FeldMinimumBalance, das auf100gesetzt ist – der Mindestbetrag, den alle Konten beibehalten müssen - Ein
static-FeldInterestRate(decimal), das mit0.03mbeginnt – von allen Konten gemeinsam genutzt - Ein
static-FeldTotalAccounts(int), das erfasst, wie viele Konten existieren - Ein
readonly-FeldAccountNumber(string) – wird bei der Erstellung einmal gesetzt und niemals geändert - Ein privates Hintergrundfeld
_ownerNamemit einer EigenschaftOwnerName, die beim Setzen Leerzeichen entfernt - Ein privates Hintergrundfeld
_balancemit einer EigenschaftBalance, die verhindert, dass der Kontostand unterMinimumBalancefällt (wenn jemand versucht, einen niedrigeren Wert zu setzen, bleibt er aufMinimumBalance) - Ein Konstruktor, der Kontonummer, Namen des Kontoinhabers und anfänglichen Kontostand entgegennimmt und
TotalAccountserhöht - Eine statische Methode
SetInterestRate(decimal rate), um den gemeinsamen Zinssatz zu aktualisieren - Eine Methode
CalculateInterest(), die den Kontostand multipliziert mit dem Zinssatz zurückgibt
- Ein
Program.cs: Erstelle in deiner Hauptdatei zwei Bankkonten mithilfe von Eingabewerten, aktualisiere den Zinssatz und gib Kontoinformationen zusammen mit den gemeinsamen Bankdaten aus.
Du erhältst sieben Eingaben:
- Kontonummer des ersten Kontos
- Name des Inhabers des ersten Kontos
- Anfänglicher Kontostand des ersten Kontos
- Kontonummer des zweiten Kontos
- Name des Inhabers des zweiten Kontos
- Anfänglicher Kontostand des zweiten Kontos
- Neuer Zinssatz (als Dezimalzahl wie
0.05)
Gib die Ausgabe in diesem Format aus:
--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}Wenn die Eingaben beispielsweise ACC001, Alice Smith , 500, ACC002, Bob Jones, 50 und 0.05 lauten, sollte die Ausgabe wie folgt aussehen:
--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2
Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0
Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0Beachte, wie die zusätzlichen Leerzeichen aus Alices Namen entfernt werden und Bobs Kontostand von 50 auf den Mindestbetrag von 100 angehoben wird. Die Zinsen werden anhand des aktualisierten Zinssatzes von 0.05 berechnet, der nach der Erstellung der Konten festgelegt wurde.
Probier es selbst
using System;
using Banking;
class Program
{
public static void Main(string[] args)
{
// Eingaben für das erste Konto lesen
string accountNumber1 = Console.ReadLine();
string ownerName1 = Console.ReadLine();
decimal balance1 = Convert.ToDecimal(Console.ReadLine());
// Eingaben für das zweite Konto lesen
string accountNumber2 = Console.ReadLine();
string ownerName2 = Console.ReadLine();
decimal balance2 = Convert.ToDecimal(Console.ReadLine());
// Neuen Zinssatz lesen
decimal newRate = Convert.ToDecimal(Console.ReadLine());
// TODO: Zwei BankAccount-Objekte mit den Eingabewerten erstellen
// TODO: Den Zinssatz mithilfe der statischen Methode aktualisieren
// TODO: Die Bankzusammenfassung im erforderlichen Format ausgeben
// --- Bank Summary ---
// Interest Rate: {InterestRate}
// Minimum Balance: {MinimumBalance}
// Total Accounts: {TotalAccounts}
// (Leerzeile)
// Account: {AccountNumber}
// Owner: {OwnerName}
// Balance: {Balance}
// Interest Earned: {interest}
// (Leerzeile)
// Account: {AccountNumber}
// Owner: {OwnerName}
// Balance: {Balance}
// Interest Earned: {interest}
}
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – SchülerdatenÜbe selbstständig: Online-C#-Compiler