Obtenir le solde
Fait partie de la section Programmation Orientée Objet du Journey C de Coddy. Leçon 26 sur 61.
Défi
FacileVotre compte bancaire est presque terminé ! Vous avez créé la possibilité de créer des comptes, de déposer des fonds et de retirer de l'argent, mais il manque encore un élément crucial. Pour le moment, le code externe n'a aucun moyen de voir le solde actuel. Corrigeons cela en ajoutant une fonction getter.
Un getter est la manière appropriée d'exposer des données cachées dans un module encapsulé. Au lieu de rendre le champ du solde public (ce qui romprait 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 lit uniquement les données et ne les modifie jamais) 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 de solde caché du compte. Remarquez que cette fonction peut accéder aux données internes parce qu'elle est définie dans le même fichier que la structure : le code externe ne peut toujours pas y accéder directement.main.c: Vous pouvez maintenant 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 second montant de dépôt.
Dans votre fichier main, créez un compte et affichez son solde initial (qui doit être de 0.00). Déposez le premier montant et affichez le nouveau solde. Retirez le montant indiqué et affichez à nouveau le solde. Enfin, effectuez le second dépôt et affichez le solde final. Détruisez ensuite 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 où les soldes correspondent aux valeurs suivantes : initiale (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 supplémentaire de 150.00. Formatez toutes les valeurs de solde avec deux décimales à l'aide de %.2f.
Grâce à ce getter, votre module de compte bancaire fournit 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'au moyen de vos fonctions validées de dépôt et de retrait.
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 second dépôt
destroy_account(account);
printf("Account destroyed\n");
return 0;
}Toutes les leçons de Programmation Orientée Objet
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 cercleImplémentation du rectangleUtilisation polymorpheConteneur de formesEntraînez-vous par vous-même : Compilateur C en ligne