Chapitre 2: notions de classes,        objets en C++                                  1
2
3
4
5
6
7
8
9
10
11
12
13
prenom=p; nom = n;                     14
Personne::affichage () {                                      cout << prenom << endl << nom << endl;                      ...
compte(double d) : actif(d) { }                                  16
17
18
19
Objet statique                 20
21
Objet dynamique……………………                      22
23
24
25
26
27
Problème constructeur par copie implicite   (variables dynamiques)                                     Copier membre à mem...
29
30
class T {  int *ptr;  int nbre;public :  T(const T& t2) {     nbre= t2.nbre;     ptr = new int[nbre];     for (int i=0; i<...
32
33
34
35
36
37
38
39
ClassTestStatic a, b;a.NbObjet =10;                        40
41
42
43
44
45
46
47
48
49
50
51
Instanciation dynamique       –       Le destructeurle destructeur est une méthode appelée lorsque lobjet est détruit. Le ...
Instanciation dynamiqueLallocation dynamique du C++ seffectue avec les opérateurs new et delete, on doit absolument éviter...
Instanciation dynamiqueExemple de tableau :Tableau d’étudiants qui n’est pas dynamique :Etudiant promo2002[30];Lallocation...
55
56
Exemple : 1              57
58
59
Exemple 2            60
61
62
63
Exemple 3            64
65
66
67
68
Exemple 4            69
70
71
Exemple 5            72
73
74
75
Prochain SlideShare
Chargement dans…5
×

Chapitre 2 poo classe objet c++

5 027 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
5 027
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
161
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Chapitre 2 poo classe objet c++

  1. 1. Chapitre 2: notions de classes, objets en C++ 1
  2. 2. 2
  3. 3. 3
  4. 4. 4
  5. 5. 5
  6. 6. 6
  7. 7. 7
  8. 8. 8
  9. 9. 9
  10. 10. 10
  11. 11. 11
  12. 12. 12
  13. 13. 13
  14. 14. prenom=p; nom = n; 14
  15. 15. Personne::affichage () { cout << prenom << endl << nom << endl; }Prenom=« »; nom=« »; Personne:: modification ( string p, string n) { Prenom=p; nom= n;void affichage() ; }void modification(string , string); P.modification(« ali1 », « hj»); P.affichage();…main(…) {………. }Personne P;Personne P1("ali" , " ben saleh“);P1.affichage();.………….. 15
  16. 16. compte(double d) : actif(d) { } 16
  17. 17. 17
  18. 18. 18
  19. 19. 19
  20. 20. Objet statique 20
  21. 21. 21
  22. 22. Objet dynamique…………………… 22
  23. 23. 23
  24. 24. 24
  25. 25. 25
  26. 26. 26
  27. 27. 27
  28. 28. Problème constructeur par copie implicite (variables dynamiques) Copier membre à membre un pointeur signifie que ptr de lobjet y pointe au même endroit que ptr de lobjet x (une recopie dadresse).! 28
  29. 29. 29
  30. 30. 30
  31. 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 à t2T t2(t1); 31
  32. 32. 32
  33. 33. 33
  34. 34. 34
  35. 35. 35
  36. 36. 36
  37. 37. 37
  38. 38. 38
  39. 39. 39
  40. 40. ClassTestStatic a, b;a.NbObjet =10; 40
  41. 41. 41
  42. 42. 42
  43. 43. 43
  44. 44. 44
  45. 45. 45
  46. 46. 46
  47. 47. 47
  48. 48. 48
  49. 49. 49
  50. 50. 50
  51. 51. 51
  52. 52. Instanciation dynamique – Le destructeurle destructeur est une méthode appelée lorsque lobjet 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 dun objet. class A { private: ... public: A(); // Constructeur par défaut ~A(); // Destructeur ... }; – Durée de vie dun objetLe destructeur est appelé lorsque lobjet est détruit. Quand un objet est-il détruit ? Dans le cas dune instanciation automatique (cest à dire non dynamique), lobjet 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 52
  53. 53. Instanciation dynamiqueLallocation dynamique du C++ seffectue avec les opérateurs new et delete, on doit absolument éviter dutiliser les fonctions malloc et free qui sont propres au C.Lallocation dynamique seffectue avec lopérateur new : lobjet est alloué puis initialisé par appel au constructeur.// Allocation dynamique dun entierint * ptr_entier = new int;// Allocation dynamique dun objet de classe Etudiant// Le constructeur par défaut est appeléEtudiant * ptr_etudiant1 = new Etudiant;// Allocation dynamique dun objet de classe Etudiant// Le constructeur avec un paramètre de type double est appeléEtudiant * ptr_etudiant2 = new Etudiant(12.5);On utilise lopérateur delete pour la suppression dun objet dynamique.// Suppression de lobjet pointé par ptr_entierdelete ptr_entier;// Suppression de lobjet pointé par ptr_etudiant1// Le destructeur de lobjet (de classe Etudiant) est appelédelete ptr_etudiant1;// Suppression de lobjet pointé par ptr_etudiant2// Le destructeur de lobjet (de classe Etudiant) est appelédelete ptr_etudiant2; 53
  54. 54. Instanciation dynamiqueExemple de tableau :Tableau d’étudiants qui n’est pas dynamique :Etudiant promo2002[30];Lallocation dynamique dun tableau seffectue comme suit :Etudiant * promo2003 = new Etudiant[30];Dans ce cas là, il faut à la libération du tableau appeler lopérateur delete [], sinon seul le premier élément du tableau sera effectivement détruit :delete [] promo2003; 54
  55. 55. 55
  56. 56. 56
  57. 57. Exemple : 1 57
  58. 58. 58
  59. 59. 59
  60. 60. Exemple 2 60
  61. 61. 61
  62. 62. 62
  63. 63. 63
  64. 64. Exemple 3 64
  65. 65. 65
  66. 66. 66
  67. 67. 67
  68. 68. 68
  69. 69. Exemple 4 69
  70. 70. 70
  71. 71. 71
  72. 72. Exemple 5 72
  73. 73. 73
  74. 74. 74
  75. 75. 75

×