75
1 Chapitre 2: notions de classes, objets en C++ 1

Chapitre 2 poo classe objet c++

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Chapitre 2 poo classe objet c++

1

Chapitre 2: notions de classes, objets en C++

1

Page 2: Chapitre 2 poo classe objet c++

22

Page 3: Chapitre 2 poo classe objet c++

33

Page 4: Chapitre 2 poo classe objet c++

44

Page 5: Chapitre 2 poo classe objet c++

55

Page 6: Chapitre 2 poo classe objet c++

66

Page 7: Chapitre 2 poo classe objet c++

77

Page 8: Chapitre 2 poo classe objet c++

88

Page 9: Chapitre 2 poo classe objet c++

99

Page 10: Chapitre 2 poo classe objet c++

10

Page 11: Chapitre 2 poo classe objet c++

1111

Page 12: Chapitre 2 poo classe objet c++

1212

Page 13: Chapitre 2 poo classe objet c++

1313

Page 14: Chapitre 2 poo classe objet c++

1414

prenom=p; nom = n;

Page 15: Chapitre 2 poo classe objet c++

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++

16

compte(double d) : actif(d) { }

Page 17: Chapitre 2 poo classe objet c++

17

Page 18: Chapitre 2 poo classe objet c++

1818

Page 19: Chapitre 2 poo classe objet c++

1919

Page 20: Chapitre 2 poo classe objet c++

20

Objet statique

Page 21: Chapitre 2 poo classe objet c++

21

Page 22: Chapitre 2 poo classe objet c++

22

Objet dynamique

……………………

Page 23: Chapitre 2 poo classe objet c++

23

Page 24: Chapitre 2 poo classe objet c++

24

Page 25: Chapitre 2 poo classe objet c++

25

Page 26: Chapitre 2 poo classe objet c++

26

Page 27: Chapitre 2 poo classe objet c++

27

Page 28: Chapitre 2 poo classe objet c++

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++

29

Page 30: Chapitre 2 poo classe objet c++

30

Page 31: Chapitre 2 poo classe objet c++

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++

3232

Page 33: Chapitre 2 poo classe objet c++

3333

Page 34: Chapitre 2 poo classe objet c++

3434

Page 35: Chapitre 2 poo classe objet c++

3535

Page 36: Chapitre 2 poo classe objet c++

3636

Page 37: Chapitre 2 poo classe objet c++

3737

Page 38: Chapitre 2 poo classe objet c++

3838

Page 39: Chapitre 2 poo classe objet c++

3939

Page 40: Chapitre 2 poo classe objet c++

4040

ClassTestStatic a, b;

a.NbObjet =10;

Page 41: Chapitre 2 poo classe objet c++

4141

Page 42: Chapitre 2 poo classe objet c++

4242

Page 43: Chapitre 2 poo classe objet c++

4343

Page 44: Chapitre 2 poo classe objet c++

4444

Page 45: Chapitre 2 poo classe objet c++

4545

Page 46: Chapitre 2 poo classe objet c++

4646

Page 47: Chapitre 2 poo classe objet c++

4747

Page 48: Chapitre 2 poo classe objet c++

4848

Page 49: Chapitre 2 poo classe objet c++

4949

Page 50: Chapitre 2 poo classe objet c++

5050

Page 51: Chapitre 2 poo classe objet c++

5151

Page 52: Chapitre 2 poo classe objet c++

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++

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++

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++

5555

Page 56: Chapitre 2 poo classe objet c++

5656

Page 57: Chapitre 2 poo classe objet c++

57

Exemple : 1

Page 58: Chapitre 2 poo classe objet c++

58

Page 59: Chapitre 2 poo classe objet c++

59

Page 60: Chapitre 2 poo classe objet c++

60

Exemple 2

Page 61: Chapitre 2 poo classe objet c++

61

Page 62: Chapitre 2 poo classe objet c++

62

Page 63: Chapitre 2 poo classe objet c++

63

Page 64: Chapitre 2 poo classe objet c++

64

Exemple 3

Page 65: Chapitre 2 poo classe objet c++

65

Page 66: Chapitre 2 poo classe objet c++

66

Page 67: Chapitre 2 poo classe objet c++

67

Page 68: Chapitre 2 poo classe objet c++

68

Page 69: Chapitre 2 poo classe objet c++

69

Exemple 4

Page 70: Chapitre 2 poo classe objet c++

70

Page 71: Chapitre 2 poo classe objet c++

71

Page 72: Chapitre 2 poo classe objet c++

72

Exemple 5

Page 73: Chapitre 2 poo classe objet c++

73

Page 74: Chapitre 2 poo classe objet c++

74

Page 75: Chapitre 2 poo classe objet c++

75