Vous êtes sur la page 1sur 37

La program-

mation
orientée objet
(POO) en
C++

POO La programmation orientée objet (POO) en


POO, Classes
et Objets
C++
Conception Première partie
d’une classe

Création
d’objets
Règles du
constructeur Dahmani Soufiane
Destruction
d’objets
UMP Oujda
Les objets
constants

Attributs et 13 mars 2021


méthodes

1/28
Sommaire

La program-
mation
orientée objet
(POO) en
C++
1 POO, Classes et Objets
POO
2 Conception d’une classe
POO, Classes
et Objets

Conception
3 Création d’objets
d’une classe
Règles du constructeur
Création
d’objets
Règles du
constructeur
4 Destruction d’objets
Destruction
d’objets
5 Les objets constants
Les objets
constants

Attributs et 6 Attributs et méthodes


méthodes

2/28
Qu’est ce que la Programmation Orientée Objet ?

La program-
mation
orientée objet
(POO) en
C++

POO
La programmation objet consiste à définir des objets
logiciels et à les faire interagir entre eux.
POO, Classes
et Objets On parle d’échange de messages
Conception Un objet est créé à partir d’un modèle (« moule ») appelé
d’une classe
classe.
Création
d’objets On parle d’instanciation
Règles du
constructeur Un objet posséde une identité qui permet de distinguer un
Destruction
d’objets
objet d’un autre objet.
Les objets
On parle de son nom, son adresse mémoire
constants

Attributs et
méthodes

3/28
Qu’est ce qu’un programme en P.O.O. ?

La program-
mation Un programme Orienté Objet est écrit à partir d’un
orientée objet
(POO) en langage Orienté Objet. Les langages O.O. les plus utilisés
C++
sont : C++, Java, PHP, Python, ...
POO
En C++, un programme Orienté Objet est vu comme un
POO, Classes
et Objets
ensemble d’objets interagissant entre eux en s’échangeant
Conception
des messages.
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets main()


constants
En C++, il existe toujours une fonction principale main.
Attributs et
méthodes Certains langages O.O. (comme le Java) disposent d’une classe
principale qui doit contenir une méthode main.
4/28
Qu’est ce qu’un objet ?

La program-
mation
orientée objet
(POO) en
C++
Un objet est caractérisé par le rassemblement, au sein
d’une même unité d’exécution, d’un ensemble de
POO
propriétés (constituant son état) et d’un ensemble
POO, Classes d’opérations (constituant son comportement)
et Objets

Conception
On parle d’encapsulation
d’une classe
La notion de propriété est matérialisée par un attribut
Création
d’objets Comparable à une « variable locale » à un objet, une
Règles du
constructeur
donnée (information, caractéristique ou état) propre à
Destruction
l’objet
d’objets
La notion d’opération est matérialisée par une méthode
Les objets
constants Comparable à une « fonction » de l’objet, une action
Attributs et pouvant être effectuée sur l’objet
méthodes

5/28
Qu’est ce qu’une classe ?

La program-
mation
orientée objet
(POO) en
C++

POO
Une classe définit un type qui peut être vue comme un «
moule »ou une « fabrique d’objets »et qui comporte :
POO, Classes
et Objets La déclaration des attributs
Conception La déclaration et la définition des méthodes
d’une classe
La "fabrication"d’un objet s’appelle l’instanciation L’objet
Création
d’objets est appelé instance de classe et possède le type que définit
Règles du
constructeur sa classe
Destruction
d’objets Remarque : La classe n’existe qu’à la compilation, l’objet
Les objets
constants
n’existe qu’à l’exécution
Attributs et
méthodes

6/28
Comment interagir avec un objet ?

La program-
mation
orientée objet
(POO) en
C++
Les objets interagissent entre eux en s’échangeant des
POO
messages.
POO, Classes
et Objets
La réponse à la réception d’un message par un objet est
Conception
appelée une méthode.
d’une classe
Une méthode est donc la mise en oeuvre du message : elle
Création
d’objets décrit la réponse qui doit être donnée au message.
Règles du
constructeur
Le code des méthodes contient généralement :
Destruction
d’objets Des accès en lecture/écriture aux attributs d’un objet
Les objets
Des appels (on parle d’invocation) aux méthodes d’un
constants objet
Attributs et
méthodes

