Vous êtes sur la page 1sur 17

Introduction au langage C++

Introduction à la
programmation orientée objet

Professeur : C. Fessard Introduction à la POO 1


Introduction au langage C++

Programmation impérative/procédurale (rappel)


Dans les programmes que vous avez écrits jusqu’à maintenant, les notions
 de variables/types de données
 et de traitement de ces données étaient séparées

Professeur : C. Fessard Introduction à la POO 2


Introduction au langage C++

Concept objet

La POO permet d’améliorer :


 La robustesse (changement de spécification)
 La modularité => la maintenabilité
 Lisibilité

POO : quatre concepts de base


Un des objectifs principaux de la notion d’objet : organiser des programmes complexes grâce aux notions :
 d’encapsulation
 d’abstraction
 d’héritage
 et de polymorphisme

Professeur : C. Fessard Introduction à la POO 3


Introduction au langage C++

Notions d’encapsulation
Il y a deux facettes à l’encapsulation :
1. regroupement de tout ce qui caractérise l’objet : données (attributs) et traitements (méthodes)
2. isolement et dissimulation des détails d’implémentation (interface de la classe)

1. Regrouper dans la même entité informatique («objet»), les données et les traitements qui lui sont spécifiques :
 attributs : les données incluses dans un objet
 méthodes : les fonctions (= traitements) définies dans un objet
Les objets sont définis par leurs propriétés (attributs et méthodes).

2. De plus, l’encapsulation permet en effet de définir deux niveaux de perception des objets :
 niveau externe : partie « visible » (par les programmeurs-utilisateurs) :
o l’interface : entête de quelques méthodes bien choisies
 niveau interne : (détails d’)implémentation (par les programmeurs-concepteurs)
o méthodes et attributs accessibles uniquement depuis l’intérieur de l’objet (ou d’objets similaires)
o définition de toutes les méthodes de l’objet

Interface = ce que le programmeur-utilisateur (hors de l’objet) peut utiliser

