Chapitre 3 : Programmation Objet en C++
class Entier {
int i;
int lit_i(void);
void
Ecrit_i(int);
};
int Entier::lit_i(void) {
return i;
}
void Ecrit_i(int iVal) {
i=iVal;
}
clEntier.h clEntier.cpp clEntier.h
indispensable
Chapitre 3 : Programmation Objet en C++
struct class
en C :
juste Donnée
en C++:
données + Méthode en C++:
données + Méthode Private ou public 2 possibilitées : public ou private.
public: accès total aux données et aux méthodes membres
private : accès réservé aux méthodes membres de la class
Chapitre 3 : Programmation Objet en C++
class Client {
private : //pas necessaire
char Nom[20], Prenom[25];
int Date, Solde;
public :
bool Dans_le_Rouge(void) {
return (Solde<0);
}
bool Bon_Client(void) {
return (date<1996);
} };
int main () {
Client Clientelle[100]; //tableau d'objets for (int i=0;1<100;i++)
{
if(Clientelle[i].Dans_le_Rouge()) cout << "Il est dans le rouge!";
} }
Chapitre 3 : Programmation Objet en C++
Le constructeur porte le même nom que la classe.
Le destructeur idem sauf qu'il est précéder d'un tilde '~'.
class Chaine {
char * s;
public :
Chaine(void);
Chaine(int);
~Chaine(void);
};
#include "clChaine.h"
Chaine::Chaine(void);
{
s=NULL;
}
Chaine::Chaine(int Taille) {
s=new char[Taille+1];
S=[0]='\Ø';
}
Chaine::~Chaine(void)
"include "clChaine.h"
int main() {
Chaine s1;
Chaine S2(100);
}
clChaine.h clChaine.cpp pgprinc.cpp
Liberation dynamique de tout le contenu du
pointeur
Chapitre 3 : Programmation Objet en C++
Ordre a retenir :
-Création de l'espace mémoire pour la variable
- Appel du constructeur(puis allocation dynamique si nécessaire) - Appel du destructeur(puis libération si nécessaire)
- Vidage de la variable dans la pile
Chapitre 3 : Programmation Objet en C++
class clPhy {
//Donnees
//Methodes };
clPhy X1;
clPhy X2(X1);
On fait appel au constructeur par recopie par
défaut. Il prend chacune des données de X1
et les recopie dans X2
Chapitre 3 : Programmation Objet en C++
class clElt {
int L,C,V;
clElt *pSuiv;
}
ClElt X1;
clelt X2(X1);
X1
Chapitre 3 : Programmation Objet en C++
class clElt {
int L,C,V;
clElt *pSuiv;
}
ClElt X1;
clelt X2(X1);
L
C
V
X1
Chapitre 3 : Programmation Objet en C++
class clElt {
int L,C,V;
clElt *pSuiv;
}
ClElt X1;
clelt X2(X1);
L C V X1
X2
Chapitre 3 : Programmation Objet en C++
class clElt {
int L,C,V;
clElt *pSuiv;
}
ClElt X1;
clelt X2(X1);
L C V X1
L
C
V
X2
Chapitre 3 : Programmation Objet en C++
class clElt {
int L,C,V;
clElt *pSuiv;
}
ClElt X1;
clelt X2(X1);
L C V X1
L C V X2
c'est une recopie en
profondeur, pas par défaut
Chapitre 3 : Programmation Objet en C++
clElt (const clElt & X);
il s'appelle comme le nom de la classe :
en général constructeur par recopie, destructeur et opérateur d'affectation
vont ensemble.
Chapitre 3 : Programmation Objet en C++
class Simple {
int X;
bool Y;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut.
x 1 y 2
X1
Chapitre 3 : Programmation Objet en C++
class Simple {
int X;
bool Y;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut.
x 1 y 2
X1
x 1 y 2
X2
Chapitre 3 : Programmation Objet en C++
class Simple {
int X;
bool Y;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut.
x 1 y 2
X1
x 1 y 2
X2
x y
X3
Chapitre 3 : Programmation Objet en C++
class Simple {
int X;
bool Y;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut.
x 1 y 2
X1
x 1 y 2
X2
x 1 y 2
X3
Chapitre 3 : Programmation Objet en C++
class Compose {
int X;
bool Y;
int *p;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
un pointeur surcharge d'opérateur
x 1 y 2 p
X1
Chapitre 3 : Programmation Objet en C++
class Compose {
int X;
bool Y;
int *p;
public:
}X1;
Simple X2(X1);
Simple X3;
un pointeur surcharge d'opérateur
x 1 y 2 p
X1
x y p
X2
Chapitre 3 : Programmation Objet en C++
class Compose {
int X;
bool Y;
int *p;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
un pointeur surcharge d'opérateur
x 1 y 2 p
X1
x 1 y 2 p
X2
Chapitre 3 : Programmation Objet en C++
class Compose {
int X;
bool Y;
int *p;
public:
}X1;
Simple X2(X1);
Simple X3;
un pointeur surcharge d'opérateur
x 1 y 2 p
X1
x 1 y 2 p
X2
x y p
X2
Chapitre 3 : Programmation Objet en C++
class Compose {
int X;
bool Y;
int *p;
public:
}X1;
Simple X2(X1);
Simple X3;
X3=X1;
un pointeur surcharge d'opérateur
x 1 y 2 p
X1
x 1 y 2 p
X2
x 1 y 2 p
X2
Chapitre 3 : Programmation Objet en C++
class clX {
int i;
public:
F();
}A;
A.F();
clx::F();
{
i=0;// this->i=0;