affiche(); delete ptr; ptr=new Note("Gaston", "Fourien",18); ptr->affiche(); delete ptr;">

La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Exercice 4. Enoncé On veut écrire un programme qui permet de gérer une liste de notes grâce à un tableau de taille variable On créé la classe note : Note.

Présentations similaires


Présentation au sujet: "Exercice 4. Enoncé On veut écrire un programme qui permet de gérer une liste de notes grâce à un tableau de taille variable On créé la classe note : Note."— Transcription de la présentation:

1 Exercice 4

2 Enoncé On veut écrire un programme qui permet de gérer une liste de notes grâce à un tableau de taille variable On créé la classe note : Note Note(string,string,int) ~Note() void affiche() nom : string prenom : string valeur : int

3 Et les pointeurs? L’avantage des pointeurs, c’est de pouvoir créer et détruire à volonté des notes : Note *ptr; ptr=new Note("thib", "Lelore",12); ptr->affiche(); delete ptr; ptr=new Note("Gaston", "Fourien",18); ptr->affiche(); delete ptr;

4 Source d’erreurs Où est l’erreur : Note *ptr; ptr=new Note("thib", "Lelore",12); ptr=new Note("Gaston", "Fourien",18); ptr->affiche(); delete ptr;

5 Source d’erreurs Où est l’erreur : Note *ptr; ptr=new Note("thib", "Lelore",12); delete ptr; ptr=new Note("Gaston", "Fourien",18); delete ptr; ptr->affiche();

6 Une liste de note Le principe est d’utiliser un tableau de pointeurs : LeloreThib10 FourienGaston18 ZarhiFred17 ChiracJaco4.5 SarkoNico8 RoyalSego12 Note *tableau[6]; Tableau[0]=new Note("Lelore", "Thib",10); Tableau[1]=new Note("Fourien", "Gaston",18); Tableau[2]=new Note("Zarhi", "Fred",17); Tableau[3]=new Note("Chirac", "Jaco",4.5); Tableau[4]=new Note("Sarko", "Nico",8); Tableau[5]=new Note("Royal", "Sego",12);

7 Nouvelle et ancienne représentation 23A8 23AB 23AF 23B3 23B7 23BA LeloreThib 10 FourienGaston18 ZarhiFred17 ChiracJaco4.5 SarkoNico8 RoyalSego12 23B7 23BA 23B3 23AB 23AF 23A8 23A7 23A6 23A5 23A4 23A3 23A2

8 Finalement Quels sont les avantages par rapport à un tableau de Note simple? Quand on écrit Note tableau[10]; On créé 10 notes vides (en utilisant le constructeur par défaut) Quand on écrit Note *tableau[10]; On créé 10 cases qui ne pointent sur rien On peut créer des Notes au besoin. Plus logique (on créé des notes quand il faut) Plus simple pas besoin de penser à créer un constructeur par défaut

9 Donc la fonction ajoutNote Ce qu’il faut c’est ajouter une note dans la bonne case void ajoutNote(string nom,string prenom, int note){ this->tableau[this->nb]=new Note(nom,prenom,note); this->nb=this->nb+1;} this->nb Donc on utilise une variable pour savoir dans quelle case ajouter la note ( this->nb ) Par contre, on a oublié de tester si on ne sort pas du tableau (si on a 10 cases et qu’on veux créer une 11 ème note…)

10 Afficher les notes Pour afficher toutes les notes, il faut utiliser une boucle. Deux manières de faire : void afficherNotes(){ for(int i=0;i nb;i++){ *(this->tableau[i]).affiche();}} this->tableau[i]->affiche();this->tableau[i]->affiche();

11 Conclusion this this est un pointeur ! C’est un pointeur sur nous même -> -> permet d’utiliser les méthodes et attributs d’un pointeur this-> Si c’est this->, c’est les méthodes et attributs de notre classe ptr-> Si c’est ptr->, c’est les méthodes et attributs de la classe de l’objet pointé…

12 Mais c’est pas tout… Il faut permettre de faire un tableau de différentes tailles Il faut donc faire un pointeur sur un tableau de pointeurs Deux manières : Note **tableau; Note **tableau; Note *tableau[]; Note *tableau[]; Choisissez celle que vous préférez… Ensuite, créer le tableau comme ça : tableau=new Note*[10]; tableau=new Note*[10];

13 Ça se complique… Bon, et le destructeur ? On a tous pensé faire delete [] this->tableau; delete [] this->tableau; C’est pas suffisant : 23BA 23B7 23B3 23AF 23AB 23A8 LeloreThib10 FourienGaston18 ZarhiFred17 ChiracJaco4.5 SarkoNico8 RoyalSego12 23A1

14 Ça se complique… Résultat : 23BA 23B7 23B3 23AF 23AB 23A8 LeloreThib10 FourienGaston18 ZarhiFred17 ChiracJaco4.5 SarkoNico8 RoyalSego12 23A1

15 Pour bien faire : Parcourir le tableau pour détruire chaque case Puis détruire le tableau : for (int i=0;i nb;i++){ delete this->tableau[i]; } delete [] tableau; Et là, c’est bon…

16 Résultat : 23BA 23B7 23B3 23AF 23AB 23A8 LeloreThib10 FourienGaston18 ZarhiFred17 ChiracJaco4.5 SarkoNico8 RoyalSego12 23A1


Télécharger ppt "Exercice 4. Enoncé On veut écrire un programme qui permet de gérer une liste de notes grâce à un tableau de taille variable On créé la classe note : Note."

Présentations similaires


Annonces Google