7/28
Exemple d’une lampe

La program-
mation Une lampe est caractérisée par :
orientée objet
(POO) en Sa puissance (une propriété –> un attribut)
C++
Le fait qu’elle soit allumée ou éteinte (un état, un attribut)
POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants
Au niveau comportement, les actions possibles sur une
Attributs et lampe sont donc :
méthodes
L’allumer (une méthode)
L’éteindre (une autre méthode)
8/28
Déclaration d’une classe en C++

La program-
mation La déclaration de la classe Lampe se fait dans un fichier
orientée objet
(POO) en d’en-tête(header ) Lampe.h
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

9/28
Déclaration d’une classe en C++

La program-
mation La déclaration de la classe Lampe se fait dans un fichier
orientée objet
(POO) en d’en-tête(header ) Lampe.h
C++

POO La classe Lampe


POO, Classes class Lampe
et Objets

Conception
{ private :
d’une classe // Attributs
Création
d’objets
int puissance ;
Règles du
constructeur
bool estAllumee ;
Destruction public :
d’objets
// Méthodes
Les objets
constants void allumer() ;
Attributs et void eteindre() ;
méthodes
};

9/28
Définition des méthodes d’une classe en C++

La program-
mation La définition d’une classe revient à définir l’ensemble de
orientée objet
(POO) en ses méthodes. On doit faire précéder chaque méthode de
C++

POO
l’opérateur de résolution de portée : : précédé du nom de
la classe (ici Lampe) pour préciser au compilateur que ce
POO, Classes
et Objets sont des membres de cette classe.
Conception La définition des méthodes de la classe Lampe se fait dans
d’une classe

Création
un fichier source Lampe.cpp
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

10/28
Définition des méthodes d’une classe en C++

La program-
mation La définition d’une classe revient à définir l’ensemble de
orientée objet
(POO) en ses méthodes. On doit faire précéder chaque méthode de
C++

POO
l’opérateur de résolution de portée : : précédé du nom de
la classe (ici Lampe) pour préciser au compilateur que ce
POO, Classes
et Objets sont des membres de cette classe.
Conception La définition des méthodes de la classe Lampe se fait dans
d’une classe

Création
un fichier source Lampe.cpp
d’objets
Règles du
constructeur Lampe.cpp
Destruction
d’objets #include "Lampe.h"
Les objets void Lampe : :allumer()
constants
{this->estAllumee = true ;}
Attributs et
méthodes void Lampe : :eteindre()
{ this->estAllumee = false ;}

10/28
Instances de classe

La program-
mation Chaque instance possède un exemplaire propre de chaque
orientée objet
(POO) en attribut défini par la classe
C++
Un objet possède sa propre existence et un état (c.-à-d. les
POO
valeurs de ses attributs) qui lui est propre (indépendant
POO, Classes des autres objets)
et Objets

Conception
Le code des méthodes est commun à toutes les instances
d’une classe (il n’existe qu’une seule fois en mémoire)
Création
d’objets
Le mot-clé this (auto pointeur), utilisé dans le code des
Règles du
constructeur
méthodes d’une classe, fait référence à l’instance (l’objet
Destruction lui-même) sur laquelle est invoquée la méthode
d’objets

Les objets
constants

Attributs et
méthodes

11/28
Instanciation d’un objet

La program-
mation
Instancier un objet revient à créer une variable d’un type classe.
orientée objet
(POO) en
Une instance de classe est donc un objet.
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

12/28
Instanciation d’un objet

La program-
mation
Instancier un objet revient à créer une variable d’un type classe.
orientée objet
(POO) en
Une instance de classe est donc un objet.
C++

POO Lampe l1 ; // instancie un objet l1 de type Lampe


