2. 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, Mars 2023 2
3. 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, Mars 2023 3
4. 1.1. Généralités : problématique de la POO
Plusieurs critères d’appréciation d’un programme
(ou logiciel) :
Dr P. PODA, MC, Mars 2023 4
Exactitude
Robustesse
Extensibilité
Réutilisabilité
Portabilité
Etc.
5. 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, Mars 2023 5
6. 1.1. Généralités : définitions
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, Mars 2023 6
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
7. 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,
VB.Net.
Dr P. PODA, MC, Mars 2023 7
8. 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, Mars 2023 8
10. 1.2. Notions de base : objet(1)
• 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, Mars 2023 10
Un objet(1) (définition) : est une structure de
données qui répond à un ensemble de messages.
11. 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, 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, Mars 2023 11
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, Mars 2023 12
13. 1.2. Notions de base : Objet
Communication inter-objets : messages
L’objet avec ses attributs et ses méthodes reste quelque
chose d'inanimé.
Pour faire fonctionner un objet, 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, Mars 2023 13
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) :
•Un objet apparait donc comme une variable dont le type
est sa classe
•L’objet est appelé une instance de sa classe.
Dr P. PODA, MC, Mars 2023 14
16. 1.3. Concepts de base : encapsulation
•En POO, chaque objet associe des attributs (données,
champs) 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.
Dr P. PODA, MC, Mars 2023 16
L'encapsulation (définition) :
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 attributs étant
sans importance.
•L’encapsulation est intimement liée à ce qu’on peut qualifier de
POO « pure ».
Dr P. PODA, MC, Mars 2023 17
18. 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, Mars 2023 18
19. 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éfinitionA.
• la définition B prend A comme base, avec éventuellement des
modifications et des extensions.
Dr P. PODA, MC, Mars 2023 19
l’héritage (définition) : 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/ou méthodes.
L’héritage facilite la réutilisation des données et des
méthodes existantes.
20. 1.3. Concepts de base : héritage
Dr P. PODA, MC, Mars 2023 20
Classe existante (ancêtre)
nouvelle classe (descendant) nouvelle classe (descendant)
M M M
M M M M M M
M M
M
M
M
A A A A A
A
A A A A
A A A A A
A A
21. 1.3. Concepts de base : héritage
Exercice :
Pour chacune des abstractions suivantes,
trouver des exemples pour illustrer le concept
d’héritage :
• Bâtiment,
• Véhicule,
• Humain.
Dr P. PODA, MC, Mars 2023 21
22. 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, Mars 2023 22
23. 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.
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, Mars 2023 23
24. 1.3. Concepts de base : polymorphisme
Dr P. PODA, MC, Mars 2023 24
Zone de dessin
Exemple 2 :
On considère un peint avec la possibilité de dessiner
les trois figures géométriques dans la zone de dessin
25. 1.3. Concepts de base : polymorphisme
Dr P. PODA, MC, Mars 2023 25
Polymorphisme
=
Un même nom, plusieurs implantations
Exemple 2 :
Classe: Forme Géométrique
Attributs:
Méthodes:
-Polymorphe dessiner()
-Polymorphe effacer()
Classe: Cercle
Attributs:
Méthodes:
- dessiner()
- effacer()
Classe: Carré
Attributs:
Méthodes:
- dessiner()
- effacer()
Classe:Triangle
Attributs:
Méthodes:
- dessiner()
- effacer()
26. 1.3. Concepts de base : polymorphisme
Exemple 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, Mars 2023 26
28. 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, Mars 2023 28
29. •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, Mars 2023 29
1.4.1. Constructeurs
30. •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, Mars 2023 30
1.4.1. Constructeurs
31. 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, Mars 2023 31
32. 1.4.3. Cycle de vie d’un objet
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, Mars 2023 32
34. 1.5. Techniques d’encapsulation
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, Mars 2023 34
35. 1.5. Techniques d’encapsulation
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, Mars 2023 35
36. 1.5.Techniques d’encapsulation
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, Mars 2023 36
37. 1.5.Techniques d’encapsulation
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, Mars 2023 37
38. MISE EN ŒUVRE PRATIQUE DE
LA POO AUTRAVERS D’UN
LANGAGE DE POO
Apprendre à programmer objet
en PYTHON
Lectures à suivre
39. Plan du cours
Lecture 1 : Concepts fondamentaux de la POO
Lecture 2 : Notions fondamentales : mise en oeuvre
en Python
Lecture 3 : Encapsulation et Héritage : mise en
oeuvre en Python
Lecture 4 : Polymorphisme en Python
Lecture 5 : Gestion des exceptions en Python
Dr P. PODA, MC, Mars 2023 39