Obtenir le solde
Fait partie de la section Object Oriented Programming du Journey C de Coddy — leçon 26 sur 61.
Défi
FacileVotre 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 unconst Account *(puisqu'elle ne fait que lire les données, sans jamais les modifier) et renvoie undoublereprésentant le solde actuel. Conservez toutes vos déclarations existantes.account.c: Implémentez la fonctionget_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 destroyedOù 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
1Bases de la programmation modulaire
Fichiers d'en-têteGardes d'inclusionFichiers sourcesFonctions statiquesRécapitulatif : Calculatrice modulaire4Encapsulation
Concept des pointeurs opaquesDéfinir des structures opaquesGetters et settersValidation dans les settersRécapitulatif : La boîte secrète2Objets et méthodes
Structs comme objetsLe pointeur 'Self'Rigueur du mot-clé constPointeur vs ValeurMéthodes utilitairesRécapitulatif : Point Manager5Projet : Compte bancaire simple
Configuration du projetImplémentation du compte8Polymorphisme
Pointeurs de fonctions dans les structuresSimulation de méthodesLe concept d'interfaceImplémentation d'interfacesItération polymorphiqueRécapitulatif : Greeter11Patrons de conception en C
Patron SingletonPatron FabriquePatron ItérateurRécapitulatif : Logger Factory3Cycle de vie des objets
Pattern de constructeurPattern de destructeurInitialisation sur la pileCopie profondeRécapitulatif : String Wrapper6Héritage par composition
Imbrication de structLa règle du premier membreAccès aux membres parentsUpcastingRécapitulatif : Hiérarchie des formes9Projet : Dessinateur de formes
Aperçu du projetImplémentation du cercle