Finalisation du projet : Boucle principale
Fait partie de la section Programmation Orientée Objet du Journey C de Coddy. Leçon 27 sur 61.
Défi
FacileFélicitations : vous avez créé une bibliothèque complète de comptes bancaires ! Il est maintenant temps de changer de rôle. Au lieu d’être le créateur de la bibliothèque, vous allez devenir l’utilisateur de la bibliothèque. Votre tâche consiste à écrire un programme principal qui met votre module Account à l’épreuve.
Imaginez un client qui entre dans une banque et effectue une série de transactions. Vous allez créer un compte, effectuer des dépôts et des retraits, vérifier le solde au passage, puis finalement clôturer le compte lorsque vous aurez terminé.
Vous allez travailler avec trois fichiers :
account.h: votre fichier d’en-tête complet avec le type opaqueAccountet tous les prototypes de fonctions :create_account,destroy_account,deposit,withdrawetget_balance.account.c: votre implémentation complète avec la structure cachée contenantidetbalance, ainsi que toutes les implémentations de fonctions que vous avez créées tout au long de ce projet.main.c: c’est ici que vous allez montrer ce dont vous êtes capable ! Écrivez un programme qui présente le cycle de vie complet d’un compte bancaire au moyen d’une séquence réaliste de transactions.
Vous recevrez cinq entrées : l’ID du compte (un entier), un premier dépôt, un retrait, un deuxième dépôt et une tentative de découvert (un retrait qui doit échouer en raison de fonds insuffisants).
Votre programme principal doit raconter l’histoire de la vie de ce compte :
- Créer le compte et l’annoncer
- Afficher le solde initial
- Effectuer le premier dépôt et afficher le nouveau solde
- Effectuer un retrait et afficher le solde mis à jour
- Effectuer un autre dépôt et afficher le solde
- Tenter un retrait qui dépasse le solde. Cette opération doit échouer
- Afficher le solde final (inchangé après le retrait échoué)
- Clôturer le compte
Affichez la sortie dans ce format :
Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closedOù 2001 est l’ID du compte, et les montants correspondent à vos entrées. Formatez toutes les valeurs monétaires avec deux décimales à l’aide de %.2f. Le message de retrait échoué doit être affiché lorsque withdraw renvoie 0.
Cette conclusion démontre tout ce que vous avez appris sur l’encapsulation. Votre programme principal interagit avec Account uniquement par l’intermédiaire de son interface publique, sans jamais accéder directement aux données internes cachées.
Essayez vous-même
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Lire account_id, deposit1, withdraw_amount, deposit2 et overdraft depuis l'entrée
// TODO: Créer le compte et afficher "Account <id> created"
// TODO: Afficher le solde initial
// TODO: Effectuer le premier dépôt, afficher "Deposited <amount>" et le nouveau solde
// TODO: Retirer des fonds, afficher "Withdrew <amount>" et le solde mis à jour
// TODO: Effectuer le second dépôt, afficher "Deposited <amount>" et le nouveau solde
// TODO: Attempt the overdraft withdrawal; if it fails, print "Withdrawal failed: insufficient funds"
// TODO: Afficher le solde final
// TODO: Afficher "Account <id> closed" et détruire le compte
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