POO, Classes
l1.allumer() ; // appel la méthode allumer() à partir de l’objet
et Objets l1
Conception
d’une classe
Lampe *l2 = new Lampe() ; // alloue dynamiquement une
Création instance de type Lampe
d’objets
Règles du
// La variable l2 n’est pas un objet mais un pointeur sur un
constructeur
objet Lampe !
Destruction
d’objets l2->eteindre() ; // appel la méthode eteindre() à partir de
Les objets l’objet l2
constants
(*l2).eteindre() ; // cette écriture est possible : je pointe sur
Attributs et
méthodes l’objet puis j’appelle sa méthode
delete l2
12/28
Remarque

La program-
mation
orientée objet
(POO) en
C++

POO

POO, Classes
et Objets
On accède aux membres comme pour une structure : avec
Conception
d’une classe l’opérateur d’accès . ou l’opérateur d’indirection -> si on
Création manipule une adresse.
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

13/28
Constructeur
Constructeur

La program-
mation
orientée objet
(POO) en
C++
L’instanciation d’un objet est réalisée par l’appel à un
POO
constructeur (une méthode qui porte le même nom que la
POO, Classes
et Objets
classe)
Conception D’un point de vue système, le constructeur a pour but
d’une classe
d’allouer un nouvel objet en mémoire
Création
d’objets
Règles du
D’un point de vue fonctionnel, le constructeur a pour but
constructeur
de créer un nouvel objet dans un état « utilisable »
Destruction
d’objets Il doit donc simplement contenir les instructions
Les objets
constants
d’initialisation (des attributs) de l’objet
Attributs et
méthodes

14/28
Constructeur
Exemple

La program-
mation
orientée objet
(POO) en
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

15/28
Constructeur
Exemple

La program-
mation Exemple
orientée objet
(POO) en
C++
class Lampe
POO {
...
POO, Classes
et Objets public :
Conception // Constructeur
d’une classe

Création
Lampe(int puissance) ;
d’objets };
Règles du
constructeur
// Définition du constructeur
Destruction
d’objets
Lampe : :Lampe(int puissance)
Les objets {
constants
this->puissance = puissance ;
Attributs et
méthodes this->estAllumee = false ;
}

15/28
Règles du constructeur

La program-
mation Un constructeur est chargé d’initialiser un objet de la
orientée objet
(POO) en classe.
C++
Il est appelé automatiquement au moment de la création
POO
de l’objet.
POO, Classes Un constructeur est une méthode qui porte toujours le
et Objets

Conception
même nom que la classe.
d’une classe Il peut avoir des paramètres, et des valeurs par défaut.
Création
d’objets
Il peut y avoir plusieurs constructeurs pour une même
Règles du
constructeur
classe (surcharge).
Destruction Il n’a jamais de type de retour.
d’objets
Il existe implicitement un constructeur par défaut : Son
Les objets
constants rôle est de créer une instance non initialisée quand aucun
Attributs et autre constructeur fourni n’est applicable.
méthodes
Il est sans paramètre.
Il est fortement recommandé d’écrire soi-même le
constructeur par défaut 16/28
Constructeur par défaut

