PROGRAMMATION
ORIENTEE OBJET
(POO)
Chapitre 1. Concepts
fondamentaux de la
POO
Syllabus
•1.1. Généralités
•1.2. Notions de classe et d’objet
•1.3. Concepts d’encapsulation, de
polymorphisme et d’héritage
•1.4. Constructeurs et destructeurs
•1.5. Techniques d’encapsulation des objets
Dr P. PODA, MC, 2021-2022 2
1.1. Généralités
• Programmer c’est?
(réponse :) écrire des programmes en vue de
résoudre un problème
• Plusieurs façons de programmer un ordinateur :
• la programmation structurée ;
• la programmation orientée objet.
Dr P. PODA, MC, 2021-2022 3
1.1. Généralités : problématique de la POO
Plusieurs critères d’appréciation d’un programme
(ou logiciel) :
Exactitude
Robustesse
Extensibilité
Réutilisabilité
Portabilité
Etc.
Dr P. PODA, MC, 2021-2022 4
1.1. Généralités : programmation structurée vs POO
Programmation structurée= programmation
procédurale programmation classique
les programmes obéissent à l’équation de Wirth :
Algorithmes + Structures de données = Programmes
Programmation orientée objet=programmation
fondée sur le concept objet où :
Méthodes + Données = Objet
Dr P. PODA, MC, 2021-2022 5
1.1. Généralités : définitions
• La programmation orientée objet (définition) :
est un modèle de programmation consistant en la
définition et en l'assemblage d’objets coopérants.
• Un objet représente un concept, une idée ou
toute entité du monde physique TELLE QUE : une
voiture, une personne, une table, un compte bancaire,
un livre, ...
Dr P. PODA, MC, 2021-2022 6
1.1. Généralités
•Pour programmer on se sert de langages de
programmation.
•En POO, les langages sont orientés objets.
•Exemples de langages de POO : Eiffel,
Smalltalk, Simula, Java, C++, C#, Pascal objet,
[Link].
Dr P. PODA, MC, 2021-2022 7
1.1. Généralités : historique de la POO
• Années 1960 : prémices de la POO avec le langage Simula-67
• Années 1970-1980 : Smalltalk 72, puis Smalltalk 80 marquent le
début effectif de la POO ainsi que la pose de ses concepts de base.
• A partir de 1980 : abondance des langages orientés objet:
• 1980 : Objective C
• 1983 : C++, Common LISP object
• 1984 : Eiffel
• 1996 : java 1
• 1999 : Java 2
• Années 1990 : évolutions du concept qui s’étend aux aspects
conception, analyse et bases de données.
Dr P. PODA, MC, 2021-2022 8
1.2. NOTIONS DE
BASE
Notions d’objet et
de classe
1.2. Notions de base : objet(1)
• Un objet(1) (définition) :
est une structure de données qui répond à un ensemble de
messages.
• La structure de données définit l’état de l’objet ;
• L'ensemble des messages auxquels la structure de
données répond décrit son comportement.
• Exemple d’objet :
voiture = objet décrit par son état (couleur, marque, type,
âge) et ses comportements (réparer, peindre, laver, …)
Dr P. PODA, MC, 2021-2022 10
1.2. Notions de base : objet(2)
Un objet (2) (définition) :
est un ensemble constitué d’attributs et de méthodes.
Les Attributs : encore appelés champs ou données, décrivent la
structure interne de l’objet et servent à décrire l’état de l’objet.
Les Méthodes : fonctions (ou procédures) en programmation
classique, ce sont les éléments d’un objet servant d’interface
entre les données de l’objet et le programme. Elles correspondent
aux éléments qui décrivent le comportement de l’objet.
Exemple : objet voiture ; objet article.
◦ attributs = {?, ..., ?} Méthodes = {?, ..., ?}
Dr P. PODA, MC, 2021-2022 11
1.2. Notions de base : Objet
Structure Objet
Objet vs structure
Dr P. PODA, MC, 2021-2022 12
1.2. Notions de base : objet
REMARQUE : ANALOGIE AVEC LA BIOLOGIE
• La définition (1) de l’objet indique comment
l’objet fonctionne. On pourrait donc qualifier cette
définition de “physiologique”.
• La définition (2) de l’objet montre de quoi est
composé l’objet. On pourrait donc qualifier cette
2è définition d’”anatomique”.
• Remarque : définition (1) reste la plus complète
car embarquant la seconde.
Dr P. PODA, MC, 2021-2022 13
1.2. Notions de base : Objet
q Communication inter-objets : messages
L’objet avec ses attributs et ses méthodes demeure quelque
chose d'inanimé.
Pour le faire fonctionner, il faut lui envoyer un message.
L'envoi d'un message consiste tout simplement à effectuer
un appel de méthode (appel de fonction) sur cet objet.
L'objet qui reçoit un tel message exécute la méthode
correspondante sur ses champs (données) et retourne
éventuellement un résultat.
Dr P. PODA, MC, 2021-2022 14
1.2. Notions de base : Classe
• La notion de classe correspond simplement à la
généralisation de la notion de type rencontrée dans les
langages classiques. ( classe = une abstraction)
La classe (définition) :
• Les objets apparaissent donc comme des variables d’un
tel type classe : on dit en POO qu’un objet est une
instance de sa classe.
Dr P. PODA, MC, 2021-2022 15
1.3. CONCEPTS DE
BASE
Encapsulation,
polymorphisme ,
héritage.
1.3. Concepts de base : encapsulation
• En POO, chaque objet associe des données (attributs) et des
méthodes.
• Les méthodes agissent exclusivement sur les données de
l’objet.
• l'encapsulation est un concept qui concerne les données
(attributs) d'un objet.
• L'encapsulation (définition) :
Dr P. PODA, MC, 2021-2022 17
1.3. Concepts de base : encapsulation
• L’encapsulation confère aux méthodes d’un objet de jouer le
rôle d’interface obligatoire (permettant l ’accès aux données).
• L’encapsulation permet de réaliser une abstraction des
données.
En effet, vu de l’extérieur, un objet se caractérise
uniquement par les spécifications de ses méthodes, la
manière dont sont réellement implantées les données étant
sans importance.
• L’encapsulation est intimement liée à ce qu’on peut qualifier de
POO « pure ».
Dr P. PODA, MC, 2021-2022 18
1.3. Concepts de base : encapsulation
Approche objet
Approche
classique
Illustration de l’encapsulation : les méthodes jouent un rôle d’interface
Dr P. PODA, MC, 2021-2022 19
1.3. Concepts de base : héritage
Des abstractions de données sont souvent très similaires ;
par exemple on définit :
◦ un ensemble : des éléments sans ordre défini
◦ une séquence : un ensemble d’éléments dans un ordre
Séquence = ensemble + ordre
◦ une pile : une séquence où l’on ajoute et enlève du même
côté
Pile = séquence + contraintes sur ajout/suppression
◦ une file : séquence où l’on ajoute d’un côté et enlève de
l’autre côté
File = séquence + contraintes sur ajout/suppression
Dr P. PODA, MC, 2021-2022 20
1.3. Concepts de base : héritage
• Il peut être intéressant de définir des abstractions (e.g.: ensemble,
séquence, pile, file) sans répéter les parties communes.
• L’héritage est une manière de définir des abstractions de façon
incrémentale :
• une définition B peut “hériter” d’une autre définition A.
• la définition B prend A comme base, avec éventuellement des
modifications et des extensions.
l’héritage (définition) : est ce concept de la POO qui permet de
définir une nouvelle classe à partir d’une classe existante, à
laquelle on ajoute de nouvelles données et méthodes.
• L’héritage facilite la réutilisation des données et des méthodes
existantes .
Dr P. PODA, MC, 2021-2022 21
1.3. Concepts de base : héritage
Dr P. PODA, MC, 2021-2022 22
1.3. Concepts de base : héritage
Exercice :
Pour chacun des cas suivants, trouver des
exemples pour illustrer le concept d’héritage :
• Bâtiment,
• Véhicule,
• Humain.
Dr P. PODA, MC, 2021-2022 23
1.3. Concepts de base : polymorphisme
Etymologiquement, le polymorphisme vient de poly qui veut
dire plusieurs et morphisme qui signifie forme.
Ainsi, le polymorphisme traite de ce qui peut se présenter sous des
formes différentes.
En Informatique, on dira qu’une opération est polymorphe si
elle peut prendre des arguments de types différents.
Pour un objet, le polymorphisme concerne les méthodes.
Le polymorphisme dérive directement du principe
d'héritage : un objet qui hérite des attributs et méthodes de
ses ancêtres garde toujours la capacité de pouvoir redéfinir
une méthode afin de la réécrire, ou de la compléter.
Dr P. PODA, MC, 2021-2022 24
1.3. Concepts de base : polymorphisme
• Le concept de polymorphisme permet de choisir en fonction
des besoins la bonne méthode à appeler et ce pendant
l’exécution (on parle de) liaison dynamique.
q Exemple 1 : considérons un objet Véhicule et ses descendants
Bateau, Avion, Voiture, mobylette possédant tous une méthode
Avancer( ).
Le système appellera (pendant l’exécution) la fonction
Avancer( ) spécifique suivant que le véhicule est un Bateau, un
Avion, une mobylette ou bien une Voiture.
Dr P. PODA, MC, 2021-2022 25
1.3. Concepts de base : polymorphisme
q Exemple 2 :
On considère un peint avec la possibilité de dessiner
les trois figures géométriques dans la zone de dessin
Zone de dessin
Dr P. PODA, MC, 2021-2022 26
1.3. Concepts de base : polymorphisme
Classe: Forme Géométrique
Exemple 2 : Attributs:
Méthodes:
-Polymorphe dessiner()
-Polymorphe effacer()
Classe: Cercle Classe: Carré Classe: Triangle
Attributs: Attributs: Attributs:
Méthodes: Méthodes: Méthodes:
- dessiner() - dessiner() - dessiner()
- effacer() - effacer() - effacer()
Polymorphisme
=
Un même nom, plusieurs implantations
Dr P. PODA, MC, 2021-2022 27
1.3. Concepts de base : polymorphisme
qExemple 2 : soit la fonction rafraichir( ) consistant à
effacer() et à dessiner() telle que :
• pour toute forme géométrique dans zone de dessin
effacer( ).
• pour toute forme géométrique dans zone de dessin
dessiner( ).
• A chaque fois il faut appeler la fonction dessiner( ) ou
effacer( ) associée à la forme géométrique repérée et
cela ne peut être fait qu’à l’exécution;
d’où Polymorphisme = Liaison dynamique
Dr P. PODA, MC, 2021-2022 28
1.4.
CONSTRUCTEURS ET
DESTRUCTEURS
Constructeurs et
destructeurs
1.4.1. Constructeurs
• Les constructeurs servent à construire les objets en
mémoire :
• en mettant en place les attributs (données),
• en associant les méthodes aux attributs,
• en initialisant les attributs,
• et en créant le diagramme d’héritage de l’objet.
• Créer le diagramme d’héritage de l’objet, c’est mettre en place
toutes les liaisons entre les ancêtres et les descendants.
Dr P. PODA, MC, 2021-2022 30
1.4.1. Constructeurs
• N.B. :
1) Il peut exister en mémoire plusieurs instances
d’un même type objet, par contre seule une copie
des méthodes est conservée en mémoire, de sorte
que chaque instance se réfère à la même zone
mémoire en ce qui concerne les méthodes.
2) les valeurs des attributs sont distincts d’un objet
à un autre (de la même classe).
Dr P. PODA, MC, 2021-2022 31
1.4.1. Constructeurs
•Un objet peut ne pas avoir de constructeur
explicite. Dans ce cas, c'est le compilateur qui
se charge de créer de manière statique les
liens entre attributs et méthodes.
•Un objet peut avoir plusieurs constructeurs
( fait du polymorphisme)
Dr P. PODA, MC, 2021-2022 32
1.4.2. Destructeurs
• Le destructeur est le pendant du constructeur car se
chargeant de détruire l'instance de l'objet.
• La mémoire allouée pour le diagramme d'héritage est
libérée.
• Remarques :
• un objet peut ne pas avoir de destructeur
• Un objet peut posséder plusieurs destructeurs
Dr P. PODA, MC, 2021-2022 33
1.4.3. Cycle de vie d’un objet
q Cycle de vie d’un objet :
1) « Naissance » de l’objet : l'objet est créé à l’aide d’un
constructeur.
2) « Vie » de l’objet : l’objet est utilisé aussi longtemps
qu’on le veut.
3) « Mort » de l’objet : l'objet est détruit à l’aide d’un
destructeur.
Dr P. PODA, MC, 2021-2022 34
1.5. TECHNIQUES
D’ENCAPSULATION
DES OBJETS
Notion de visibilité
1.5. Techniques d’encapsulation
q Notion de visibilité :
• La notion de visibilité repose sur le principe de
l’encapsulation.
• La visibilité sert à garantir la protection des données en :
• en permettant de masquer les données et certaines
méthodes les gérant,
• et en laissant visibles d’autres méthodes devant servir à
la gestion publique de l'objet.
Dr P. PODA, MC, 2021-2022 36
1.5. Techniques d’encapsulation
q Visibilité publique :
• Les attributs et méthodes sont publiques :
cela signifie qu'ils sont accessibles depuis tous les
descendants et dans tous les modules : programme,
unité, ...
• Les attributs et méthodes publiques n’ont
pas besoin de restriction particulière.
Dr P. PODA, MC, 2021-2022 37
1.5. Techniques d’encapsulation
q Visibilité privée :
• Les attributs et méthodes sont dits privés.
• La visibilité privée restreint la portée d'un attribut ou
d'une méthode au module où il/elle est déclaré(e).
• Ainsi, si un objet est déclaré dans une unité avec une
donnée privée, alors cette donnée ne pourra être accédé
qu'à l'intérieur même de l'unité.
Dr P. PODA, MC, 2021-2022 38
1.5. Techniques d’encapsulation
q Visibilité protégée :
• Les attributs et méthodes sont dits protégés.
• La visibilité 'protégé' correspond à la visibilité 'privé'
excepté que tout attribut ou méthode protégé(e) est
accessible dans tous les descendants, quel que soit le
module où il se situe.
Dr P. PODA, MC, 2021-2022 39
MISE EN ŒUVRE PRATIQUE DE
LA POO AU TRAVERS D’UN
LANGAGE DE POO
Apprendre à programmer objet
en JAVA
Chapitres à suivre