Vous êtes sur la page 1sur 20

Le langage C++ et la programmation orientée

objets - séance 5 -

Prof. Mustapha Ameur

ENSA Marrakech

10 décembre 2020
Programmation Orientée Objets

Concepts de base
Un objet est une entité pouvant être créée, stockée, manipulée
et détruite.
Un objet possède des attributs (propriétés)
Un objet offre un certain nombre de méthodes (fonctions
membres) pour le manipuler.
Tout objet appartient à une classe.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Objets
Un objet est une entité pouvant être créée, stockée,
manipulée et détruite.
Un objet possède des attributs (propriétés)
Un objet offre un certain nombre de méthodes (fonctions
membres) pour le manipuler.
Tout objet appartient à une classe.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Classes
Une classe consiste à regrouper les objets ayant le même
comportement pour former un même ensemble, appelé :
classe.
Une classe représente un type d’objet
Dans une définition de classe on spécifie :
les attributs de tout objet appartenant à cette classe
les méthodes permettant de manipuler un objet de cette
classe
la visibilité de chaque attribut et méthode (l’encapsulation des
données).
le principe de l’encapsulation est qu’on ne peut agir que sur les
attributs (propriétés) publiques d’un objet.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base
Exemple de la nécessité de protéger les données
supposons qu’on a une classe Température :
class Temperature :
attributs public :
int TC ; // temperature en Celsius
int TK ; // temperature en Kelvin
supposons qu’on a une température TC=35 et TK=308 ; et que
dans le code on a modifié TC=40 (TK est toujours égale à 308)//
il n’ y a plus de cohérence des données. Le bon code serait :
class Temperature :
attributs private :
int TC ;
int TK ;
methode public :
Set_TC ( int t ){ TC = t ; TK = t +273; }

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base
Classes (suite)
En général, les attributs sont privés (par défaut), c’est-à-dire
qu’aucune fonction externe à l’objet n’a le droit d’y accéder.
Certaines méthodes sont publiques et peuvent donc être
utilisées par des fonctions externes pour manipuler un objet ;
on dit que ces méthodes constituent l’interface de la classe
Les méthodes publiques peuvent parfois utiliser des fonctions
internes privées pour accomplir leur tâche.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Relation Objet - Classe


La relation qui lie objet et sa classe est la même qu’entre une
variable et son type :
int compt ;\\ compt une variable de type entier
string nom ;\\ nom un objet de la classe std du C ++
Etudiant X ;\\ X un objet de la classe Etudiant
Un objet d’une classe s’appellera une instance de cette classe.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Définition d’une classe en C++


La déclaration d’une classe consiste à décrire ses membres (attributs
et méthodes) groupés en sections. Chaque section est étiquetée par
l’un des mots clés : private, public, ou protected, qui précisent le
mode d’accès aux membres contenus dans la section.
private : accès autorisé seulement par les méthodes de la
classe
public : accès libre
protected : accès autorisé seulement dans les méthodes de la
classe et de ses dérivées (voir héritage).
Pour déclarer une classe, on utilise le mot clé class.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Définition d’une classe en C++ (suite)

class Nom_de_la_classe
{
private :
\* declarations des attributs et
des methodes privees *\

public :
\\ declarations de methodes publiques
} ; \\ faire attention au point virgule

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Exemple :

class Point
{
public :
void afficher ();
int getAbs ();
int getOrd ();
void initialiser ( int , int );
private :
int abs ;
int ord ;
};

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Implémentation des méthodes


La définition d’une classe consiste à définir les prototypes de ses
méthodes. Les méthodes sont implémentées séparément de la
définition de classe en utilisant l’opérateur de portée ( : :).
Syntaxe :
typeRetour NomClasse :: nomFonction ( param1 , ...)
{
\\ instructions
}

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Implémentation des méthodes

void Point :: afficher ()


{
cout < < " ( " << abs < < " ," << ord < < " ) " << endl ;
}

void Point :: initialiser ( int x , int y )


