3.1 - Notion de classe

37
AP4 - Programmation Orientée Objet 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.cp p clEntier.h indispensable

description

Chapitre 3 : Programmation Objet en C++. 3.1 - Notion de classe. 3.1.1 - Déclaration et Définition de classe. clEntier.cpp. clEntier.h. clEntier.h. class Entier { int i; int lit_i(void); void Ecrit_i(int); };. int Entier::lit_i(void) { return i; }. - PowerPoint PPT Presentation

Transcript of 3.1 - Notion de classe

Page 1: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 2: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

Chapitre 3 : Programmation Objet en C++

struct class

en C :

juste Donnée

en C++:

données + Méthode

only public

en C++:données + MéthodePrivate 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

Page 3: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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!";

}}

Page 4: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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){ if(s) delete[] s;}

"include "clChaine.h"int main(){ Chaine s1; Chaine S2(100);}

clChaine.h clChaine.cpp pgprinc.cpp

Liberation dynamique de tout le contenu du pointeur

Page 5: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 6: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 7: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

Chapitre 3 : Programmation Objet en C++

class clElt{ int L,C,V; clElt *pSuiv;}

ClElt X1;clelt X2(X1);

X1

Page 8: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

Chapitre 3 : Programmation Objet en C++

class clElt{ int L,C,V; clElt *pSuiv;}

ClElt X1;clelt X2(X1);

L

C

V

X1

Page 9: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

Chapitre 3 : Programmation Objet en C++

class clElt{ int L,C,V; clElt *pSuiv;}

ClElt X1;clelt X2(X1);

L

C

V

X1

X2

Page 10: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 11: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 12: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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.

Page 13: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 14: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 15: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 16: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 17: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 18: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

y

p

X2

Page 19: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 20: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

y

p

X2

Page 21: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

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

Page 22: 3.1  -  Notion de classe

AP4 - Programmation Orientée Objet

Chapitre 3 : Programmation Objet en C++

class clX{ int i;

public:

F();

}A;

A.F();clx::F();{

i=0;// this->i=0;}

this est un pointeur qui pointe vers l'objet en cours.

il est constant.

il est possible de transformer ce pointeur constant en un pointeur constant sur des données constantes pour chaque fonction membre

Page 23: 3.1  -  Notion de classe
Page 24: 3.1  -  Notion de classe
Page 25: 3.1  -  Notion de classe
Page 26: 3.1  -  Notion de classe
Page 27: 3.1  -  Notion de classe
Page 28: 3.1  -  Notion de classe
Page 29: 3.1  -  Notion de classe
Page 30: 3.1  -  Notion de classe
Page 31: 3.1  -  Notion de classe
Page 32: 3.1  -  Notion de classe
Page 33: 3.1  -  Notion de classe
Page 34: 3.1  -  Notion de classe
Page 35: 3.1  -  Notion de classe
Page 36: 3.1  -  Notion de classe
Page 37: 3.1  -  Notion de classe