SlideShare une entreprise Scribd logo
1  sur  75
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
                                     l'objet y pointe au même endroit
                                     que ptr de l'objet x (une recopie
                                     d'adresse).!




                                                                     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 à t2

T 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 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 objet
Le 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


                                                                                                                         52
Instanciation dynamique
L'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;




                                                                                                                                                   53
Instanciation dynamique
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;




                                                                                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

Contenu connexe

Tendances

Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2Yassine Badri
 
Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Yassine Badri
 
Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Aurélien Regat-Barrel
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsAurélien Regat-Barrel
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java HéritageNadaBenLatifa
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donneesAmir Souissi
 

Tendances (19)

Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Clonage d'objets
Clonage d'objetsClonage d'objets
Clonage d'objets
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
 
Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]
 
Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Qc mcorrige
Qc mcorrigeQc mcorrige
Qc mcorrige
 
Part1
Part1Part1
Part1
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Ch06
Ch06Ch06
Ch06
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomics
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donnees
 

En vedette

La Gestion de Projet Mobile
La Gestion de Projet MobileLa Gestion de Projet Mobile
La Gestion de Projet MobileSebastien Brison
 
UX Mobile - Experience Utilisateur Mobile
UX Mobile - Experience Utilisateur MobileUX Mobile - Experience Utilisateur Mobile
UX Mobile - Experience Utilisateur MobileAudrey CHATEL
 
Atag nouveauté 2012
Atag nouveauté 2012 Atag nouveauté 2012
Atag nouveauté 2012 DEKEYSER sa
 
Illusion Optique
Illusion OptiqueIllusion Optique
Illusion Optiqueguest72e03a
 
Le digital au service de l'innovation sociale
Le digital au service de l'innovation socialeLe digital au service de l'innovation sociale
Le digital au service de l'innovation socialeBlaaast
 
Portails de bibliothèques
Portails de bibliothèquesPortails de bibliothèques
Portails de bibliothèquesPierre Naegelen
 
France 2013 : Baromètre des nouvelles fractures
France 2013 : Baromètre des nouvelles fracturesFrance 2013 : Baromètre des nouvelles fractures
France 2013 : Baromètre des nouvelles fracturesNicole Turbé-Suetens
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Emiland
 
01 fonction stockage_la_batterie
01 fonction stockage_la_batterie01 fonction stockage_la_batterie
01 fonction stockage_la_batterieAbdellah HILALI
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bdCamille Volant
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosionCHTAOU Karim
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALSDrix78
 
Panorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQuePanorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQueDujol Lionel
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEBrice Kosinski
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesTarik Taleb Bendiab
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsajeanpyXD
 

En vedette (20)

La Gestion de Projet Mobile
La Gestion de Projet MobileLa Gestion de Projet Mobile
La Gestion de Projet Mobile
 
UX Mobile - Experience Utilisateur Mobile
UX Mobile - Experience Utilisateur MobileUX Mobile - Experience Utilisateur Mobile
UX Mobile - Experience Utilisateur Mobile
 
Atag nouveauté 2012
Atag nouveauté 2012 Atag nouveauté 2012
Atag nouveauté 2012
 
Diagnostic performances
Diagnostic performancesDiagnostic performances
Diagnostic performances
 
Illusion Optique
Illusion OptiqueIllusion Optique
Illusion Optique
 
Le digital au service de l'innovation sociale
Le digital au service de l'innovation socialeLe digital au service de l'innovation sociale
Le digital au service de l'innovation sociale
 
Portails de bibliothèques
Portails de bibliothèquesPortails de bibliothèques
Portails de bibliothèques
 
Etudes book-ojd-presse
Etudes book-ojd-presseEtudes book-ojd-presse
Etudes book-ojd-presse
 
Slogans
SlogansSlogans
Slogans
 
France 2013 : Baromètre des nouvelles fractures
France 2013 : Baromètre des nouvelles fracturesFrance 2013 : Baromètre des nouvelles fractures
France 2013 : Baromètre des nouvelles fractures
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.
 
01 fonction stockage_la_batterie
01 fonction stockage_la_batterie01 fonction stockage_la_batterie
01 fonction stockage_la_batterie
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bd
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosion
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALS
 
Panorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQuePanorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQue
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINE
 
L’oxydation
L’oxydationL’oxydation
L’oxydation
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiques
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsa
 

Similaire à Chapitre 2 poo classe objet c++

Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdframadanmahdi
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Rahma Boufalgha
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMALoic Yon
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptxSafaeLhr1
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlabN NASRI
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistVincent Agnus
 
CocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central DispatchCocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central DispatchCocoaHeadsRNS
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlStéphane Legrand
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeadsRNS
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfLamissGhoul1
 

Similaire à Chapitre 2 poo classe objet c++ (20)

POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdf
 
Ch03
Ch03Ch03
Ch03
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
Ch10
Ch10Ch10
Ch10
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlab
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
CocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central DispatchCocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central Dispatch
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / Tunisie
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdf
 

Plus de Amel Morchdi

Cours réseaux informatiques ia2
Cours réseaux informatiques  ia2Cours réseaux informatiques  ia2
Cours réseaux informatiques ia2Amel Morchdi
 
Cours r _seaux__chapitre_5
Cours r _seaux__chapitre_5Cours r _seaux__chapitre_5
Cours r _seaux__chapitre_5Amel Morchdi
 