La program-
mation
orientée objet Constructeur par défaut
(POO) en
C++
class Lampe { ...
POO
public :
POO, Classes Lampe() ; // Déclaration du constructeur par défaut } ;
et Objets
// Définition du constructeur par défaut
Conception
d’une classe Lampe : :Lampe()
Création
d’objets
{ this->puissance = 50 ;
Règles du
constructeur
this->estAllumee = false ;}
Destruction // Exemples :
d’objets
Lampe l1 ;// appel du constructeur par défaut : initialise
Les objets
constants puissance à 50
Attributs et Lampe l2(75) ;// appel du constructeur : initialise puissance à
méthodes
75

17/28
Constructeur par défaut

La program-
mation
orientée objet
(POO) en
C++

POO
Constructeur par défaut(suite)
POO, Classes
et Objets Lampe *l3 = new Lampe() ;// appel du constructeur par
Conception défaut : initialise puissance à 50 Lampe *l4 = new
d’une classe
Lampe(100) ;// appel du constructeur : initialise puissance à
Création
d’objets 100
Règles du
constructeur Lampe *l5 ;// pas d’appel du constructeur : aucun objet créé
Destruction
d’objets
(pointeur non initialisé)
Les objets
constants

Attributs et
méthodes

18/28
Tableaux d’objets

La program-
mation
orientée objet Il est possible de conserver et de manipuler des objets Lampes
(POO) en
C++ dans un tableau.
POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

19/28
Tableaux d’objets

La program-
mation
orientée objet Il est possible de conserver et de manipuler des objets Lampes
(POO) en
C++ dans un tableau.
POO
Exemple
POO, Classes
et Objets // Un tableau de 10 objets Lampe
Conception Lampe guirlande[10] ; // Le constructeur par défaut est appelé
d’une classe
10 fois (pour chaque objet Lampe du tableau) !
Création
d’objets for(int i = 0 ; i < 10 ; i++)
Règles du
constructeur {
Destruction guirlande[i].allumer() ;
d’objets

Les objets
sleep(1) ; // attendre 1 s
constants guirlande[i].eteindre() ;
Attributs et
méthodes
}

19/28
Destructeur
Destructeur

La program-
mation
orientée objet Le destructeur est la méthode membre appelée
(POO) en
C++ automatiquement lorsqu’une instance (objet) de classe
POO cesse d’exister en mémoire :
POO, Classes Son rôle est de libérer toutes les ressources qui ont été
et Objets
acquises depuis la construction (typiquement libérer la
Conception
d’une classe mémoire qui a été allouée dynamiquement par cet objet).
Création
d’objets Un destructeur est une méthode qui porte toujours le
Règles du
constructeur même nom que la classe, précédé de "∼".
Destruction
d’objets
Il existe quelques contraintes :
Les objets Il ne possède aucun paramètre.
constants

Attributs et
Il n’y a qu’un et un seul destructeur.
méthodes
Il n’a jamais de type de retour.

20/28
Destructeur
Exemple

La program-
mation
orientée objet
(POO) en
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

21/28
Destructeur
Exemple

La program-
mation Exemple
orientée objet
(POO) en
C++ class Lampe {
POO ...
public :
POO, Classes
et Objets Lampe() ; } ;
Conception // Destructeur
d’une classe

Création
Lampe : :∼Lampe()
d’objets // Destructeur
Règles du
constructeur
{
Destruction
d’objets // rien à faire pour l’instant
Les objets }
constants
// Exemple :
Attributs et
méthodes Lampe *l2 = new Lampe(100) ;
delete l2 ; // appel automatique du destructeur

21/28
Les objets constants

La program-
mation
orientée objet
(POO) en
C++

POO
Les règles suivantes s’appliquent aux objets constants :

POO, Classes
On déclare un objet constant avec le modificateur const
et Objets
On ne pourra pas modifier l’état (ses attributs) d’un objet
Conception
d’une classe constant
Création
d’objets
On ne peut appliquer que des méthodes constantes sur un
Règles du
constructeur
objet constant
Destruction Une méthode constante est tout simplement une méthode
d’objets
qui ne modifie aucun des attributs de l’objet
Les objets
constants

Attributs et
méthodes

22/28
Exemple

La program-
mation
orientée objet
(POO) en
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

23/28
Exemple

La program-
mation Exemple
orientée objet
(POO) en
C++ class Lampe { ...
POO public :
int getPuissance() const ;
POO, Classes
et Objets };
Conception // Une méthode constante
d’une classe

Création
int Lampe : :getPuissance() const {
d’objets return this->puissance ;
Règles du
constructeur
}
Destruction
d’objets const Lampe l3(100) ; // l3 est un objet constant
Les objets int p = l3.getPuissance() ; // autorisé : getPuissance() est
constants
déclarée const
Attributs et
méthodes l3.allumer() ; // interdit : allumer() n’ est pas const (car elle
modifie l’ attribut estAllumee)

23/28
Accès aux membres (visibilité)

