Menu
Coddy logo textTech

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 Bankkontenverwalter erstellen, der alle Konzepte zu Klasseneigenschaften zusammenführt, die du in diesem Kapitel kennengelernt hast: private Member mit Gettern und Settern, konstante Memberfunktionen, veränderliche Member, statische Variablen und Methoden sowie Freundfunktionen.

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 einen mutable int queryCount, um zu verfolgen, wie oft der Kontostand überprüft wurde
    • Ein privates statisches Member totalAccounts, um zu verfolgen, wie viele Konten existieren
    • Einen Konstruktor, der die Kontonummer, den Namen des Kontoinhabers und den Anfangskontostand entgegennimmt. Er sollte queryCount auf 0 initialisieren und totalAccounts erhöhen
    • Konstante Getter: getAccountNumber(), getOwnerName() und getBalance(): Der Kontostands-Getter sollte queryCount bei jedem Aufruf erhöhen
    • Einen konstanten Getter getQueryCount(), der zurückgibt, wie oft der Kontostand überprüft wurde
    • Eine deposit(double amount)-Methode, die den Kontostand nur erhöht, wenn der Betrag positiv ist
    • Eine withdraw(double amount)-Methode, die den Kontostand nur verringert, wenn der Betrag positiv ist und den aktuellen Kontostand nicht überschreitet
    • Eine statische Methode getTotalAccounts(), die die Gesamtzahl der erstellten Konten zurückgibt
    • Die Deklaration einer Freundfunktion transfer(BankAccount& from, BankAccount& to, double amount), die Geld zwischen Konten überträgt. Sie sollte nur übertragen, wenn der Betrag positiv ist und die Quelle über ausreichende Mittel verfügt

    Definiere das statische Member und die Freundfunktion nach der Klassendefinition.

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

Formatiere alle Kontostandswerte mit zwei Dezimalstellen mithilfe von std::fixed und std::setprecision(2) aus <iomanip>. Konvertiere die Kontostandseingaben mithilfe von std::stod() aus Strings in Doubles.

Vergiss die Include-Guards in deiner Header-Datei nicht und füge <string> und <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 setzen
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Erstelle zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002"
    
    // TODO: Print "Total accounts: <count>"
    
    // 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: Print "After deposit - <name>: $<balance>" for the first account
    
    // TODO: Überweise 300.0 vom ersten Konto auf das zweite mithilfe der friend-Funktion
    
    // TODO: Print "After transfer:"
    
    // TODO: Gib "  <name>: $<balance>" für das erste Konto aus (beachte den 2-Leerzeichen-Einzug)
    
    // TODO: Gib "  <name>: $<balance>" für das zweite Konto aus (beachte den 2-Leerzeichen-Einzug)
    
    // TODO: Print "Query count for <name>: <count>" for the first account
    
    return 0;
}

Alle Lektionen in Objektorientierte Programmierung

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