C++ - Classes, instances, objets [oo] Exercices résolus Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 27 avril 2015 Table des matières 1 Compte bancaire OO 2 1.1 Classe CBancaire............................... 2 1.2 Procédure de traitement........................... 3 1.3 Programme de test.............................. 3 2 Compte client OO 5 2.1 Classe CClient................................. 5 2.2 Programme de test.............................. 6 1
Unisciel algoprog oo00acxres-texte, April 27, 2015 2 1 Compte bancaire OO Cet exercice résolu applique les principes de la conception objet afin de réaliser une version OO «pure» de la gestion d un compte bancaire. 1.1 Classe CBancaire Un compte bancaire (simplifié) est défini par le solde disponible sur le compte. Les opérations de manipulation minimales seront : Initialiser un compte bancaire Accéder au solde d un compte bancaire Créditer un compte bancaire Débiter un compte bancaire On étendra également l interface avec : Un constructeur permettant d initialiser le solde. Une méthode afficher qui affiche l objet. Une méthode virervers qui effectue un virement d un compte vers un autre compte bancaire. Écrivez une classe CBancaire qui inclut un attribut solde (réel). (Veillez à respecter la Règle 2.) Écrivez un constructeur par défaut. (Application Règle 3.) Écrivez un constructeur à un paramètre x (réel) initialisant son attribut. Écrivez un accesseur getsolde du solde du compte. (Application Règle 1.) Écrivez une méthode crediter(x) qui crédite le compte du montant x (réel). Supposez x positif. Écrivez une méthode debiter(x) qui débite le compte du montant x (réel). Supposez x positif. Écrivez une méthode afficher qui affiche le solde. Écrivez une méthode virervers(cb,montant) qui effectue un virement de montant (réel) vers un CBancaire cb. Validez votre classe et vos méthodes avec la solution.
Unisciel algoprog oo00acxres-texte, April 27, 2015 3 C++ @[oocbancairec1.hpp] @[oocbancairec1a.cpp] @[oocbancairec1b.cpp] 1.2 Procédure de traitement Écrivez l en-tête d une procédure traitercompte(cb) qui traite un CBancaire cb. Demandez à l utilisateur un montant (réel). Affichez : Tapez vos montants successifs (0 pour finir) Votre montant (0==fin)? Complétez votre procédure comme suit : TantQue le montant n est pas nul : 1. Selon qu il est positif ou négatif, elle crédite ou débite le CBancaire cb de montant. 2. Ensuite elle affiche l état du nouveau compte. 3. Puis si le solde de cb est négatif, elle avertit l utilisateur afin qu il le réapprovisionne. 4. Finalement elle demande à nouveau le montant afin de pouvoir quitter la boucle TantQue. Validez votre procédure avec la solution. C++ @[traitercomptea1.cpp] 1.3 Programme de test Écrivez un programme qui instancie un CBancaire cb puis le manipule par la procédure traitercompte. Après avoir manipulé le compte, si le solde est positif : Demandez et saisissez le montant du virement Effectuez le virement sur un autre compte, puis Affichez l état des deux comptes. Testez. Exemple d exécution. Tapez vos montants successifs (0 pour finir) Votre montant (0==fin)? 200 Etat du compte: 200 euros Votre montant (0==fin)? -350 Etat du compte: -150 euros OUPS... cb en négatif -- veuillez alimenter Votre montant (0==fin)? 170 Etat du compte: 20 euros Votre montant (0==fin)? 0
Unisciel algoprog oo00acxres-texte, April 27, 2015 4 Validez votre programme avec la solution. C++ @[pg-oocbancairec1.cpp]
Unisciel algoprog oo00acxres-texte, April 27, 2015 5 2 Compte client OO Cet exercice résolu définit un compte client OO. Il utilise la classe CBancaire. 2.1 Classe CClient Un client a : Un nom (chaîne de caractères). Une ville (chaîne de caractères). Un numéro de compte numero (entier). Un compte courant cpt1 (type CBancaire). Et un compte d épargne cpt2 (type CBancaire). Écrivez une classe CClient contenant les attributs spécifiés. Validez votre définition avec la solution. C++ @[oocclientc0.hpp] Écrivez le constructeur par défaut. Écrivez un constructeur normal qui initialise tous les attributs. Écrivez un accesseur getnum du numéro du compte. Écrivez une méthode afficher qui affiche les données du compte comme suit : Client: [nom] de [ville] #compte [numero] compte courant: [cpt1] compte epargne: [cpt2] Orientation Utilisez au maximum les accesseurs (pour numero). Appelez la méthode d affichage de CBancaire (pour cpt1 et cpt2). Écrivez une méthode boucler(taux) qui : 1. Cumule les intérêts mensuels du compte épargne cpt2 pour un taux annuel de taux (réel). 2. Si le compte courant cpt1 est à découvert (c.-à-d. négatif), elle l approvisionne depuis le compte épargne pour le ramener à zéro.
Unisciel algoprog oo00acxres-texte, April 27, 2015 6 Validez votre classe et vos méthodes avec la solution. C++ @[oocclientc1.hpp] @[oocclientc1a.cpp] @[oocclientc1b.cpp] 2.2 Programme de test Écrivez un programme qui définit une constante TAUX de valeur 0.06 puis instancie un CClient cc de nom "Pedro", habitant à "Colmar", de numéro 1234, de -500e sur le CC et de 2000e sur le CE. Affichez les données du client avant et après le bouclage (en fin de mois). Testez. Résultat d exécution. Etat du compte avant bouclage: Client: Pedro de Colmar #compte 1234 compte courant: -500 euros compte epargne: 2000 euros Etat du compte après bouclage: Client: Pedro de Colmar #compte 1234 compte courant: 0 euros compte epargne: 1510 euros Validez votre programme avec la solution. C++ @[pg-oocclientc1.cpp]