La program-
mation
orientée objet
En POO, il est possible de préciser le type d’accès aux
(POO) en
C++
membres (attributs et méthodes) d’un objet.
POO Cette opération s’effectue et s’applique au niveau des
POO, Classes
classes :
et Objets - Accès public : les membres publics peuvent être utilisés
Conception
d’une classe
dans et par n’importe quelle partie du programme.
Création
- Accès private : les membres privés d’une classe ne sont
d’objets
Règles du
accessibles que par les objets de cette classe et non par
constructeur
ceux d’une autre classe. Seule une méthode membre de la
Destruction
d’objets même classe peut utiliser ce membre ; il est invisible de
Les objets l’extérieur de la classe.
constants
- Accès protected : comme les membres privés, mais ils
Attributs et
méthodes peuvent en plus être utilisés par une classe dérivée (notion
d’héritage).

24/28
La program-
mation
orientée objet
(POO) en
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction Une méthode peut évidemment être privée : c’est alors une
d’objets
méthode interne à l’objet (qui réalise un comportement à usage
Les objets
constants interne).
Attributs et
méthodes

25/28
La program-
mation
orientée objet
(POO) en
C++
Exemple
POO
Lampe l1 ;
POO, Classes
et Objets l1.estAllumee = true ; // erreur d’accès : ’bool
Conception Lampe : :estAllumee’ is private
d’une classe
l1.allumer() ; // pas d’erreur : ’void Lampe : :allumer()’ is
Création
d’objets public
Règles du
constructeur

Destruction Une méthode peut évidemment être privée : c’est alors une
d’objets
méthode interne à l’objet (qui réalise un comportement à usage
Les objets
constants interne).
Attributs et
méthodes

25/28
Règle d’encapsulation
Règle d’encapsulation

La program-
mation 1 L’encapsulation est l’idée de protéger les variables
orientée objet
(POO) en contenues dans un objet et de ne proposer que des
C++
méthodes pour les manipuler.
POO
2 En respectant ce principe, tous les attributs d’une classe
POO, Classes
et Objets seront donc privés (private).
Conception 3 On permettra un accès extérieur en lecture et/ou écriture
d’une classe

Création
via des méthodes appelées accesseurs et mutateurs.
d’objets
Règles du
4 L’objet est ainsi vu de l’extérieur comme une « boîte noire
constructeur
» possédant certaines propriétés et ayant un
Destruction
d’objets comportement spécifié et sécurisé.
Les objets 5 C’est le comportement (ses méthodes publiques) d’un
constants

Attributs et
objet qui modifiera son état (c’est-à-dire la valeur de ses
méthodes attributs privés).
6 L’ensemble des méthodes publiques forme l’interface.
26/28
Les accesseurs et mutateurs
Les accesseurs et mutateurs

La program-
mation
On ajoute souvent (mais pas obligatoirement) des méthodes
orientée objet
(POO) en
publiques pour établir un accès contrôlé aux variables privées
C++ de la classe :
POO
get() (getter ou accesseur) : permet l’accès en lecture
POO, Classes set() (setter ou mutateur ou manipulateur) : permet
et Objets
l’accès en écriture
Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

27/28
Les accesseurs et mutateurs
Les accesseurs et mutateurs

La program-
mation
On ajoute souvent (mais pas obligatoirement) des méthodes
orientée objet
(POO) en
publiques pour établir un accès contrôlé aux variables privées
C++ de la classe :
POO
get() (getter ou accesseur) : permet l’accès en lecture
POO, Classes set() (setter ou mutateur ou manipulateur) : permet
et Objets
l’accès en écriture
Conception
d’une classe
Exemple
Création
d’objets class Lampe { ...
Règles du
constructeur public :
Destruction
d’objets
int getPuissance() const ; // un accesseur void setPuissance(int
Les objets
puissance) ; // un mutateur } ;
constants int Lampe : :getPuissance() const {
Attributs et
méthodes
return puissance ; }
void Lampe : :setPuissance(int puissance) {
this->puissance = puissance ;}
27/28
Fin

La program-
mation
orientée objet
(POO) en
C++

POO

POO, Classes
et Objets

Conception
d’une classe

Création
d’objets
Règles du
constructeur

Destruction
d’objets

Les objets
constants

Attributs et
méthodes

28/28

Vous aimerez peut-être aussi