Menu
Coddy logo textTech

Récapitulatif - Gestionnaire de compte bancaire

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy — leçon 33 sur 104.

challenge icon

Défi

Facile

Construisons un gestionnaire de compte bancaire complet qui rassemble tous les concepts de propriétés de classe que vous avez appris dans ce chapitre : membres privés avec getters et setters, fonctions membres const, membres mutables, variables et méthodes statiques, et fonctions amies (friend).

Vous créerez deux fichiers pour organiser votre code :

  • BankAccount.h : Définissez une classe BankAccount qui gère les données du compte avec une encapsulation appropriée. Votre classe doit avoir :
    • Des membres privés : accountNumber (string), ownerName (string), balance (double), et un mutable int queryCount pour suivre combien de fois le solde a été consulté
    • Un membre statique privé totalAccounts pour suivre le nombre de comptes existants
    • Un constructeur qui prend le numéro de compte, le nom du propriétaire et le solde initial. Il doit initialiser queryCount à 0 et incrémenter totalAccounts
    • Des getters const : getAccountNumber(), getOwnerName(), et getBalance() — le getter du solde doit incrémenter queryCount à chaque fois qu'il est appelé
    • Un getter const getQueryCount() qui retourne le nombre de fois où le solde a été consulté
    • Une méthode deposit(double amount) qui ajoute au solde uniquement si le montant est positif
    • Une méthode withdraw(double amount) qui soustrait du solde uniquement si le montant est positif et ne dépasse pas le solde actuel
    • Une méthode statique getTotalAccounts() qui retourne le nombre total de comptes créés
    • Déclarez une fonction amie transfer(BankAccount& from, BankAccount& to, double amount) qui déplace de l'argent entre les comptes — elle ne doit effectuer le transfert que si le montant est positif et que la source dispose de fonds suffisants

    Définissez le membre statique et la fonction amie après la définition de la classe.

  • main.cpp : Démontrez toutes ces fonctionnalités fonctionnant ensemble. Lisez deux noms de propriétaires et deux soldes initiaux à partir de l'entrée (quatre lignes au total : name1, balance1, name2, balance2), puis :
    • Créez deux objets BankAccount avec les numéros de compte "ACC001" et "ACC002"
    • Affichez "Total accounts: <count>"
    • Affichez "<name>: ": $"lt;balance>" pour le premier compte
    • Affichez "<name>: ": $"lt;balance>" pour le deuxième compte
    • Déposez 500.0 dans le premier compte
    • Affichez "After deposit - <name>: "After deposit - : $"lt;balance>" pour le premier compte
    • Transférez 300.0 du premier compte vers le second en utilisant la fonction amie
    • Affichez "After transfer:"
    • Affichez " <name>: " : $"lt;balance>" pour le premier compte
    • Affichez " <name>: " : $"lt;balance>" pour le deuxième compte
    • Affichez "Query count for <name>: <count>" pour le premier compte

Formatez toutes les valeurs de solde avec deux décimales en utilisant std::fixed et std::setprecision(2) de <iomanip>. Convertissez les entrées de solde de chaînes de caractères en doubles en utilisant std::stod().

N'oubliez pas les gardes d'inclusion dans votre fichier d'en-tête et d'inclure <string> et <iostream> là où c'est nécessaire.

Essayez vous-même

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

int main() {
    // Lire l'entrée
    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);
    
    // Définir le formatage de sortie pour 2 décimales
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Créer deux objets BankAccount avec les numéros de compte "ACC001" et "ACC002"
    
    // TODO: Afficher "Total accounts: <count>"
    
    // TODO: Afficher "<name>: $<balance>" pour le premier compte
    
    // TODO: Afficher "<name>: $<balance>" pour le deuxième compte
    
    // TODO: Déposer 500.0 sur le premier compte
    
    // TODO: Afficher "After deposit - <name>: $<balance>" pour le premier compte
    
    // TODO: Transférer 300.0 du premier compte vers le deuxième en utilisant la fonction amie (friend function)
    
    // TODO: Afficher "After transfer:"
    
    // TODO: Afficher "  <name>: $<balance>" pour le premier compte (notez l'indentation de 2 espaces)
    
    // TODO: Afficher "  <name>: $<balance>" pour le deuxième compte (notez l'indentation de 2 espaces)
    
    // TODO: Afficher "Query count for <name>: <count>" pour le premier compte
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet