Chapitre 2 poo classe objet c++
-
Upload
amel-morchdi -
Category
Documents
-
view
4.697 -
download
5
description
Transcript of Chapitre 2 poo classe objet c++
![Page 1: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/1.jpg)
1
Chapitre 2: notions de classes, objets en C++
1
![Page 2: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/2.jpg)
22
![Page 3: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/3.jpg)
33
![Page 4: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/4.jpg)
44
![Page 5: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/5.jpg)
55
![Page 6: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/6.jpg)
66
![Page 7: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/7.jpg)
77
![Page 8: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/8.jpg)
88
![Page 9: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/9.jpg)
99
![Page 10: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/10.jpg)
10
![Page 11: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/11.jpg)
1111
![Page 12: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/12.jpg)
1212
![Page 13: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/13.jpg)
1313
![Page 14: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/14.jpg)
1414
prenom=p; nom = n;
![Page 15: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/15.jpg)
1515
…main(…) { ……….Personne P; Personne P1("ali" , " ben saleh“);P1.affichage();. …………..
void affichage() ;void modification(string , string);
Personne::affichage () {cout << prenom << endl << nom << endl;}
Personne:: modification ( string p, string n) {Prenom=p; nom= n;}
Prenom=« »; nom=« »;
P.modification(« ali1 », « hj»);P.affichage();
}
![Page 16: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/16.jpg)
16
compte(double d) : actif(d) { }
![Page 17: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/17.jpg)
17
![Page 18: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/18.jpg)
1818
![Page 19: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/19.jpg)
1919
![Page 20: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/20.jpg)
20
Objet statique
![Page 21: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/21.jpg)
21
![Page 22: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/22.jpg)
22
Objet dynamique
……………………
![Page 23: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/23.jpg)
23
![Page 24: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/24.jpg)
24
![Page 25: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/25.jpg)
25
![Page 26: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/26.jpg)
26
![Page 27: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/27.jpg)
27
![Page 28: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/28.jpg)
28
Problème constructeur par copie implicite (variables dynamiques)
Copier membre à membre un pointeur signifie que ptr de l'objet y pointe au même endroit que ptr de l'objet x (une recopie d'adresse).!
![Page 29: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/29.jpg)
29
![Page 30: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/30.jpg)
30
![Page 31: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/31.jpg)
31
class T { int *ptr; int nbre;public : T(const T& t2) { nbre= t2.nbre; ptr = new int[nbre]; for (int i=0; i<nbre ; i++) ptr[i]= t2.ptr[i]; }…..}………T t1;….. Remplir les elémént de t1 [1, 3, 5]T t2=t1; // copie de t1 à t2
T t2(t1);
![Page 32: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/32.jpg)
3232
![Page 33: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/33.jpg)
3333
![Page 34: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/34.jpg)
3434
![Page 35: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/35.jpg)
3535
![Page 36: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/36.jpg)
3636
![Page 37: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/37.jpg)
3737
![Page 38: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/38.jpg)
3838
![Page 39: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/39.jpg)
3939
![Page 40: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/40.jpg)
4040
ClassTestStatic a, b;
a.NbObjet =10;
![Page 41: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/41.jpg)
4141
![Page 42: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/42.jpg)
4242
![Page 43: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/43.jpg)
4343
![Page 44: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/44.jpg)
4444
![Page 45: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/45.jpg)
4545
![Page 46: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/46.jpg)
4646
![Page 47: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/47.jpg)
4747
![Page 48: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/48.jpg)
4848
![Page 49: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/49.jpg)
4949
![Page 50: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/50.jpg)
5050
![Page 51: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/51.jpg)
5151
![Page 52: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/52.jpg)
5252
Instanciation dynamique– Le destructeur
le destructeur est une méthode appelée lorsque l'objet est détruit. Le destructeur doit être impérativement écrit pour libérer la mémoire allouée de façon dynamique pendant la vie d'un objet.
class A { private: ... public: A(); // Constructeur par défaut ~A(); // Destructeur ... };
– Durée de vie d'un objetLe destructeur est appelé lorsque l'objet est détruit. Quand un objet est-il détruit ? Dans le cas d'une instanciation
automatique (c'est à dire non dynamique), l'objet est détruit à la fin du bloc dans lequel il a été déclaré.int main() { A a1; for(int i = 0; i<10; i++) { A a2; a2.afficher(); } // Destruction de a2 a1.afficher();} // Destruction de a1
![Page 53: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/53.jpg)
5353
Instanciation dynamiqueL'allocation dynamique du C++ s'effectue avec les opérateurs new et delete, on doit absolument éviter d'utiliser les fonctions malloc et free qui sont propres
au C. L'allocation dynamique s'effectue avec l'opérateur new : l'objet est alloué puis initialisé par appel au constructeur.// Allocation dynamique d'un entier
int * ptr_entier = new int;
// Allocation dynamique d'un objet de classe Etudiant// Le constructeur par défaut est appelé
Etudiant * ptr_etudiant1 = new Etudiant; // Allocation dynamique d'un objet de classe Etudiant// Le constructeur avec un paramètre de type double est appelé
Etudiant * ptr_etudiant2 = new Etudiant(12.5); On utilise l'opérateur delete pour la suppression d'un objet dynamique. // Suppression de l'objet pointé par ptr_entier
delete ptr_entier;
// Suppression de l'objet pointé par ptr_etudiant1// Le destructeur de l'objet (de classe Etudiant) est appelé
delete ptr_etudiant1;
// Suppression de l'objet pointé par ptr_etudiant2// Le destructeur de l'objet (de classe Etudiant) est appelé
delete ptr_etudiant2;
![Page 54: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/54.jpg)
5454
Exemple de tableau :
Tableau d’étudiants qui n’est pas dynamique :Etudiant promo2002[30];
L'allocation dynamique d'un tableau s'effectue comme suit :Etudiant * promo2003 = new Etudiant[30];
Dans ce cas là, il faut à la libération du tableau appeler l'opérateur delete [], sinon seul le premier élément du tableau sera effectivement détruit :
delete [] promo2003;
Instanciation dynamique
![Page 55: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/55.jpg)
5555
![Page 56: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/56.jpg)
5656
![Page 57: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/57.jpg)
57
Exemple : 1
![Page 58: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/58.jpg)
58
![Page 59: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/59.jpg)
59
![Page 60: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/60.jpg)
60
Exemple 2
![Page 61: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/61.jpg)
61
![Page 62: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/62.jpg)
62
![Page 63: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/63.jpg)
63
![Page 64: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/64.jpg)
64
Exemple 3
![Page 65: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/65.jpg)
65
![Page 66: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/66.jpg)
66
![Page 67: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/67.jpg)
67
![Page 68: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/68.jpg)
68
![Page 69: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/69.jpg)
69
Exemple 4
![Page 70: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/70.jpg)
70
![Page 71: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/71.jpg)
71
![Page 72: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/72.jpg)
72
Exemple 5
![Page 73: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/73.jpg)
73
![Page 74: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/74.jpg)
74
![Page 75: Chapitre 2 poo classe objet c++](https://reader031.fdocument.pub/reader031/viewer/2022020922/54744241b4af9fc80a8b5611/html5/thumbnails/75.jpg)
75