Cours:PooTD pointeurs : Différence entre versions
(→TD 3 : pointeurs et objets) |
(→TD 3 : pointeurs et objets) |
||
Ligne 21 : | Ligne 21 : | ||
* '''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>. | ** 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 | + | ** Ajouter une méthode <code>enleverCompte(Compte* c)</code> qui enlèvera un compte de la liste des comptes du client (attention : le compte bancaire existe encore pour la banque). |
− | ** Ajouter une méthode <code>solderCompte(Compte* c)</code> qui solde | + | ** Ajouter une méthode <code>solderCompte(Compte* c)</code> qui solde un compte (ie : le compte bancaire n'existe plus pour la banque). |
− | ** Ajouter une méthode <code>migrer(Compte* c, Client* cl)</code> qui transfère | + | ** Ajouter une méthode <code>migrer(Compte* c, Client* cl)</code> qui transfère un compte vers un autre client. |
* 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:19
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 un compte de la liste des comptes du client (attention : le compte bancaire existe encore pour la banque). - Ajouter une méthode
solderCompte(Compte* c)
qui solde un compte (ie : le compte bancaire n'existe plus pour la banque). - Ajouter une méthode
migrer(Compte* c, Client* cl)
qui transfère un compte vers un autre client.
- 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;
}