Logique de dépôt
Fait partie de la section Programmation Orientée Objet du Journey C de Coddy. Leçon 24 sur 61.
Défi
FacileIl est temps d’ajouter la première véritable opération bancaire à votre module Account : la possibilité de déposer des fonds ! Une fonction de dépôt doit être intelligente : elle ne doit accepter que les montants positifs, afin de protéger votre compte contre les transactions invalides.
En vous appuyant sur votre projet Bank Account existant, vous allez étendre le module avec une fonctionnalité de dépôt. Votre fonction de dépôt doit valider l’entrée avant de modifier le solde caché. C’est l’encapsulation qui protège l’intégrité de vos données.
Vous travaillerez avec trois fichiers :
account.h: étendez votre en-tête existant en ajoutant un nouveau prototype de fonction :deposit. Cette fonction doit recevoir un pointeur vers Account et un montantdouble, et retourner unint(1 en cas de succès, 0 si le montant est invalide). Conservez vos déclarations existantes pourcreate_accountetdestroy_account.account.c: implémentez la fonctiondepositaux côtés de votre constructeur et de votre destructeur existants. Le dépôt ne doit réussir que si le montant est positif (supérieur à zéro). S’il est valide, ajoutez le montant au solde caché et retournez 1. Si le montant est nul ou négatif, refusez-le en retournant 0 sans modifier le solde.main.c: démontrez votre fonctionnalité de dépôt en créant un compte et en effectuant plusieurs opérations de dépôt, certaines valides et d’autres invalides, afin de montrer que votre validation fonctionne correctement.
Vous recevrez trois entrées : l’identifiant du compte (un entier), un montant de dépôt valide (un nombre positif) et un montant de dépôt invalide (nul ou négatif).
Dans votre fichier main, créez un compte avec l’identifiant donné et affichez une confirmation. Tentez ensuite d’abord de déposer le montant invalide : affichez si l’opération a réussi et indiquez que le solde doit rester inchangé. Déposez ensuite le montant valide : affichez le résultat de la réussite. Enfin, détruisez le compte et confirmez le nettoyage.
Affichez la sortie dans ce format :
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedOù 1001 est l’identifiant du compte, -50.00 est le montant invalide et 200.00 est le montant valide. Formatez tous les montants avec deux décimales à l’aide de %.2f.
Votre fonction de dépôt agit comme un gardien. Elle garantit que seules les transactions valides peuvent modifier le solde caché du compte. Même si vous ne pouvez pas encore voir le solde (nous ajouterons un accesseur dans une leçon ultérieure), vous pouvez être certain que les dépôts invalides sont correctement refusés.
Essayez vous-même
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
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