• Aucun résultat trouvé

Chapitre 3 : Programmation Objet en C++

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre 3 : Programmation Objet en C++"

Copied!
37
0
0

Texte intégral

(1)

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

(2)

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

(3)

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

} }

(4)

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

(5)

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

(6)

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

(7)

Chapitre 3 : Programmation Objet en C++

class clElt {

int L,C,V;

clElt *pSuiv;

}

ClElt X1;

clelt X2(X1);

X1

(8)

Chapitre 3 : Programmation Objet en C++

class clElt {

int L,C,V;

clElt *pSuiv;

}

ClElt X1;

clelt X2(X1);

L

C

V

X1

(9)

Chapitre 3 : Programmation Objet en C++

class clElt {

int L,C,V;

clElt *pSuiv;

}

ClElt X1;

clelt X2(X1);

L C V X1

X2

(10)

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

(11)

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

(12)

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.

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(34)
(35)
(36)
(37)

Références

Documents relatifs

Par exemple : std::string , qui obligatoirement doit faire des allocations de mémoire (pour stocker les caractères) et donc libérer, quoi qu'il arrive, même en cas d'exception

Plusieurs instances de cette classe devront référencer le même objet en mémoire : définition d'une sous-classe assistante, associant l'adresse réelle de l'objet et un compteur...

Une pile représente un ensemble de données où l'on ne peut accéder qu'au dernier élément entré, qui devient donc le premier à sortir. On les appelle parfois LIFO (last in

A présent le code peut s'utiliser pour afficher tous les éléments d'une liste d'entiers différents de -5, tous les éléments d'un tableau de chaînes de moins de trois

sinon si valeur dans feuille courante &lt; valeur à ajouter Prend branche gauche comme nouvelle racine Ajout. sinon si valeur dans feuille courante &gt; valeur à ajouter Prend

parenthèse ouvrante : on remarque que l'utilisation d'une pile peut simplifier la gestion des parenthèses pour la construction de l'arbre..... 15

• Arbre de recherche suivant la valeur Facile à programmer Très rapide à chercher Espace mémoire moyen Aucune n'est préférable, le contexte. décidera de la

Accès aux membres Modes d’héritage Amitié et héritage Surcharge de méthodes..