Cours:PooTD pointeurs : Différence entre versions
(Page créée avec « ==TD 3 : pointeurs et objets== On continue avec nos classes <code>Compte</code> et <code>Client</code>. L'inconvénient de l'implémentation d... ») |
(→TD 3 : pointeurs et objets) |
||
Ligne 20 : | Ligne 20 : | ||
* On stocke donc maintenant les comptes bancaires dans un tableau de pointeurs vers des instances de <code>Compte</code>. | * On stocke donc maintenant les comptes bancaires dans un tableau de pointeurs vers des instances de <code>Compte</code>. | ||
− | * Travail à faire : | + | * '''Travail à faire''' : |
** 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>. |
+ | ** Ajouter une méthode <code>enleverCompte(Compte* c)</code> qui enlèvera le compte | ||
* 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:13
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 compte
- 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;
}