Exemple d’interface : L’interface d’une voiture


 Volant, accélérateur, pédale de frein, etc.
 Tout ce qu’il faut savoir pour la conduire (mais pas la réparer ! ni comprendre comment ça marche)
 L’interface ne change pas, même si l’on change de moteur et même si on change de voiture (dans une certaine
mesure) : abstraction de la notion de voiture (en tant qu’« objet à conduire »

Professeur : C. Fessard Introduction à la POO 4


Introduction au langage C++

Notion d’abstraction

Les classes sont une "abstraction". Les objets peuvent


correspondre à des objets du monde réel, les classes
correspondent à une entité abstraite de niveau
supérieur, elle est une description générique de
l’ensemble considéré.

Le processus d’abstraction consiste à identifier pour un ensemble d’éléments :


 des caractéristiques communes à tous les éléments (attributs)
 des mécanismes (des comportements) communs à tous les éléments (méthodes)
Exemple : Rectangles
 la notion d’« objet rectangle » n’est intéressante que si l’on peut lui associer des propriétés et/ou mécanismes
généraux (valables pour l’ensemble des rectangles)
 Les notions de largeur et hauteur sont des propriétés générales des rectangles (attributs),

Professeur : C. Fessard Introduction à la POO 5


Introduction au langage C++

 Le mécanisme permettant de calculer la surface d’un rectangle (surface = largeur × hauteur) est commun à tous
les rectangles (méthodes)

Professeur : C. Fessard Introduction à la POO 6


Introduction au langage C++

Classes Instances, Types et Variables


En programmation Objet :
 le résultat des processus d’encapsulation et d’abstraction s’appelle une classe = catégorie d’objets
 une classe défini un nouveau type de variable
 une réalisation particulière d’une classe s’appelle une instance (=objet)
 un objet est une variable évoluée

Professeur : C. Fessard Introduction à la POO 7


Introduction au langage C++

Intérêt d’encapsuler/abstraire
1. Meilleure visibilité et cohérence (permet une plus grande modularité)

2. Les objets ne peuvent être utilisés qu’au travers de leurs interfaces (niveau externe).
Permet un cadre plus rigoureux à l’utilisation des objets utilisés dans un programme et les éventuelles modifications
de la structure interne restent invisibles à l’extérieur

Professeur : C. Fessard Introduction à la POO 8


Introduction au langage C++

Les classes en C++


Une classe se déclare par le mot-clé class
(définit un nouveau type de variable)

Déclaration des attributs


Syntaxe Exemple

L’accès aux valeurs des attributs d’une instance


Définition des méthodes
Syntaxe Exemple

Portée des attributs


Les attributs d’une classe constituent des variables directement accessibles dans toutes les méthodes de la classe. On
parle de « portée de classe » (« variables globales à la classe »).
=> Il n’est donc pas nécessaire de les passer comme arguments des méthodes.
Les méthodes sont :
 des fonctions propres à la classe
 qui ont accès aux attributs de la classe

Professeur : C. Fessard Introduction à la POO 9


Introduction au langage C++

Déclaration d’une instance (un objet)


(se fait de façon similaire à la déclaration d’une variable)

Exemple

Les droits d'accès


Chaque attribut et chaque méthode d'une classe peut posséder son propre droit d'accès.
- public : l'attribut ou la méthode peut être appelé depuis l'extérieur de l'objet.
- private : l'attribut ou la méthode ne peut pas être appelé depuis l'extérieur de l'objet.

Appels aux méthodes


Syntaxe

Exemple

Professeur : C. Fessard Introduction à la POO 10


Introduction au langage C++

Actions et Prédicats
En C++, on peut distinguer les méthodes qui modifient :
 l’état de l’objet (« actions »)
 de celles qui ne changent rien à l’objet (« prédicats »)

Syntaxe

Exemple

Déclarez une action en tant que prédicat (const)

Professeur : C. Fessard Introduction à la POO 11


Introduction au langage C++

Exemples

Chaque instance a ses propres


attributs

Professeur : C. Fessard Introduction à la POO 12


Introduction au langage C++

Encapsulation et interface
 Tout ce qu’il n’est pas nécessaire de connaître à l’extérieur d’un objet devrait être dans le corps de l’objet et
identifié par le mot clé private
 Mettre le mot clé public devant tout membre que vous estimez devoir appartenir à l’interface de la classe

Les droits d'accès


Chaque attribut et chaque méthode d'une classe peut posséder son propre droit d'accès.
- public : l'attribut ou la méthode peut être appelé depuis l'extérieur de l'objet.
- private : l'attribut ou la méthode ne peut pas être appelé depuis l'extérieur de l'objet.
Note : droit d’accès par défaut : les éléments sont accessibles à toutes les méthodes des classes du même package.

Règle d’encapsulation : tous les attributs d'une classe doivent toujours être privés (sauf exception).

Dans la plupart des cas :


 Privé : Tous les attributs
La plupart des méthodes
 Public : Quelques méthodes bien choisies
(interface)

Professeur : C. Fessard Introduction à la POO 13


Introduction au langage C++

« Accesseurs » et « manipulateurs »
Tous les attributs sont privés ? Et si on a besoin de les utiliser depuis l’extérieur de la classe !

1. Accesseurs (« méthodes get » ou « getters ») :

2. Manipulateurs (« méthodes set » ou « setters ») :

Professeur : C. Fessard Introduction à la POO 14


Introduction au langage C++

Exemple complet

L’interface de la class Rectangle


est constitué des méthodes :
 surface
 getHauteur
 getLargeur
 setHauteur
 setLargeur

Professeur : C. Fessard Introduction à la POO 15


Introduction au langage C++

Masquage et this

masquage = un identificateur « cache » un autre identificateur

Situation typique en POO : un paramètre cache un attribut

L‘attribut est hauteur est masqué par le paramètre hauteur

this est une référence à l’instance courante

Syntaxe

Professeur : C. Fessard Introduction à la POO 16


Introduction au langage C++

Définition externe des méthodes

Professeur : C. Fessard Introduction à la POO 17

Vous aimerez peut-être aussi