Menu
CoddyTech

Zusammenfassung – Bankkontoverwaltung

Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy. Lektion 33 von 104.

challenge icon

Aufgabe

Einfach

Lass uns einen vollständigen Bank Account Manager erstellen, der alle Konzepte zu Klasseneigenschaften zusammenführt, die du in diesem Kapitel gelernt hast: private Member mit Gettern und Settern, const-Memberfunktionen, mutable-Member, statische Variablen und Methoden sowie Friend-Funktionen.

Du erstellst zwei Dateien, um deinen Code zu organisieren:

  • BankAccount.h: Definiere eine BankAccount-Klasse, die Kontodaten mit geeigneter Kapselung verwaltet. Deine Klasse sollte Folgendes enthalten:
    • Private Member: accountNumber (string), ownerName (string), balance (double) und ein mutable int queryCount, um zu erfassen, wie oft der Kontostand abgefragt wurde
    • Ein privates statisches Member totalAccounts, um zu erfassen, wie viele Konten existieren
    • Einen Konstruktor, der die Kontonummer, den Namen des Kontoinhabers und den anfänglichen Kontostand übernimmt. Er sollte queryCount auf 0 initialisieren und totalAccounts erhöhen
    • Const-Getter: getAccountNumber(), getOwnerName() und getBalance(): Der Getter für den Kontostand sollte queryCount bei jedem Aufruf erhöhen
    • Einen const-Getter getQueryCount(), der zurückgibt, wie oft der Kontostand abgefragt wurde
    • Eine deposit(double amount)-Methode, die den Kontostand nur dann erhöht, wenn der Betrag positiv ist
    • Eine withdraw(double amount)-Methode, die den Kontostand nur dann verringert, wenn der Betrag positiv ist und den aktuellen Kontostand nicht übersteigt
    • Eine statische Methode getTotalAccounts(), die die Gesamtzahl der erstellten Konten zurückgibt
    • Eine Friend-Funktion transfer(BankAccount& from, BankAccount& to, double amount) deklarieren, die Geld zwischen Konten überträgt. Sie sollte nur dann Geld übertragen, wenn der Betrag positiv ist und das Quellkonto über ausreichende Mittel verfügt

    Definiere das statische Member und die Friend-Funktion nach der Klassendefinition.

  • main.cpp: Zeige, wie all diese Funktionen zusammenarbeiten. Lies zwei Namen von Kontoinhabern und zwei anfängliche Kontostände aus der Eingabe ein (insgesamt vier Zeilen: name1, balance1, name2, balance2), dann:
    • Erstelle zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002"
    • Gib "Total accounts: <count>" aus
    • Gib "<name>: $<balance>" für das erste Konto aus
    • Gib "<name>: $<balance>" für das zweite Konto aus
    • Zahle 500.0 auf das erste Konto ein
    • Gib "After deposit - <name>: $<balance>" für das erste Konto aus
    • Übertrage mithilfe der Friend-Funktion 300.0 vom ersten Konto auf das zweite
    • Gib "After transfer:" aus
    • Gib " <name>: $<balance>" für das erste Konto aus
    • Gib " <name>: $<balance>" für das zweite Konto aus
    • Gib "Query count for <name>: <count>" für das erste Konto aus

Formatiere alle Kontostände mit zwei Dezimalstellen mithilfe von std::fixed und std::setprecision(2) aus <iomanip>. Wandle die Kontostand-Eingaben mit std::stod() von Strings in Doubles um.

Vergiss nicht die Header Guards in deiner Headerdatei und binde bei Bedarf <string> und <iostream> ein.

Probier es selbst

#include <iostream>
#include <string>
#include <iomanip>
#include "BankAccount.h"

int main() {
    // Eingabe einlesen
    std::string name1, name2;
    std::string balance1Str, balance2Str;
    
    std::getline(std::cin, name1);
    std::getline(std::cin, balance1Str);
    std::getline(std::cin, name2);
    std::getline(std::cin, balance2Str);
    
    double balance1 = std::stod(balance1Str);
    double balance2 = std::stod(balance2Str);
    
    // Ausgabe auf 2 Dezimalstellen formatieren
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002" erstellen
    
    // TODO: "Total accounts: <count>" ausgeben
    
    // TODO: "<name>: $<balance>" für das erste Konto ausgeben
    
    // TODO: "<name>: $<balance>" für das zweite Konto ausgeben
    
    // TODO: 500.0 auf das erste Konto einzahlen
    
    // TODO: "After deposit - <name>: $<balance>" für das erste Konto ausgeben
    
    // TODO: 300.0 mithilfe der Friend-Funktion vom ersten auf das zweite Konto übertragen
    
    // TODO: "After transfer:" ausgeben
    
    // TODO: "  <name>: $<balance>" für das erste Konto ausgeben (die Einrückung um 2 Leerzeichen beachten)
    
    // TODO: "  <name>: $<balance>" für das zweite Konto ausgeben (die Einrückung um 2 Leerzeichen beachten)
    
    // TODO: Gib "Query count for <name>: <count>" für das erste Konto aus
    
    return 0;
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C++-Compiler