Implémentation du compte
Fait partie de la section Object Oriented Programming du Journey C de Coddy — leçon 23 sur 61.
Défi
FacileIl est maintenant temps de donner vie à votre compte bancaire ! Vous avez déjà créé l'interface publique dans account.h—vous allez maintenant implémenter les mécanismes internes cachés qui le font fonctionner.
En vous appuyant sur votre travail précédent, vous ajouterez le fichier source qui contient la définition secrète de la structure et les implémentations réelles des fonctions. C'est là que l'encapsulation prend tout son sens—le corps de la structure n'existe que dans le fichier .c, totalement invisible pour quiconque utilise votre bibliothèque.
Vous travaillerez avec trois fichiers :
account.h: Votre en-tête existant avec la déclaration opaque du typeAccountet les prototypes de fonctions pourcreate_accountetdestroy_account. Conservez vos gardes d'inclusion avecACCOUNT_H.account.c: C'est ici que la magie opère. Définissez la structure réellestruct Accountavec deux membres cachés :int id(l'identifiant du compte) etdouble balance(commençant à 0.0 pour les nouveaux comptes). Implémentez votre constructeur pour allouer la mémoire, définir l'ID à partir du paramètre et initialiser le solde à zéro. Implémentez votre destructeur pour libérer correctement la mémoire.main.c: Testez votre implémentation en créant un compte et en confirmant qu'il fonctionne. Puisque les membres de la structure sont cachés, vous ne pouvez pas regarder à l'intérieur—mais vous pouvez vérifier que le cycle de vie fonctionne correctement.
Vous recevrez une entrée : l'ID du compte (un entier) à attribuer au nouveau compte.
Dans votre fichier principal, créez un compte avec l'ID fourni, affichez un message de confirmation montrant l'ID, puis détruisez le compte et confirmez le nettoyage.
Affichez la sortie dans ce format :
Account 1001 created
Account destroyedOù 1001 est remplacé par l'ID réel que vous avez reçu en entrée.
Rappel : votre main.c ne peut pas accéder directement à account->id ou account->balance—ces membres sont complètement cachés à l'intérieur de account.c. Pour l'instant, vous utiliserez simplement l'ID de l'entrée pour votre message de sortie. Dans les prochaines leçons, vous ajouterez des fonctions "getter" pour récupérer correctement les données cachées.
Essayez vous-même
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: lire account_id depuis l'entrée
scanf("%d", &account_id);
// TODO: créer un compte en utilisant create_account() et afficher "Account <id> created"
// TODO: détruire le compte en utilisant destroy_account() et afficher "Account destroyed"
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