SlideShare une entreprise Scribd logo
PROGRAMMATION
ORIENTEE OBJET
(POO)
Lecture 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, Mars 2023 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, Mars 2023 3
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.
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
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
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
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
1.2. NOTIONS DE
BASE
Notions d’objet et
de classe
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.
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
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
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
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
1.3. CONCEPTS DE
BASE
Encapsulation,
polymorphisme ,
héritage.
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) :
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
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
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.
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
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
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
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
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
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()
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
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, Mars 2023 28
•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
•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
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
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
1.5. TECHNIQUES
D’ENCAPSULATION
DES OBJETS
Notion de visibilité
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
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
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
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
MISE EN ŒUVRE PRATIQUE DE
LA POO AUTRAVERS D’UN
LANGAGE DE POO
Apprendre à programmer objet
en PYTHON
 Lectures à suivre
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

Contenu connexe

Similaire à Lecture_1_Concepts-fondamentaux_P01.pptx

0 poo cpp
0 poo cpp0 poo cpp
0 poo cppenrif
 
CPOO.pdf
CPOO.pdfCPOO.pdf
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
Yassine Badri
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / Tunisie
Mariem ZAOUALI
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
Zineb ELGARRAI
 
Cours de C++, en français, 2002 - Cours 1.4
Cours de C++, en français, 2002 - Cours 1.4Cours de C++, en français, 2002 - Cours 1.4
Cours de C++, en français, 2002 - Cours 1.4
Laurent BUNIET
 
Java
JavaJava
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
Asmaa BENGUEDDACH
 
11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel
lauraty3204
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetAmine Chkr
 
Uml
UmlUml
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
RihabBENLAMINE
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
asmachehbi
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
ssuser07fc08
 
Cours de C++, en français, 2002 - Cours 3.3
Cours de C++, en français, 2002 - Cours 3.3Cours de C++, en français, 2002 - Cours 3.3
Cours de C++, en français, 2002 - Cours 3.3
Laurent BUNIET
 
Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptx
HassanAbdel
 

Similaire à Lecture_1_Concepts-fondamentaux_P01.pptx (20)

0 poo cpp
0 poo cpp0 poo cpp
0 poo cpp
 
CPOO.pdf
CPOO.pdfCPOO.pdf
CPOO.pdf
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / Tunisie
 
.NET
.NET.NET
.NET
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Cours de C++, en français, 2002 - Cours 1.4
Cours de C++, en français, 2002 - Cours 1.4Cours de C++, en français, 2002 - Cours 1.4
Cours de C++, en français, 2002 - Cours 1.4
 
Cours uml
Cours umlCours uml
Cours uml
 
Java
JavaJava
Java
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 
Uml
UmlUml
Uml
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
Cours de C++, en français, 2002 - Cours 3.3
Cours de C++, en français, 2002 - Cours 3.3Cours de C++, en français, 2002 - Cours 3.3
Cours de C++, en français, 2002 - Cours 3.3
 
UML2
UML2UML2
UML2
 
Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptx
 

Dernier

01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...
01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...
01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...
Institut de l'Elevage - Idele
 
05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait
05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait
05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait
Institut de l'Elevage - Idele
 
Rénovation des prairies sans labour est-ce possible en bio.pdf
Rénovation des prairies sans labour est-ce possible en bio.pdfRénovation des prairies sans labour est-ce possible en bio.pdf
Rénovation des prairies sans labour est-ce possible en bio.pdf
idelewebmestre
 
PROVINLAIT - Bâtiment et bien-être estival
PROVINLAIT - Bâtiment et bien-être estivalPROVINLAIT - Bâtiment et bien-être estival
PROVINLAIT - Bâtiment et bien-être estival
idelewebmestre
 
02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...
02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...
02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...
Institut de l'Elevage - Idele
 
04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...
04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...
04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...
Institut de l'Elevage - Idele
 
Alternative - Complément au Tramway et 3 ème lien de la ville de Quebec (PDF)
Alternative - Complément au Tramway  et 3 ème lien de la ville de Quebec (PDF)Alternative - Complément au Tramway  et 3 ème lien de la ville de Quebec (PDF)
Alternative - Complément au Tramway et 3 ème lien de la ville de Quebec (PDF)
Daniel Bedard
 
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
Alternative - Complément  au Tramway et 3ème lien de la ville de Québec  Alternative - Complément  au Tramway et 3ème lien de la ville de Québec
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
Daniel Bedard
 
03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...
03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...
03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...
Institut de l'Elevage - Idele
 
QCM de révision pour la haute qualité.pdf
QCM de révision pour la haute qualité.pdfQCM de révision pour la haute qualité.pdf
QCM de révision pour la haute qualité.pdf
ffffourissou
 
Note Agro-climatique et prairies n°4 - Juin 2024
Note Agro-climatique et prairies n°4 - Juin 2024Note Agro-climatique et prairies n°4 - Juin 2024
Note Agro-climatique et prairies n°4 - Juin 2024
idelewebmestre
 

Dernier (11)

01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...
01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...
01_UMT STAR_étude de la résilience et des compromis entre résilience et effic...
 
05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait
05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait
05_UMT STAR_Vers une indexation de la longévité fonctionnelle en ovin lait
 
Rénovation des prairies sans labour est-ce possible en bio.pdf
Rénovation des prairies sans labour est-ce possible en bio.pdfRénovation des prairies sans labour est-ce possible en bio.pdf
Rénovation des prairies sans labour est-ce possible en bio.pdf
 
PROVINLAIT - Bâtiment et bien-être estival
PROVINLAIT - Bâtiment et bien-être estivalPROVINLAIT - Bâtiment et bien-être estival
PROVINLAIT - Bâtiment et bien-être estival
 
02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...
02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...
02_UMT STAR_un nouveau biomarqueur de résilience basé sur les métabolites du ...
 
04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...
04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...
04_UMT STAR_Étude de nouveaux caractères en lien avec la santé et le bien-êtr...
 
Alternative - Complément au Tramway et 3 ème lien de la ville de Quebec (PDF)
Alternative - Complément au Tramway  et 3 ème lien de la ville de Quebec (PDF)Alternative - Complément au Tramway  et 3 ème lien de la ville de Quebec (PDF)
Alternative - Complément au Tramway et 3 ème lien de la ville de Quebec (PDF)
 
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
Alternative - Complément  au Tramway et 3ème lien de la ville de Québec  Alternative - Complément  au Tramway et 3ème lien de la ville de Québec
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
 
03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...
03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...
03_UMT STAR_compromis entre résistance au parasitisme et efficience alimentai...
 
QCM de révision pour la haute qualité.pdf
QCM de révision pour la haute qualité.pdfQCM de révision pour la haute qualité.pdf
QCM de révision pour la haute qualité.pdf
 
Note Agro-climatique et prairies n°4 - Juin 2024
Note Agro-climatique et prairies n°4 - Juin 2024Note Agro-climatique et prairies n°4 - Juin 2024
Note Agro-climatique et prairies n°4 - Juin 2024
 

Lecture_1_Concepts-fondamentaux_P01.pptx

  • 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
  • 9. 1.2. NOTIONS DE BASE Notions d’objet et de classe
  • 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