Cours:PooTD pointeurs : Différence entre versions
(→TD 3 : pointeurs et objets) |
(→TD 3 : pointeurs et objets) |
||
Ligne 23 : | Ligne 23 : | ||
** Modifier l'implémentation de la méthode <code>add_compte()</code> | ** Modifier l'implémentation de la méthode <code>add_compte()</code> | ||
** Il sera nécessaire de coder un destructeur <code>~Client()</code> afin de libérer l'espace mémoire occupé par les comptes crées, lors de la destruction de l'instance de <code>Client</code>. | ** Il sera nécessaire de coder un destructeur <code>~Client()</code> afin de libérer l'espace mémoire occupé par les comptes crées, lors de la destruction de l'instance de <code>Client</code>. | ||
− | ** Ajouter une méthode <code>enleverCompte(Compte* c)</code> qui enlèvera le compte | + | ** Ajouter une méthode <code>enleverCompte(Compte* c)</code> qui enlèvera le compte <code>c</code> de la liste des comptes du client |
+ | ** Ajouter une méthode <code>migrer(Compte* c, Client* cl)</code> qui transfère le compte <code>c</code> vers le client <code>cl</code>; | ||
* Voici un exemple de programme que l'on souhaite pouvoir executer : | * Voici un exemple de programme que l'on souhaite pouvoir executer : |
Version du 22 septembre 2020 à 14:16
TD 3 : pointeurs et objets
On continue avec nos classes Compte
et Client
.
L'inconvénient de l'implémentation du TD 2 est que dans la classe Client
les comptes bancaires ne sont représentés que par leur numéros, ce qui complique leur manipulation.
L'objectif va être de modifier le code de la classe Client
afin que les comptes bancaires soit représentés par des instances de la classe Compte
.
Les attributs de Client
sont donc maintenant :
class Client {
private:
string name;
int nb_comptes=0;
Compte* cpts[32];
...
}
- On stocke donc maintenant les comptes bancaires dans un tableau de pointeurs vers des instances de
Compte
.
- Travail à faire :
- Modifier l'implémentation de la méthode
add_compte()
- Il sera nécessaire de coder un destructeur
~Client()
afin de libérer l'espace mémoire occupé par les comptes crées, lors de la destruction de l'instance deClient
. - Ajouter une méthode
enleverCompte(Compte* c)
qui enlèvera le comptec
de la liste des comptes du client - Ajouter une méthode
migrer(Compte* c, Client* cl)
qui transfère le comptec
vers le clientcl
;
- Modifier l'implémentation de la méthode
- Voici un exemple de programme que l'on souhaite pouvoir executer :
int main() {
Client cl1("Toto");
Client cl2("Titi");
cl1.add_compte(1000); // crée un compte pour Toto
cl1.add_compte(1001); // crée un second compte pour Toto
cl1.get_compte(1000)->depot(100); // effectue un dépôt sur le premier compte de Toto
cout << cl1.to_string() << endl; // affiche la situation bancaire de Toto
cl1.migrer(cl1.get_compte(1000), &cl2); // transfère le compte n°1000 de Toto vers Titi
cout << cl1.to_string() << endl;
cout << cl2.to_string() << endl;
return 0;
}