380 likes | 536 Views
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; }.
E N D
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; } void Ecrit_i(int iVal) { i=iVal; } indispensable AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.1 - Notion de classe 3.1.2 - Encupsulation de données 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 struct class en C : juste Donnée en C++: données + Méthode only public en C++: données + Méthode Private ou public AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.1 - Notion de classe 3.1.2 - Encupsulation de données 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!"; } } AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.1 - Définition Le constructeur porte le même nom que la classe. Le destructeur idem sauf qu'il est précéder d'un tilde '~'. clChaine.cpp pgprinc.cpp clChaine.h 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); } Liberation dynamique de tout le contenu du pointeur AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.1 - Définition • 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 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie 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 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie X1 class clElt { int L,C,V; clElt *pSuiv; } ClElt X1; clelt X2(X1); AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie X1 class clElt { int L,C,V; clElt *pSuiv; } ClElt X1; clelt X2(X1); AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie X1 class clElt { int L,C,V; clElt *pSuiv; } ClElt X1; clelt X2(X1); X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie X1 class clElt { int L,C,V; clElt *pSuiv; } ClElt X1; clelt X2(X1); X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie X1 class clElt { int L,C,V; clElt *pSuiv; } ClElt X1; clelt X2(X1); X2 c'est une recopie en profondeur, pas par défaut AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie il s'appelle comme le nom de la classe : clElt (const clElt & X); en général constructeur par recopie, destructeur et opérateur d'affectation vont ensemble. AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut. X1 class Simple { int X; bool Y; public: }X1; Simple X2(X1); Simple X3; X3=X1; AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut. X1 class Simple { int X; bool Y; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut. X1 class Simple { int X; bool Y; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 X3 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie Classe qui ne contient pas de pointeur : dans ce cas, constructeur par recopie, destructeur et opérateur par défaut. X1 class Simple { int X; bool Y; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 X3 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie un pointeur surcharge d'opérateur X1 class Compose { int X; bool Y; int *p; public: }X1; Simple X2(X1); Simple X3; X3=X1; AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie un pointeur surcharge d'opérateur X1 class Compose { int X; bool Y; int *p; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie un pointeur surcharge d'opérateur X1 class Compose { int X; bool Y; int *p; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie un pointeur surcharge d'opérateur X1 class Compose { int X; bool Y; int *p; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.2 - Constructeur et Destructeur 3.2.2 - Constructeur par recopie un pointeur surcharge d'opérateur X1 class Compose { int X; bool Y; int *p; public: }X1; Simple X2(X1); Simple X3; X3=X1; X2 X2 AP4 - Programmation Orientée Objet
Chapitre 3 : Programmation Objet en C++ 3.3 - Complément sur les classes 3.3.1 - Pointeur this 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 AP4 - Programmation Orientée Objet