Menu
Coddy logo textTech

Zusammenfassung - Bankkonto-Manager

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

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen vollständigen Bankkontomanager erstellen, der alle Konzepte für Klasseneigenschaften zusammenführt, die Sie in diesem Kapitel gelernt haben: private Member mit Gettern und Settern, const-Memberfunktionen, mutable Member, statische Variablen und Methoden sowie Friend-Funktionen.

Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:

  • BankAccount.h: Definieren Sie eine BankAccount-Klasse, die Kontodaten mit ordnungsgemäßer Kapselung verwaltet. Ihre Klasse sollte Folgendes enthalten:
    • Private Member: accountNumber (string), ownerName (string), balance (double) und ein mutable int queryCount, um zu verfolgen, wie oft der Kontostand abgefragt wurde
    • Ein privates statisches Member totalAccounts, um zu verfolgen, wie viele Konten existieren
    • Einen Konstruktor, der die Kontonummer, den Namen des Eigentümers und das Anfangsguthaben entgegennimmt. Er sollte queryCount mit 0 initialisieren und totalAccounts inkrementieren
    • Const-Getter: getAccountNumber(), getOwnerName() und getBalance() — der Getter für das Guthaben sollte queryCount bei jedem Aufruf inkrementieren
    • Ein const-Getter getQueryCount(), der zurückgibt, wie oft das Guthaben abgefragt wurde
    • Eine deposit(double amount)-Methode, die den Betrag nur dann zum Guthaben addiert, wenn der Betrag positiv ist
    • Eine withdraw(double amount)-Methode, die den Betrag nur dann vom Guthaben abzieht, wenn der Betrag positiv ist und das aktuelle Guthaben nicht übersteigt
    • Eine statische Methode getTotalAccounts(), die die Gesamtzahl der erstellten Konten zurückgibt
    • Deklarieren Sie eine Friend-Funktion transfer(BankAccount& from, BankAccount& to, double amount), die Geld zwischen Konten transferiert — sie sollte nur transferieren, wenn der Betrag positiv ist und die Quelle über ausreichende Mittel verfügt

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

  • main.cpp: Demonstrieren Sie das Zusammenwirken all dieser Funktionen. Lesen Sie zwei Namen von Eigentümern und zwei Anfangsguthaben von der Eingabe ein (insgesamt vier Zeilen: name1, balance1, name2, balance2), dann:
    • Erstellen Sie zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002"
    • Geben Sie "Total accounts: <count>" aus
    • Geben Sie "<name>: "<name>: $<balance>"lt;balance>" für das erste Konto aus
    • Geben Sie "<name>: "<name>: $<balance>"lt;balance>" für das zweite Konto aus
    • Zahlen Sie 500.0 auf das erste Konto ein
    • Geben Sie "After deposit - <name>: "After deposit - <name>: $<balance>"lt;balance>" für das erste Konto aus
    • Transferieren Sie 300.0 vom ersten Konto auf das zweite unter Verwendung der Friend-Funktion
    • Geben Sie "After transfer:" aus
    • Geben Sie " <name>: " <name>: $<balance>"lt;balance>" für das erste Konto aus
    • Geben Sie " <name>: " <name>: $<balance>"lt;balance>" für das zweite Konto aus
    • Geben Sie "Query count for <name>: <count>" für das erste Konto aus

Formatieren Sie alle Guthabenwerte mit zwei Dezimalstellen unter Verwendung von std::fixed und std::setprecision(2) aus <iomanip>. Konvertieren Sie die Guthabeneingaben mit std::stod() von Strings in Doubles.

Vergessen Sie nicht die Header-Guards in Ihrer Header-Datei und binden Sie <string> sowie <iostream> dort ein, wo sie benötigt werden.

Probier es selbst

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

int main() {
    // Eingabe lesen
    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);
    
    // Ausgabeformatierung auf 2 Dezimalstellen festlegen
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Erstelle zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002"
    
    // TODO: Gib "Total accounts: <count>" aus
    
    // TODO: Gib "<name>: $<balance>" für das erste Konto aus
    
    // TODO: Gib "<name>: $<balance>" für das zweite Konto aus
    
    // TODO: Zahle 500.0 auf das erste Konto ein
    
    // TODO: Gib "After deposit - <name>: $<balance>" für das erste Konto aus
    
    // TODO: Überweise 300.0 vom ersten auf das zweite Konto unter Verwendung der friend-Funktion
    
    // TODO: Gib "After transfer:" aus
    
    // TODO: Gib "  <name>: $<balance>" für das erste Konto aus (beachte die Einrückung um 2 Leerzeichen)
    
    // TODO: Gib "  <name>: $<balance>" für das zweite Konto aus (beachte die Einrückung um 2 Leerzeichen)
    
    // TODO: Gib "Query count for <name>: <count>" für das erste Konto aus
    
    return 0;
}

Alle Lektionen in Objektorientierte Programmierung