{
abs = x ; ord = y ;
}

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Remarques :
Au sein de la définition d’une méthode, les autres membres
(privés ou publiques) sont directement accessibles (il n’est pas
nécessaire de préciser le nom de la classe) :
Toutes les possibilités offertes par le C++ pour les fonctions
restent valables pour les méthodes (surcharge, arguments par
défaut,. . .).
Toute méthode définie dans sa classe (dans la déclaration de la
classe) est considérée par le compilateur comme une fonction
inline. Le mot clé inline n’est pas utilisé dans ce cas.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Utilisation d’une classe


Pour la classe Point par exemple :
Point A ; // declaration d ’ un objet A
On peut accéder à n’importe quel membre publique d’une classe en
utilisant l’opérateur . (point).
A . initialiser (5 ,7); /* appel de la methode
initialiser de la classe Point */
A . abs =9; // interdit : abs est private
cout < < A . abs ; // interdit
A . afficher (); // (5 ,7)

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Concepts de base

Paramètres d’une méthode


Toute méthode a un paramètre implicite (caché), qui
représente l’objet sur lequel elle est appliquée.
Les autres paramètres qui apparaissent dans l’en-tête de la
méthode sont les paramètres explicites.
Tout cela reste transparent pour l’utilisateur.

Exemple :

A . initialiser (5 ,7);
Le compilateur crée en fait une fonction initialiser à 3 paramètres :
initialiser (A ,5 ,7);

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - classes
Constructeurs & destructeurs
C++ permet l’utilisation de méthodes dites constructeurs et
destructeur qui sont implicitement appelées respectivement
lors de la création et la destruction d’un objet.
Le(s) constructeur(s) sont des fonctions membres qui portent
le même nom que leur classe, qui ne retournent aucune valeur.
Ces constructeurs sont appelés après l’allocation de l’espace
mémoire destiné à l’objet.
On peut définir plusieurs constructeurs autant que l’on veut,
donc un constructeur peut être surchargé et peut avoir des
arguments par défaut.

Remarque :
Même si le constructeur ne retourne aucune valeur, il est déclaré
et défini sans le mot clé void .

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Classes
Exemple :

class Point
{ public :
void afficher ();
void deplacer ( int , int );
Point ( int , int ); // Constructeur
private :
int abs ;
int ord ;
};
Dans cet exemple, la définition du constructeur sera de la forme :
Point :: Point ( int x , int y )
{
abs = x ;
ord = y ;
}
Prof. Mustapha Ameur C++ & POO
Programmation Orientée Objets - classes

Constructeurs & destructeurs (suite)


Pour déclarer une instance d’une classe ayant un constructeur, on
doit spécifier les valeurs des arguments requis par le constructeur.
Point A (2 ,5); /* ou appel explicite
du constructeur Point A = Point (2 ,5); */

Point B ; /* erreur , car on a declare


la facon de construire les objets */

Remarque :
Si on ne définit pas de constructeur, le compilateur générera un
constructeur par défaut. Mais il faut faire attention si on a des
attributs pointeurs dans la classe (allocation mémoire).

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - classes

Constructeurs & destructeurs


Le destructeur est une méthode qui porte le même nom que
sa classe, précédé du symbole (~). Le destructeur est appelé
avant la libération de l’espace associé à l’objet.
destructeur ne peut pas être surchargé.
Le destructeur est une fonction qui ne prend aucun argument
et ne renvoie aucune valeur.
En pratique les destructeurs sont utilisés pour libérer
d’éventuels emplacements mémoire occupée par des attributs.

Prof. Mustapha Ameur C++ & POO


Programmation Orientée Objets - Classes
Exemple :

class Point
{ public :
void afficher ();
void deplacer ( int , int );
Point ( int , int ); // Constructeur
~ Point ( ); // destructeur
private :
int abs ;
int ord ;
};
Dans cet exemple, la définition du constructeur sera de la forme :
Point ::~ Point ( )
{
cout < < " destruction � d ’ un � Point " << endl ;
}
Prof. Mustapha Ameur C++ & POO

Vous aimerez peut-être aussi