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 complet de comptes bancaires qui réunit tous les concepts de propriétés de classe que tu as appris dans ce chapitre : membres privés avec accesseurs et mutateurs, fonctions membres const, membres mutable, variables et méthodes statiques, ainsi que fonctions amies.

Tu vas créer deux fichiers pour organiser ton code :

  • BankAccount.h : définis une classe BankAccount qui gère les données des comptes avec un encapsulation appropriée. Ta classe doit comporter :
    • Membres privés : accountNumber (chaîne de caractères), ownerName (chaîne de caractères), balance (double) et un mutable int queryCount pour suivre le nombre de fois où le solde a été vérifié
    • Un membre statique privé totalAccounts pour suivre le nombre de comptes existants
    • Un constructeur qui prend le numéro de compte, le nom du titulaire et le solde initial. Il doit initialiser queryCount à 0 et incrémenter totalAccounts
    • Accesseurs const : getAccountNumber(), getOwnerName() et getBalance() ; l’accesseur du solde doit incrémenter queryCount chaque fois qu’il est appelé
    • Un accesseur const getQueryCount() qui renvoie le nombre de fois où le solde a été vérifié
    • Une méthode deposit(double amount) qui ajoute le montant au solde uniquement si celui-ci est positif
    • Une méthode withdraw(double amount) qui soustrait le montant du solde uniquement si celui-ci est positif et ne dépasse pas le solde actuel
    • Une méthode statique getTotalAccounts() qui renvoie le nombre total de comptes créés
    • Déclare une fonction amie transfer(BankAccount& from, BankAccount& to, double amount) qui transfère 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éfinis le membre statique et la fonction amie après la définition de la classe.

  • main.cpp : démontre le fonctionnement conjoint de toutes ces fonctionnalités. Lis deux noms de titulaires et deux soldes initiaux depuis l’entrée (quatre lignes au total : name1, balance1, name2, balance2), puis :
    • Crée deux objets BankAccount avec les numéros de compte "ACC001" et "ACC002"
    • Affiche "Total accounts: <count>"
    • Affiche "<name>: $<balance>" pour le premier compte
    • Affiche "<name>: $<balance>" pour le deuxième compte
    • Dépose 500.0 sur le premier compte
    • Affiche "After deposit - <name>: $<balance>" pour le premier compte
    • Transfère 300.0 du premier compte vers le deuxième à l’aide de la fonction amie
    • Affiche "After transfer:"
    • Affiche " <name>: $<balance>" pour le premier compte
    • Affiche " <name>: $<balance>" pour le deuxième compte
    • Affiche "Query count for <name>: <count>" pour le premier compte

Formate toutes les valeurs de solde avec deux décimales en utilisant std::fixed et std::setprecision(2) de <iomanip>. Convertis les soldes saisis depuis des chaînes de caractères en nombres flottants à l’aide de std::stod().

N’oublie pas les gardes d’inclusion dans ton fichier d’en-tête et d’inclure <string> et <iostream> lorsque cela 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: Print "Total accounts: <count>"
    
    // TODO: Afficher "<name>: $<balance>" pour le premier compte
    
    // TODO: Afficher "<name>: $<balance>" pour le second compte
    
    // TODO: Déposer 500.0 sur le premier compte
    
    // TODO: Print "After deposit - <name>: $<balance>" for the first account
    
    // TODO: Transférer 300.0 du premier compte au second en utilisant la fonction amie
    
    // TODO: Print "After transfer:"
    
    // TODO: Afficher "  <name>: $<balance>" pour le premier compte (noter l'indentation de 2 espaces)
    
    // TODO: Afficher "  <name>: $<balance>" pour le second compte (noter l'indentation de 2 espaces)
    
    // TODO: Print "Query count for <name>: <count>" for the first account
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C++ en ligne