Cours réseaux chap3et4
Cours réseaux chap3et4Cours réseaux chap3et4
Cours réseaux chap3et4Amel Morchdi
 
Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Amel Morchdi
 
Jeux d instruction du 6809
Jeux d instruction du 6809Jeux d instruction du 6809
Jeux d instruction du 6809Amel Morchdi
 
Cours r _seaux_chap1et2
Cours r _seaux_chap1et2Cours r _seaux_chap1et2
Cours r _seaux_chap1et2Amel Morchdi
 
Cours réseaux informatiques iia2
Cours réseaux informatiques  iia2Cours réseaux informatiques  iia2
Cours réseaux informatiques iia2Amel Morchdi
 
Exam seiia2gl20111
Exam seiia2gl20111Exam seiia2gl20111
Exam seiia2gl20111Amel Morchdi
 
Attachments 2011 12_19
Attachments 2011 12_19Attachments 2011 12_19
Attachments 2011 12_19Amel Morchdi
 
Java uik-chap3-bases java
Java uik-chap3-bases javaJava uik-chap3-bases java
Java uik-chap3-bases javaAmel Morchdi
 
Java uik-chap2-dev java
Java uik-chap2-dev javaJava uik-chap2-dev java
Java uik-chap2-dev javaAmel Morchdi
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
 
Td serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritageTd serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritageAmel Morchdi
 
Seria 3 iia2 2011_2012
Seria 3 iia2 2011_2012Seria 3 iia2 2011_2012
Seria 3 iia2 2011_2012Amel Morchdi
 
Attachments 2011 12_19
Attachments 2011 12_19Attachments 2011 12_19
Attachments 2011 12_19Amel Morchdi
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaAmel Morchdi
 

Plus de Amel Morchdi (20)

Cours réseaux informatiques ia2
Cours réseaux informatiques  ia2Cours réseaux informatiques  ia2
Cours réseaux informatiques ia2
 
Cours r _seaux__chapitre_5
Cours r _seaux__chapitre_5Cours r _seaux__chapitre_5
Cours r _seaux__chapitre_5
 
Cours réseaux chap3et4
Cours réseaux chap3et4Cours réseaux chap3et4
Cours réseaux chap3et4
 
Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++
 
Jeux d instruction du 6809
Jeux d instruction du 6809Jeux d instruction du 6809
Jeux d instruction du 6809
 
Cours r _seaux_chap1et2
Cours r _seaux_chap1et2Cours r _seaux_chap1et2
Cours r _seaux_chap1et2
 
Cours réseaux informatiques iia2
Cours réseaux informatiques  iia2Cours réseaux informatiques  iia2
Cours réseaux informatiques iia2
 
Corrections td4
Corrections td4Corrections td4
Corrections td4
 
Cours s epart2
Cours s epart2Cours s epart2
Cours s epart2
 
Exam seiia2gl20111
Exam seiia2gl20111Exam seiia2gl20111
Exam seiia2gl20111
 
Attachments 2011 12_19
Attachments 2011 12_19Attachments 2011 12_19
Attachments 2011 12_19
 
Java uik-chap3-bases java
Java uik-chap3-bases javaJava uik-chap3-bases java
Java uik-chap3-bases java
 
Java uik-chap2-dev java
Java uik-chap2-dev javaJava uik-chap2-dev java
Java uik-chap2-dev java
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 
Td serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritageTd serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritage
 
Seria 3 iia2 2011_2012
Seria 3 iia2 2011_2012Seria 3 iia2 2011_2012
Seria 3 iia2 2011_2012
 
Attachments 2011 12_19
Attachments 2011 12_19Attachments 2011 12_19
Attachments 2011 12_19
 
Cours s epartie2
Cours s epartie2Cours s epartie2
Cours s epartie2
 
Cours s epartie2
Cours s epartie2Cours s epartie2
Cours s epartie2
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
 

Chapitre 2 poo classe objet c++

  • 1. Chapitre 2: notions de classes, objets en C++ 1
  • 2. 2
  • 3. 3
  • 4. 4
  • 5. 5
  • 6. 6
  • 7. 7
  • 8. 8
  • 9. 9
  • 10. 10
  • 11. 11
  • 12. 12
  • 13. 13
  • 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. compte(double d) : actif(d) { } 16
  • 17. 17
  • 18. 18
  • 19. 19
  • 21. 21
  • 23. 23
  • 24. 24
  • 25. 25
  • 26. 26
  • 27. 27
  • 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).! 28
  • 29. 29
  • 30. 30
  • 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); 31
  • 32. 32
  • 33. 33
  • 34. 34
  • 35. 35
  • 36. 36
  • 37. 37
  • 38. 38
  • 39. 39
  • 41. 41
  • 42. 42
  • 43. 43
  • 44. 44
  • 45. 45
  • 46. 46
  • 47. 47
  • 48. 48
  • 49. 49
  • 50. 50
  • 51. 51
  • 52. 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 objet Le 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 52
  • 53. Instanciation dynamique L'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; 53
  • 54. Instanciation dynamique 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; 54
  • 55. 55
  • 56. 56
  • 58. 58
  • 59. 59
  • 60. Exemple 2 60
  • 61. 61
  • 62. 62
  • 63. 63
  • 64. Exemple 3 64
  • 65. 65
  • 66. 66
  • 67. 67
  • 68. 68
  • 69. Exemple 4 69
  • 70. 70
  • 71. 71
  • 72. Exemple 5 72
  • 73. 73
  • 74. 74
  • 75. 75