Logique de dépôt
Fait partie de la section Object Oriented Programming 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 des montants positifs, protégeant ainsi 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 travaille pour protéger 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 prendre un pointeur Account et un montant de typedouble, en retournant unint(1 pour le 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 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, rejetez-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, d'autres invalides — pour montrer que votre validation fonctionne correctement.
Vous recevrez trois entrées : l'ID du compte (un entier), un montant de dépôt valide (un nombre positif) et un montant de dépôt invalide (zéro ou négatif).
Dans votre fichier principal, créez un compte avec l'ID donné et affichez une confirmation. Tentez ensuite de déposer le montant invalide en premier — affichez s'il a réussi et notez que le solde doit rester inchangé. Ensuite, déposez le montant valide — affichez le résultat de succès. 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'ID du compte, -50.00 est le montant invalide et 200.00 est le montant valide. Formatez tous les montants avec deux décimales en utilisant %.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 sûr que les dépôts invalides sont correctement rejeté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 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