• Like
  • Save
Chapitre 2 poo classe objet c++
Upcoming SlideShare
Loading in...5
×
 

Chapitre 2 poo classe objet c++

on

  • 805 views

 

Statistics

Views

Total Views
805
Views on SlideShare
805
Embed Views
0

Actions

Likes
1
Downloads
16
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Chapitre 2 poo classe objet c++ Chapitre 2 poo classe objet c++ Presentation Transcript

    • 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; }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
    • 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 à membre un pointeur signifie que ptr de lobjet y pointe au même endroit que ptr de lobjet x (une recopie dadresse).! 28
    • 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<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
    • 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 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
    • 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
    • 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
    • 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