Vous êtes sur la page 1sur 4

Algorithmique Avancée et Programmation

Série d'exercices n°6

Exercice 1

On reprend l'exercice sur les nombres complexes (TP3, Ex1). L'objectif est d'utiliser les
classes de C++ plutôt que les structures de C.

1. Recopier la structure écrite en C dans un projet C++. Passer les fonctions printfCplx et
scanfCplx comme fonctions membres de la structure (le principe est le même que pour les
méthodes d'une classe). On laissera les fonctions sommeCplx et produitCplx hors de la
structure. Réécrire la fonction main suivant les modifications effectuées pour tester le
programme.

2. Procéder à la création d'une classe Complexe plutôt que d'une structure. On se contentera
dans un premier temps d'utiliser le constructeur par défaut. Tester la classe créée.

3. On désire protéger l'accès aux attributs de la classe Complexe en les déclarant privés, les
méthodes étant déclarées publiques. Ajouter deux méthodes, getReel et getImag,
retournant les attributs de la classe (de telles méthodes sont appelées accesseurs) et deux
méthodes, setReel et setImag, permettant de modifier les valeurs des attributs de la classe
(de telles méthodes sont appelées modificateurs). Modifier le reste du programme pour
utiliser ces méthodes quand nécessaire.

4. Ajouter un constructeur qui initialisera un nombre complexe à partir de deux réels passés
en paramètres. L’existence de ce constructeur efface le constructeur par défaut. Réécrire le
constructeur par défaut pour qu'il initialise les deux attributs à zéro. Tester ces deux
constructeurs dans le main.

5. Réécrire les entêtes des fonctions sommeCplx et produitCplx pour qu'elles servent en
temps qu'opérateurs d'addition + et de produit * (surcharge d'opérateurs). Tester les
opérateurs dans le main.

Exercice 2 – Classes Compte et Client


Les classes suivantes, ’Compte’, ’Client’ vont permettre la création et la simulation du
fonctionnement d’une banque : création des clients, ajout de comptes aux clients et
mouvements sur les comptes.
Classe Compte
Créer la classe ’Compte’ en utilisant le diagramme UML et les précisions concernant les
méthodes :

Compte
- numero : long
- solde : float
+ Compte(long)
+ getSolde() : float
+ getNumero() : long
+ credit(float)
+ debit(float)
+ to_string() : string

1. le constructeur mémorise le numéro de compte et fixe le solde à 0


2. les accesseurs (get...) renvoient les valeurs des attributs correspondants
3. les méthodes credit et debit respectivement crédite et débite le solde du compte d’un
certain montant
4. la méthode to_string renvoie une représentation textuelle de l’objet (cf. exemple de
résultat plus bas)

Ecrire un main effectuant les instructions suivantes :

 instancier un compte de numéro 123456


 afficher le compte (en utilisant la méthode to_string())
 créditer le compte de 1000
 afficher le compte 0
 débiter le compte de 1500
 afficher le compte

Compiler et tester

L’exécution doit produire le résultat ci-dessous :

Compte 123456 - Solde : 0

Compte 123456 - Solde : 1000

Compte 123456 - Solde : -500 ** a surveiller **

Classe Client

Créer la classe ’Client’ en utilisant le diagramme UML et les précisions concernant les
méthodes :
Client
- numero : long
- nom : string
+ Client(long, string)
+ getNumero() : long
+ getNom() : string
+ setNom(string)
+ to_string() : string

1. le constructeur mémorise le numéro et le nom


2. les accesseurs et modificateurs (set...) renvoient et modifient les valeurs des attributs
correspondants
3. la méthode to_string renvoie une représentation textuelle d’un client (cf. exemple de
résultat plus bas)

Ecrire un main effectuant les instructions suivantes :

 instancier un client de numéro 1 et de nom "Gold"


 instancier un client de numéro 2 et de nom "Silver"
 afficher les 2 clients
 modifier le nom du client de la 2ème instance avec "Platinum" (au lieu de Silver)
 afficher la 2ème instance de Client
 modifier le numéro de la 1ère instance de client (est-ce possible ? pourquoi ?)

Compiler et tester

L’exécution produit le résultat suivant :

Client 1 - Gold

Client 2 - Silver

Client 2 – Platinum

Modification de la classe Client

On souhaite connaître associer à chaque client la liste de ses comptes. Pour cela, la classe
Client sera modifiée comme suit.

1. ajouter un attribut privé qui conserve la liste des comptes du client


2. la méthode getComptes renvoie la liste des comptes du client
3. la méthode addCompte ajoute un compte à la collection de comptes du client
4. modifier la méthode to_string pour afficher le nombre de comptes du client
Client
- numero : long
- nom : string
- comptes : vector<Compte>
+ Client(long, string)
+ getNumero() : long
+ getNom() : string
+ getComptes() : vector<Compte>
+ setNom(string)
+ addCompte(Compte)
+ to_string() : string

Tester la nouvelle classe dans un main permettant de :

 instancier un client de numéro 1 et de nom "Gold"


 instancier trois comptes qui seront rattachés au client 1
 utiliser la méthode addCompte() pour ajouter les comptes à la collection des comptes
du client 1
 tester la méthode to_string() de la classe Client
 afficher (to_string()) l’un des comptes du client 1 en y accédant par la méthode
getComptes()

Vous aimerez peut-être aussi