Menu
Coddy logo textTech

Obtenir le solde

Fait partie de la section Object Oriented Programming du Journey C de Coddy — leçon 26 sur 61.

challenge icon

Défi

Facile

Votre compte bancaire est presque terminé ! Vous avez mis en place la possibilité de créer des comptes, de déposer des fonds et de retirer de l'argent, mais il manque un élément crucial. Pour l'instant, le code externe n'a aucun moyen de consulter le solde actuel. Corrigeons cela en ajoutant une fonction getter.

Un getter est le moyen approprié d'exposer des données cachées dans un module encapsulé. Au lieu de rendre le champ balance public (ce qui briserait l'encapsulation), vous fournissez une fonction en lecture seule qui renvoie la valeur. Cela permet de protéger les données tout en autorisant un accès contrôlé.

Vous continuerez à travailler avec vos trois fichiers :

  • account.h : Ajoutez un nouveau prototype de fonction : get_balance. Cette fonction prend un const Account * (puisqu'elle ne fait que lire les données, sans jamais les modifier) et renvoie un double représentant le solde actuel. Conservez toutes vos déclarations existantes.
  • account.c : Implémentez la fonction get_balance. Elle renvoie simplement le champ balance caché du compte. Remarquez comment cette fonction peut accéder aux données internes car elle est définie dans le même fichier que la structure — le code externe ne peut toujours pas regarder directement à l'intérieur.
  • main.c : Vous pouvez enfin voir ce qui se passe à l'intérieur de vos comptes ! Créez un compte, effectuez quelques transactions et utilisez votre nouveau getter pour afficher le solde à chaque étape.

Vous recevrez quatre entrées : l'ID du compte (un entier), un montant de dépôt, un montant de retrait et un deuxième montant de dépôt.

Dans votre fichier principal, créez un compte et affichez son solde initial (qui devrait être 0.00). Déposez le premier montant et affichez le nouveau solde. Retirez le montant spécifié et affichez à nouveau le solde. Enfin, effectuez le deuxième dépôt et affichez le solde final. Ensuite, détruisez le compte.

Affichez la sortie dans ce format :

Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed

1001 est l'ID du compte, et les soldes reflètent : l'initial (0.00), après le dépôt de 500.00, après le retrait de 300.00, et après le dépôt d'un autre 150.00. Formatez toutes les valeurs de solde avec deux décimales en utilisant %.2f.

Avec ce getter en place, votre module de compte bancaire offre désormais un accès complet et contrôlé aux données du compte — les utilisateurs peuvent voir le solde mais ne peuvent le modifier qu'à travers vos fonctions de dépôt et de retrait validées.

Essayez vous-même

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double deposit1;
    scanf("%lf", &deposit1);
    
    double withdraw_amount;
    scanf("%lf", &withdraw_amount);
    
    double deposit2;
    scanf("%lf", &deposit2);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    // TODO: Afficher le solde initial en utilisant get_balance
    
    deposit(account, deposit1);
    // TODO: Afficher le solde après le premier dépôt
    
    withdraw(account, withdraw_amount);
    // TODO: Afficher le solde après le retrait
    
    deposit(account, deposit2);
    // TODO: Afficher le solde après le deuxième dépôt
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Toutes les leçons de Object Oriented Programming