SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

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
 

What's hot (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
 

Viewers also liked

Consejos para aprovechar materiales en tiempos de crisis
Consejos para aprovechar materiales en tiempos de crisisConsejos para aprovechar materiales en tiempos de crisis
Consejos para aprovechar materiales en tiempos de crisisCaridad Yáñez Barrio
 
Les wikis (Biblioquest Saison 2 - Episode 1)
Les wikis (Biblioquest Saison 2 - Episode 1)Les wikis (Biblioquest Saison 2 - Episode 1)
Les wikis (Biblioquest Saison 2 - Episode 1)Pauline Moirez
 
El proceso de mecanización y convergencia mediática
El proceso de mecanización y convergencia mediáticaEl proceso de mecanización y convergencia mediática
El proceso de mecanización y convergencia mediáticaDonBraulio Torres
 
COMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTO
COMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTOCOMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTO
COMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTOMauricio Olaya Gaitán
 
Version corrigee mc travail veines faa correction cenbiotech_220113
Version corrigee mc travail  veines faa correction cenbiotech_220113Version corrigee mc travail  veines faa correction cenbiotech_220113
Version corrigee mc travail veines faa correction cenbiotech_220113sfa_angeiologie
 
Presentación tema 1
Presentación tema 1Presentación tema 1
Presentación tema 1SergioCrew
 
Bible quiz 1
Bible quiz 1Bible quiz 1
Bible quiz 1ourbothy
 
Regardez ce qu_on_peut_faire_avec_de_vieux_outils
Regardez ce qu_on_peut_faire_avec_de_vieux_outilsRegardez ce qu_on_peut_faire_avec_de_vieux_outils
Regardez ce qu_on_peut_faire_avec_de_vieux_outilsfilipj2000
 
Revolucionará el ipad la educación?
Revolucionará el ipad la educación?Revolucionará el ipad la educación?
Revolucionará el ipad la educación?Katiamacias06
 
Alarma anti-pares-INVENTS-2014
Alarma anti-pares-INVENTS-2014Alarma anti-pares-INVENTS-2014
Alarma anti-pares-INVENTS-2014ciclemitja34
 

Viewers also liked (20)

Consejos para aprovechar materiales en tiempos de crisis
Consejos para aprovechar materiales en tiempos de crisisConsejos para aprovechar materiales en tiempos de crisis
Consejos para aprovechar materiales en tiempos de crisis
 
Comenzar
ComenzarComenzar
Comenzar
 
Meoriga bodegas y viñedos
Meoriga bodegas y viñedosMeoriga bodegas y viñedos
Meoriga bodegas y viñedos
 
Tic`s
Tic`sTic`s
Tic`s
 
Clase a
Clase aClase a
Clase a
 
Les wikis (Biblioquest Saison 2 - Episode 1)
Les wikis (Biblioquest Saison 2 - Episode 1)Les wikis (Biblioquest Saison 2 - Episode 1)
Les wikis (Biblioquest Saison 2 - Episode 1)
 
Ofimatica
OfimaticaOfimatica
Ofimatica
 
El proceso de mecanización y convergencia mediática
El proceso de mecanización y convergencia mediáticaEl proceso de mecanización y convergencia mediática
El proceso de mecanización y convergencia mediática
 
COMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTO
COMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTOCOMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTO
COMO INGRESAR A LAS AULAS VIRTUALES DE UNIMINUTO
 
Ofimatica
OfimaticaOfimatica
Ofimatica
 
Version corrigee mc travail veines faa correction cenbiotech_220113
Version corrigee mc travail  veines faa correction cenbiotech_220113Version corrigee mc travail  veines faa correction cenbiotech_220113
Version corrigee mc travail veines faa correction cenbiotech_220113
 
Presentación tema 1
Presentación tema 1Presentación tema 1
Presentación tema 1
 
Bible quiz 1
Bible quiz 1Bible quiz 1
Bible quiz 1
 
Cr 2 09
Cr 2 09Cr 2 09
Cr 2 09
 
Regardez ce qu_on_peut_faire_avec_de_vieux_outils
Regardez ce qu_on_peut_faire_avec_de_vieux_outilsRegardez ce qu_on_peut_faire_avec_de_vieux_outils
Regardez ce qu_on_peut_faire_avec_de_vieux_outils
 
Cours s epartie2
Cours s epartie2Cours s epartie2
Cours s epartie2
 
Revolucionará el ipad la educación?
Revolucionará el ipad la educación?Revolucionará el ipad la educación?
Revolucionará el ipad la educación?
 
Gestión Básica de la Información
Gestión Básica de la InformaciónGestión Básica de la Información
Gestión Básica de la Información
 
Info sacu
Info sacuInfo sacu
Info sacu
 
Alarma anti-pares-INVENTS-2014
Alarma anti-pares-INVENTS-2014Alarma anti-pares-INVENTS-2014
Alarma anti-pares-INVENTS-2014
 

Similar to 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
 

Similar to 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
 

More from 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
 
Cours système d'exploitation
Cours système d'exploitationCours système d'exploitation
Cours système d'exploitationAmel Morchdi
 

More from 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
 
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
 
Cours système d'exploitation
Cours système d'exploitationCours système d'exploitation
Cours système d'exploitation
 

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