Une grande banque suisse quelque peu en retard sur la concurrence décide enfin d'informatiser la gestion de ses comptes. Pour ce faire, elle vous engage et vous demande de réaliser un prototype de programme de gestion de compte ayant les caractéristiques suivantes.
Un compte en banque doit contenir deux informations: le nom de son propriétaire et le solde. Il doit de plus être possible de déposer de l'argent sur le compte, d'en retirer et de consulter le solde actuel.
Pour des raisons de sécurité, on vous demande aussi d'interdire les opérations illégales, à savoir:
Pour modéliser un compte en banque, vous décidez d'adopter une approche orientée objets. C'est-à-dire que vous définissez une classe pour les comptes en banques, classe qui exporte les trois opérations mentionnées ci-dessus sous forme de méthodes. Cette classe aura le profil suivant:
class Compte {
private:
// ... à compléter ...
public:
enum Reponse { rep_Ok, rep_Somme_Negative, rep_Solde_Insuffisant };
Compte (char proprietaire[]);
Reponse depot (int somme);
Reponse retrait (int somme);
int solde_courant ();
};
Le type énuméré Reponse
permet de savoir si une
opération a été effectuée avec succès ou non. Les méthodes
depot
et retrait
devront retourner une
valeur de ce type pour indiquer si l'opération a pu s'effectuer
correctement ou non. Notez que ce type Reponse
est défini
dans la classe
et que pour y
accéder depuis l'extérieur vous devez utiliser la notation avec le
double deux-points. Par exemple, pour définir une variable
CodeCompter
de ce type Reponse
et lui donner la valeur
rep_Somme_Negative
depuis l'extérieur de la classe, on
doit écrire :
Compte::Reponse r = Compte::rep_Somme_Negative
Pour vous faciliter la programmation, nous mettons à votre
disposition un squelette de programme qui se charge d'une partie des
interactions avec l'utilisateur, que vous pouvez télécharger en
cliquant ici. Une fois la classe
Compte
et la gestion des commandes complétées, vous
pouvez tester votre programme en interagissant avec lui. Voici un
exemple d'interaction :
Tapez :
s pour connaître le solde courant,
d pour effectuer un dépôt,
r pour effectuer un retrait, et
q pour quitter le programme.
Commande: s
Solde courant: 0
Commande: d
Somme à déposer: 100
ok
Commande: s
Solde courant: 100
Commande: r
Somme à retirer: 101
erreur: solde insuffisant !
Commande: r
Somme à retirer: -10
erreur: somme négative !
Commande: d
Somme à déposer: -210
erreur: somme négative !
Commande: r
Somme à retirer: 90
ok
Commande: r
Somme à retirer: 20
erreur: solde insuffisant !
Commande: s
Solde courant: 10
Commande: q
Notez que, comme lors des micro-projets, vous devez travailler en dehors de l'environnement QC++. Si vous ne vous souvenez plus comment travailler dans ces conditions, vous pouvez consulter les notes à ce sujet.
Pour gérer ces comptes multiples, utilisez des listes telles que celles que vous avez utilisées lors des exercices précédents.