SlideShare une entreprise Scribd logo
1  sur  77
PROGRAMMER EN
ORIENTÉ OBJET
DÉVELOPPEMENT DIGITAL
OBJECTIF
2
A l’issue de ce module de compétence,
vous serez capable de programmer en
Orientée Objet (POO)
90 heures
3
SOMMAIRE
Appréhender le paradigme de la POO
Chapitre 1 : Introduire la POO
Chapitre 2 : Définir un objet
Connaître les principaux piliers de la POO
Chapitre 1 : Définir l’héritage et le
polymorphisme
Chapitre 2 : Connaître l’encapsulation
Chapitre 3 : Caractériser l’abstraction
Appliquer la POO dans le langage de
programmation Python
Chapitre 1 : Présenter l’environnement de
programmation Python 3
Chapitre 2 : Implémenter une classe
Chapitre 3 : Administrer les exceptions
Chapitre 4 : Gérer le interfaces graphiques
PARTIE 1 PARTIE 2 PARTIE 3
APPRÉHENDER LE
PARADIGME DE LA POO
PARTIE 1
INTRODUIRE LA POO
CHAPITRE 1
4 - Historique de la POO
3 - Avantages de la POO
1 - Programmation procédurale
2 - De la programmation procédurale à la POO
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation procédurale
Dans la programmation procédurale, le programme est divisé en petites parties appelées procédures ou
fonctions.
• Ensuite, pour résoudre chaque partie, une ou plusieurs procédures/fonctions sont utilisées
• Dans la programmation procédurale, les notions de données et de traitement de ces données sont
séparées
6
Programmes = Procédures/Fonctions + Données
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Exemple d’algorithme
7
Algorithme CalculSomme100PremierNombre
Variable
I,S: entier
Procédure Somme
Début /*début de la procédure*/
S0
Pour i1 à 100 Faire
SS+1
FinPour
Ecrire(" La somme des 100 premiers nombres est ",S);
Fin /*Fin de la procédure*/
Début /*début algorithme*/
Somme
Fin /*fin algorithme*/
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation procédurale
Dans la programmation procédurale:
• Les données constituent la partie passive du programme.
• Les procédures et les fonctions constituent la partie active.
Programmer dans ce cas revenait à:
• définir un certain nombre de variables (entier, chaine de caractères, structures, tableaux, etc.)
• écrire des procédures pour les manipuler.
8
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation procédurale
Inconvénients:
• Difficulté de réutilisation du code
• Difficulté de la maintenance de grandes applications
9
INTRODUIRE LA POO
CHAPITRE 1
4 - Historique de la POO
3 - Avantages de la POO
1 - Programmation procédurale
2 - De la programmation procédurale à la POO
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation orientée objet
• Séparation (données, procédures) est-elle utile ?
• Pourquoi privilégier les procédures sur les données ?
• Pourquoi ne pas considérer que les programmes sont avant tout des ensembles objets informatiques
caractérisé par les opérations qu’ils connaissent?
Les langages orientés objets sont nés pour répondre à ces questions.
Ils sont fondés sur la connaissance d’une seule catégorie d’entités informatiques : LES OBJETS
11
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation orientée objet
• Un objet incorpore des aspects statiques et dynamiques au sein d’une même notion
• Un programme est constitué d’un ensemble d’objets chacun disposant d’une partie procédures
(traitement) et d’une partie données.
12
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation orientée objet
13
Programmation procédurale
Programmation Orientée Objet
Que doit faire le
système ?
Sur quoi doit-il le
faire?
De quoi doit être
composé mon
programme?
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Programmation orientée objet
14
Programmation procédurale
Programmation Orientée Objet
Créditer un
compte?
Débiter un
compte?
Comment se
présente (structure)
d’un compte
bancaire ?
Programme de Gestion des
comptes bancaires
INTRODUIRE LA POO
CHAPITRE 1
4 - Historique de la POO
3 - Avantages de la POO
1 - Programmation procédurale
2 - De la programmation procédurale à la POO
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Avantages de la POO
Motivation : concevoir, maintenir et exploiter facilement de gros logiciels
Avantages:
• Modularité : les objets forment des modules compacts regroupant des données et un ensemble
d'opérations ce qui réduit la complexité de l’application (classe = module)
• Abstraction :
• Les entités objets de la POO sont proches de celles du monde réel (objet est un compte, stagiaire,
formateur, etc.).
• La POO se base sur un processus qui consiste à masquer des détails non pertinents à l’utilisateur.
Exemple: Pour envoyez un SMS, vous tapez simplement le message, sélectionnez le contact et cliquez
sur Envoyer →Ce qui se passe réellement en arrière-plan est masqué car il n’est pas pertinent à vous.
16
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Motivation et avantage de la POO
Réutilisabilité:
• La POO favoriser la réutilisation de composants logiciels et même d'architectures complexes
• La définition d’une relation d’héritage entre les entités logicielle évite la duplication de code
→ Facilité de la maintenance logicielle et amélioration de la productivité
17
INTRODUIRE LA POO
CHAPITRE 1
4 - Historique de la POO
3 - Avantages de la POO
1 - Programmation procédurale
2 - De la programmation procédurale à la POO
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Historique évolution de la POO
• Les concepts de la POO naissent au cours des années 1970 dans des laboratoires de recherche en
informatique.
• Les premiers langages de programmation véritablement orientés objet ont été Simula, puis Smalltalk.
• Simula (1966) regroupe données et procédures.
• Simula I (1972) formalise les concepts d'objet et de classe. Un programme est constitué d’ une
collection d'objets actifs et autonomes.
• Smalltalk (1972) : généralisation de la notion d'objet.
19
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Historique évolution de la POO
• A partir des année 80, les principes de la POO sont appliqués dans de nombreux langages
• Eiffel créé par le Français Bertrand Meyer
• C++ est une extension objet du langage C créé par le Danois Bjarne Stroustrup
• Objective C une autre extension objet du C utilisé, entre autres, par l'iOS d'Apple
• Les années 1990 ont vu l'avènement des PPOs dans de nombreux secteurs du développement logiciel, et la
création du langage Java par la société Sun Microsystems
• De nos jours, de très nombreux langages permettent d'utiliser les principes de la POO dans des domaines
variés tels que PHP (à partir de la version 5), VB.NET, PowerShell, Python, etc.
20
DÉFINIR UN OBJET
CHAPITRE 2
4 – Objets en interaction
3 – Constructeur/Destructeur
1 - Notion d’objet
2 - Notion de classe
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
• Chaque objet doit avoir un nom (référence) « qui lui est propre » pour l’identifier
• La référence permet d’accéder à l’objet, mais n’est pas l’objet lui-même. Elle contient l’adresse de
l’emplacement mémoire dans lequel est stocké l’objet.
22
OBJET= Référent + Etat + Comportement
0x304009
Référence P1
Objet
@0x304009
Mémoire
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
• Plusieurs référents peuvent référer un même objet→ Adressage indirect
23
P1=P2
Recopie l’adresse de P2
dans le réfèrent de P1
0x304009 Objet 1
P1
0x504010 Objet 2
P2
Mémoire
0x504010 Objet 1
P1
0x504010 Objet 2
P2
Mémoire
Mémoire des objets
Mémoire des objets
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
• Un objet est capable de sauvegarder un état c'est-à-dire un ensemble d’information dans des variables
internes (attributs)
• Attributs sont l’ensemble des informations permettant de représenter l’état de l’objet.
24
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
Exemple d’objets où chaque attribut est d’un type dit «primitif » ou « prédéfini », comme entier, réel,
caractère…
25
Couleur=rouge
Marque=Peugeot
Couleur=Noir
Marque=Citroën
Type: Citronnier
Hauteur: 2
Première_Voiture
Deuxième_Voiture
Premier-Arbre-Dans-Larue
Mémoire des objets
Attribut Valeur
0x304009
0x304021
0x304100
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
Un objet stocké en mémoire peut être placé à l’intérieur de l’espace mémoire réservé à un autre. Il s’agit d’un
Objet Composite
26
Couleur=rouge
Marque=Peugeot
Mémoire des objets
Première_Voiture
Moteur1
Moteur=Moteur1
Puissance=100
Marque=XX
Première_Voiture:
Objet composite
Moteur1:
Objet composant
0x304009
0x304021
26
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
• Les objets changent d’état
• Le cycle de vie d’un objet se limite à une succession de changements d’états
• Soit l’objet Feu_de_signalisation_EnQuestion avec sa couleur et ses trois valeurs
27
Mémoire des objets
Feu_de_signalisation_EnQuestion
Couleur=1
Couleur=2
Couleur=3
0x304021
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion d’objet
Mais qui est la cause des changements d’états ?
– LES METHODES
28
OBJET= Référent + Etat + Comportement
Couleur=1
Mémoire des objets Mémoire des méthodes
Change()
Couleur=Couleur+1
If(Couleur==4)
Couleur=1
Feu_de_signalisation
_EnQuestion
0x304021
DÉFINIR UN OBJET
CHAPITRE 2
4 – Objets en interaction
3 – Constructeur/Destructeur
1 - Notion d’objet
2 - Notion de classe
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion de classe
Une classe unit les méthodes aux attributs
Une classe est un modèle de définition pour les objets ayant:
• même structure (même ensemble d’attributs)
• même comportement (mêmes méthodes)
30
CLASSE= Attributs + Méthodes
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion de classe
• Les objets sont des représentations dynamiques (instanciation), « vivantes » du modèle défini pour eux au
travers de la classe.
• Une classe permet d’instancier (créer) plusieurs objets
• Chaque objet est une instance (un exemplaire) d’une (seule) classe
31
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Notion de classe
32
Avion_airbus a380
Etat= En VOl
Contenu réservoir= 40l
Atterrir()
Avion_airbus a320
Etat= Au Sol
ContenuRéservoir= 25l
Atterrir()
objet1
objet2
Avion
Classe Avion
EtatContenuRéservoir
Atterrir()
Attributs
Méthodes
Feu_de_Signalisation1
Couleur =1
objet1
objet2
Feu_de_Signalisation
Classe Feu_de_Signalisation
Couleur
Change()
Attributs
Méthodes
Change()
Feu_de_Signalisation2
Couleur =2
Change()
instanciation
instanciation
instanciation
instanciation
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Objet: instance d’une classe
• Chaque objet correspond à une instance de la classe à laquelle il fait référence
• La création d’un objet est constituée de deux phases:
• Une phase de ressort de la classe: allouer de la mémoire et un contexte d’exécution minimaliste.
• Une phase du ressort de l’objet: initialiser ses attributs d’instances
• Dans les langages, ces deux phases ne sont pas différenciées.
→ Appel à une méthode spéciale : le constructeur
33
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Objet: instance d’une classe
34
Couleur=1
Mémoire des objets
Feu_de_signalisation_EnQuestion
0x304021
Couleur=2
Mémoire des objets
Feu_de_signalisation_EnQuestion
0x304021
Feu_de_Signalisation
Classe Feu_de_Signalisation
Couleur
Change()
Feu_de_signalisation_EnQuestion.change()
Application de la méthode change()
définie dans la classe Feu_de_Signalisation
Appel d’une méthode d’une classe
instanceDeClasse.méthode()
Exemple: Soit la classe Feu_De_Signalisation
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Membre de classe vs membre d’instance
• Membre de classe
• Un Attribut de classe est associé à sa classe et
non à une instance de cette classe.
• Méthode de classe est associée à une classe et
non à un objet.
35
• Membre d'instance
Un attribut d'instance est associée à une instance
de la classe.
Chaque objet possède donc sa propre copie de la
propriété
.Une méthode d'instance est associée à une
instance d'une classe.
Chaque objet possède donc sa propre copie de la
méthode.
Un membre est un attribut ou une méthode. Il existe 2 types de membres (de classe/d’instance)
Remarque:
• Une méthode de classe ne peut exploiter que des
membres de classe
• Une méthode d'instance peut utiliser n'importe
quel type de membre (classe ou instance)
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Membre de classe vs membre d’instance
Exemple:
la classe Avion suivante
36
Avion
Classe Avion
EtatContenuRéservoir
Atterrir()
CompterNombreAvions()
NombreAvions
Méthode de classe
Méthode d’instance
Attribut de classe
Attribut d’instance
DÉFINIR UN OBJET
CHAPITRE 2
4 - Objets en interaction
3 - Constructeur/Destructeur
1 - Notion d’objet
2 - Notion de classe
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Constructeur
• Le constructeur d'une classe est une méthode appelée une seule fois par objet et ce au moment de sa
création.
• Cette méthode sera appelée lors de la création de l’objet.
• Le constructeur peut disposer d’un nombre quelconque de paramètres, éventuellement aucun.
• Le rôle du constructeur est d'initialiser les attributs de l'objet
38
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Destructeur
• Le destructeur est une méthode qui permet la destruction d'un objet non référencé.
• Un destructeurs permet:
• Gérer les erreurs
• . Libérer les ressources utilisées de manière certaine
• Assurer la fermeture de certaines parties du code.
• Les langages qui utilisent des ramasse-miettes (exemple Python) n'offrent pas le mécanisme des
destructeurs puisque le programmeur ne gère pas la mémoire lui-même
• Un ramasse-miettes est programme de gestion automatique de la mémoire. Il est responsable du
recyclage de la mémoire préalablement allouée puis inutilisée.
39
DÉFINIR UN OBJET
CHAPITRE 2
4 - Objets en interaction
3 - Constructeur/Destructeur
1 - Notion d’objet
2 - Notion de classe
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Objets en interaction
• La communication entre les objets est la base de la POO
• Les objets communiquent par envois de messages ceci:
• Quand un objet demande à un autre d’exécuter une méthode qui est propre à cet autre.
41
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
• Supposons que le feu « Feu_de_signalisation_EnQuestion1 » fasse ralentir ou accélérer la voiture « Voiture-Devant »
• Objet Feu_de_signalisation_EnQuestion est l’expéditeur de message
• Objet Voiture-Devant est le destinataire de message
Objets en interaction
42
Couleur=3
Mémoire des objets
Mémoire des méthodes
Change()
Couleur=Couleur+1
If(Couleur==4) Couleur=1
If (couleur==1)……….
Voiture-Devant.ChangeVitesse(50)
Vitesse=0
ChangeVitesse(int nV)
Vitesse=nV
Feu_de_signalisation_EnQuestion1
0x304021
0x30502
Voiture-Devant
CONNAÎTRE LES PRINCIPAUX
PILIERS DE LA POO
PARTIE 2
DÉFINIR L’HÉRITAGE ET
LE POLYMORPHISME
CHAPITRE 1
4 - Principe du polymorphisme
3 - Redéfinition des méthodes
1 - Principe et intérêt de l’héritage
2 - Types de l’héritage
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de l’héritage
• Le concept de l'héritage spécifie une relation de spécialisation/généralisation entre les classes (Document :
livre, revu, …/Personne : étudiant, employé…)
• Lorsqu'une classe D hérite d'une classe B :
• D possède toutes les caractéristiques de B et aussi, d'autres caractéristiques qui sont spécifiques à D
• D est une spécialisation de B (un cas particulier)
• B est une généralisation de D (cas général)
• D est appelée classe dérivée (fille)
• B est appelée classe de base (mère ou super-classe)
• Tout objet instancié de D est considéré, aussi, comme un objet de type B
• Un objet instancié de B n'est pas forcément un objet de type D
45
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de l’héritage
Exemple:
Considérons la définition des 3 classes Personne, Etudiant et Employé suivantes:
Problème:
• Duplication du code
• Une modification faite sur un attribut ou méthode doit être refaite sur les autres classes
46
Personne
Nom
CIN
anneeNaiss
age()
Etudiant
Nom
CIN
anneeNaiss
note1, note2
age()
moyenne()
Employe
Nom
CIN
anneeNaiss
prixHeure
nbreHeure
age()
Salaire()
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de l’héritage
Solution
• Placer dans la classe mère toutes les informations
communes à toutes les classes.
• Les classes filles ne comportent que les attributs ou
méthodes plus spécifiques.
• Les classes filles héritent automatiquement les
attributs (et les méthodes) qui n'ont pas besoin
d'être ré-écrits.
47
Personne
Nom
CIN
anneeNaiss
age()
Etudiant
note1, note2
moyenne()
Employe
prixHeure
nbreHeure
Salaire()
Super-classe
Sous-classes
Héritent de
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Intérêt de l’héritage
• L'héritage minimise l'écriture du code en regroupant les caractéristiques communes entre classes au sein
d’une seule (la classe de base) sans duplication.
• Localisation facile, en un point unique, des sections de code.
• La rectification du code se fait dans des endroits uniques grâce à la non redondance de description
• L’extension ou l’ajout de nouvelles classes est favorisée surtout en cas d’une hiérarchie de classes bien
conçue
• Définition des informations et des comportements aux niveaux opportuns.
• Rapprochement de la modélisation des systèmes d’informations aux cas réels
48
DÉFINIR L’HÉRITAGE ET
LE POLYMORPHISME
CHAPITRE 1
4 - Principe du polymorphisme
3 - Redéfinition des méthodes
1 - Principe et intérêt de l’héritage
2 - Types de l’héritage
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Héritage multiple
• Une classe peut hériter de plusieurs classes
Exemple:
Un Etudiant est à la fois une Personne et un EtreHumain
• La classe Etudiant hérite les attributs et les méthodes des
deux classes→ Il deviennent ses propres attributs et méthodes
50
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Héritage en cascade
• Une classe sous-classe peut être elle-même une super-classe
Exemple:
Etudiant hérite de Personne
EtudiantDeuxièmeCycle hérite de Etudiant
→ EtudiantDeuxièmeCycle hérite de Personne
51
Etudiant
note1
note2
Moyenne()
Personne
Nom
CIN
dateNaiss
age()
Etudiant
DeuxiemeCycle
option
DÉFINIR L’HÉRITAGE ET
LE POLYMORPHISME
CHAPITRE 1
4 - Principe du polymorphisme
3 - Redéfinition des méthodes
1 - Principe et intérêt de l’héritage
2 - Types de l’héritage
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Redéfinition des méthodes héritées
• Une méthode héritée peut être redéfinie si sa version initiale n'est pas satisfaisante pour la classe dérivée
• La redéfinition consiste à conserver l'entête de la méthode et à proposer un code différent
• Si une méthode héritée est redéfinie, c'est uniquement la nouvelle version qui fait parti de la description
de la classe dérivée
• Si la méthode définie au niveau de la classe dérivée est de type différent, ou de paramètres différents, alors
il s’agit d’une nouvelle méthode qui s’ajoute à celle héritée de la classe de base
53
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Redéfinition des méthodes héritées
Exemple:
• Soit la classe Etudiant qui hérite de la classe Personne
• La méthode afficher() de la classe Personne affiche les attribut Nom,
CIN d’une personne
• La classe Etudiant hérite la méthode afficher() de la classe Personne et
la redéfinit , elle propose un nouveau code (la classe Etudiant ajoute l’affichage
des attributs notes1 et note2 de l’étudiant)
54
Personne
Nom
CIN
age()
afficher()
Etudiant
note1
note2
Moyenne()
afficher()
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Mécanisme de la liaison retardée
Soit C la classe réelle d'un objet o à qui on envoie un message « o.m() »
• o.m() peut appeler la méthode m() de C ou de n’importe quelle sous-classe de C
• Si le code de la classe C contient la définition (ou la redéfinition) d’une méthode m(), c’est cette méthode
qui sera exécutée
• Sinon, la recherche de la méthode m() se poursuit dans la classe mère de C, puis dans la classe mère de
cette classe mère, et ainsi de suite, jusqu’à trouver la définition d’une méthode m() qui est alors exécutée
55
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Mécanisme de la liaison retardée
Exemple: Soit etc un objet de type EtudiantTroisièmeCycle
56
Etudiant
afficher()
Personne
afficher()
EtudiantTroisième
Cycle
afficher()
Etudiant
Personne
afficher()
EtudiantTroisième
Cycle
etc.afficher()
1er cas 2ème cas
etc.afficher()
Afficher() de la
classe Personne
est exécutée
Afficher() de la classe
EtudiantTroisièmeCycle
est exécutée
DÉFINIR L’HÉRITAGE ET
LE POLYMORPHISME
CHAPITRE 1
4 - Principe du polymorphisme
3 - Redéfinition des méthodes
1 - Principe et intérêt de l’héritage
2 - Types de l’héritage
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de polymorphisme
• Le polymorphisme désigne un concept de la théorie des types, selon lequel un nom d'objet peut désigner
des instances de classes différentes issues d'une même arborescence
Exemple: Une instance de Etudiant peut « être vue comme » une instance de Personne (Pas l’inverse!!)
• p=e → autorisé car le type de p est plus générique que le type de e
• e=p→ non autorisé car le type de e est plus spécifique que celui de p
58
Variables Références Objets
Type Personne p
Type Etudiant e
0x304021
0x304055
Objet de Type Personne
Objet de Type Etudiant
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de polymorphisme
59
Variables Références Objets
Type A a1
Type B b1
0x304021
0x304055
Type A a2 0x304555
A
MethodeA()
B
MethodeB()
• le type de la variable est utilisé par le compilateur pour déterminer si on accède à un membre (attribut ou
méthode) valide
b1.MethodeA() → OK car b1 est de type déclaré B qui hérite de A
b1.MethodeB() → OK car b1 est de type déclaré B
a2.MethodeA() → OK car a2 est de type déclaré A
a2.MethodeB()→ ERREUR car a2 est de type A (même si le type l’objet référencé est B)
CONNAITRE
L’ENCAPSULATION
CHAPITRE 2 1 - Principe de l’encapsulation
2 - Niveaux de visibilité
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de l’encapsulation
• L’encapsulation est le fait de réunir à l'intérieur d'une même entité (objet) le code (méthodes) + données
(attributs).
• L’encapsulation consiste à protéger l’information contenue dans un objet.
• Il est donc possible de masquer les informations d'un objet aux autres objets
61
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe de l’encapsulation
• L’encapsulation consiste donc à masquer les détails d’implémentation d’un objet, en définissant une
interface.
• L’interface est la vue externe d’un objet, elle définit les services accessibles (Attributs et méthodes) aux
utilisateurs de l’objet.
interface = liste des signatures des méthodes accessibles
Interface =Carte de visite de l’objet
62
Attributs
Méthodes
Objet
Interface
Public
Privé
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Intérêt de l’encapsulation
• Les objets restreignent leur accès qu’aux méthodes de leur classe
→ Ils protègent leurs attributs
• Cela permet d’avoir un contrôle sur tous les accès.
Exemple:
Les attributs de la classe compte sont privés
Ainsi le solde d’un compte n’est pas accessible
par un client qu’à travers les méthodes retirer() et déposer() qui sont publiques
→ Un client ne peut modifier son solde qu’ on effectuant une
Opération de dépôt ou de retrait
63
Numéro de compte;
solde
retirer() déposer()
Client
Attributs
privés
Compte
Méthodes publique
CONNAITRE
L’ENCAPSULATION
CHAPITRE 2 1 - Principe de l’encapsulation
2 - Niveaux de visibilité
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Niveaux de visibilité des membres
Il existe 2 niveaux de visibilité des membres d’une classe:
• Publique: les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes d'une classe
définie avec le niveau de visibilité publique→ Il s'agit du plus bas niveau de protection des données
• Privé: l'accès aux données est limité aux méthodes de la classe elle-même → Il s'agit du niveau de
protection des données le plus élevé
65
Attributs
Attributs
Attributs
Attributs
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Niveaux de visibilité des membres
Les niveaux intermédiaires d’encapsulation
• Classes Amies
une classe pourrait décider de se rendre entièrement accessible à quelques autres classes, privilégiées, qu’elle
déclarera comme faisant partie de ses « amies »
• Une classe dans une autre
Une classe rend accessible ses attributs et ses méthodes déclarés privés à une autre classe lorsque cette
seconde classe est créée à l’intérieur de la première. La classe englobée aura un accès privilégié à tout ce qui
constitue la classe englobante.
66
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Niveaux de visibilité des membres
Les niveaux intermédiaires d’encapsulation
• Mécanisme d’héritage
Consiste à ne permettre qu’aux seuls enfants de la classe (ses héritiers) un accès aux attributs et méthodes
protected du parent
• Utilisation des paquetages
Consiste à libérer l’accès, uniquement aux classes faisant partie d’un même paquetage (un même répertoire)
67
CARACTÉRISER
L’ABSTRACTION
CHAPITRE 3 1 - Classes et méthodes abstraites
2 - Interface
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Classes et méthodes abstraites
• Une classe abstraite est une classe qui contient une ou plusieurs méthodes abstraites. Elle peut malgré
tout contenir d'autres méthodes habituelles (appelées parfois méthodes concrètes).
• Une méthode abstraite est une méthode qui ne contient pas de corps. Elle possède simplement une
signature de définition (pas de bloc d'instructions)
• Une classe possédant une ou plusieurs méthodes abstraites devient obligatoirement une classe abstraite.
• Une classe abstraite peut ne pas comporter de méthodes abstraites
69
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Classes et méthodes abstraites
Exemple:
• Sachant que toutes les formes possèdent les propriétés
périmètre et surface, il est judicieux de placer les
méthodes définissant ces propriétés (périmètre()et
surface()) dans la classe qui est à la racine de
l'arborescence (Forme)
• La classe Forme ne peut cependant pas implémenter ces
deux méthodes car on ne peut pas calculer le périmètre
et la surface sans connaître le détail de la forme
70
Forme
X, Y
Déplacer()
Rectangle
Surface()
Périmètre()
Cercle
Surface()
Périmètre()
Surface()
Périmètre()
Méthodes abstraites
Classe abstraite
Classes concrètes
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Classes et méthodes abstraites
• On pourrait naturellement implémenter ces méthodes dans
chacune des sous-classes de Forme mais il n'y a aucune
garantie que toutes les sous-classes les possèdent
• Solution: Déclaration dans la classe Forme deux méthodes
abstraites périmètre()et surface()ce qui rend la classe
Forme elle-même abstraite et impose aux créateurs de
sous-classes de les implémenter
71
Forme
X, Y
Déplacer()
Rectangle
Surface()
Périmètre()
Cercle
Surface()
Périmètre()
Surface()
Périmètre()
Méthodes abstraites
Classe abstraite
Classes concrètes
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Classes et méthodes abstraites
Les règles suivantes s'appliquent aux classes abstraites:
• Une classe abstraite ne peut pas être instanciée
• Une sous-classe d'une classe abstraite ne peut être instanciée que si elle redéfinit chaque méthode
abstraite de sa classe parente et qu'elle fournit une implémentation(un corps) pour chacune des méthodes
abstraites.
• Si une sous-classe d'une classe abstraite n'implémente pas toutes les méthodes abstraites dont elle hérite,
cette sous-classe est elle-même abstraite (et ne peut donc pas être instanciée)
72
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Utilité des classes abstraites
• les classes abstraites permettent de définir des fonctionnalités(des comportements) que les sous-classes
devront impérativement implémenter
• Les utilisateurs des sous-classes d'une classe abstraite sont donc assurés de trouver toutes les méthodes
définies dans la classe abstraite dans chacune des sous-classes concrètes
• Les classes abstraites constituent donc une sorte de contrat (spécification contraignante) qui garantit que
certaines méthodes seront disponibles dans les sous-classes et qui oblige les programmeurs à les
implémenter dans toutes les sous-classes concrètes.
73
CARACTÉRISER
L’ABSTRACTION
CHAPITRE 3 1 - Classes et méthodes abstraites
2 - Interface
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe d’interface
• Comme une classe et une classe abstraite, une interface permet de définir un nouveau type (référence).
• Une interface est une forme particulière de classe où toutes les méthodes sont abstraites
• Lorsqu'une classe implémente une interface, elle indique ainsi qu'elle s'engage à fournir une
implémentation (c'est-à-dire un corps) pour chacune des méthodes abstraites de cette interface.
• Si une classe implémente plus d'une interface, elle doit implémenter toutes les méthodes abstraites de
chacune des interfaces.
75
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe d’interface
Exemple1: Si l'on souhaite caractériser la fonctionnalité de comparaison qui est commune à tous les objets qui
ont une relation d'ordre (plus petit, égal, plus grand), on peut définir l'interface Comparable.
• Les classe Personne et Outils qui implémentent l'interface Comparable doivent présenter une
implémentation de la méthode CompareTo() sinon elles seront abstraites
76
Interface
Comparable
CompareTo()
Personne
CompareTo()
Outils
CompareTo()
implémente
implémente
Comparaison
des personnes
selon l'âge
Comparaison des
Outils selon la
longueur
Appréhender le paradigme de
la POO
Connaître les principaux
piliers de la POO
La POO en Python
Principe d’interface
Exemple2:
77
Forme
X, Y
Déplacer()
Rectangle
Surface()
Périmètre()
Imprimer()
Cercle
Surface()
Périmètre()
Imprimer()
Surface()
Périmètre()
Méthodes abstraites
Classe abstraite
Classes concrètes
interface
imprimable
Imprimer()
implémente
Supposons que nous voulions que les classes dérivées de
la classe Forme disposent toutes d'une méthode imprimer() permettant
d'imprimer les formes géométriques.
Solution 1: Ajouter une méthode abstraite Imprimer()à la classe Forme et
ainsi chacune des sous-classes concrètes devrait implémenter cette méthode
→si d'autres classes (qui n'héritent pas de Forme souhaitaient également
disposer des fonctions d'impression, elles devraient à nouveau déclarer des
méthodes abstraites d'impression dans leur arborescence.
Solution 2: la classe forme implémente l’interface imprimable
ayant la méthode Imprimer()

Contenu connexe

Similaire à m103-resume-cours-theorique-6156f136c407b.pdf

Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erpJoubi Aaziz
 
Visite guidée au pays de la donnée - Du modèle conceptuel au modèle physique
Visite guidée au pays de la donnée - Du modèle conceptuel au modèle physiqueVisite guidée au pays de la donnée - Du modèle conceptuel au modèle physique
Visite guidée au pays de la donnée - Du modèle conceptuel au modèle physiqueGautier Poupeau
 
OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...
OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...
OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...Michel Héon PhD
 
Algo vol.2 sujets
Algo vol.2   sujetsAlgo vol.2   sujets
Algo vol.2 sujetschrisdilane
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
 
Pytia formation-python-les-bases-et-perfectionnement
Pytia formation-python-les-bases-et-perfectionnementPytia formation-python-les-bases-et-perfectionnement
Pytia formation-python-les-bases-et-perfectionnementCERTyou Formation
 
Lecture_1_Concepts-fondamentaux_P01.pptx
Lecture_1_Concepts-fondamentaux_P01.pptxLecture_1_Concepts-fondamentaux_P01.pptx
Lecture_1_Concepts-fondamentaux_P01.pptxBtnPrinciiIsral
 
Bonnes pratiques pour un projet de GED
Bonnes pratiques pour un projet de GEDBonnes pratiques pour un projet de GED
Bonnes pratiques pour un projet de GEDNuxeo
 
Alphorm.com Formation Data Science avec Python - Prise en main des IDE
Alphorm.com Formation Data Science avec Python - Prise en main des IDEAlphorm.com Formation Data Science avec Python - Prise en main des IDE
Alphorm.com Formation Data Science avec Python - Prise en main des IDEAlphorm
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Normandie Web Xperts
 
Cypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCERTyou Formation
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptxHassanAbdel
 
M2 INAE introduction python.pdf
M2 INAE introduction python.pdfM2 INAE introduction python.pdf
M2 INAE introduction python.pdfHajer Amdouni
 
Support cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISupport cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISmartnSkilled
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 

Similaire à m103-resume-cours-theorique-6156f136c407b.pdf (20)

Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erp
 
Visite guidée au pays de la donnée - Du modèle conceptuel au modèle physique
Visite guidée au pays de la donnée - Du modèle conceptuel au modèle physiqueVisite guidée au pays de la donnée - Du modèle conceptuel au modèle physique
Visite guidée au pays de la donnée - Du modèle conceptuel au modèle physique
 
OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...
OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...
OntoCASE à la 5e conférence GeCSO: Gestion des Connaissances dans la Société ...
 
Algo vol.2 sujets
Algo vol.2   sujetsAlgo vol.2   sujets
Algo vol.2 sujets
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 
CPOO.pdf
CPOO.pdfCPOO.pdf
CPOO.pdf
 
Pytia formation-python-les-bases-et-perfectionnement
Pytia formation-python-les-bases-et-perfectionnementPytia formation-python-les-bases-et-perfectionnement
Pytia formation-python-les-bases-et-perfectionnement
 
Lecture_1_Concepts-fondamentaux_P01.pptx
Lecture_1_Concepts-fondamentaux_P01.pptxLecture_1_Concepts-fondamentaux_P01.pptx
Lecture_1_Concepts-fondamentaux_P01.pptx
 
Bonnes pratiques pour un projet de GED
Bonnes pratiques pour un projet de GEDBonnes pratiques pour un projet de GED
Bonnes pratiques pour un projet de GED
 
Formation technique odoo
Formation technique odooFormation technique odoo
Formation technique odoo
 
Alphorm.com Formation Data Science avec Python - Prise en main des IDE
Alphorm.com Formation Data Science avec Python - Prise en main des IDEAlphorm.com Formation Data Science avec Python - Prise en main des IDE
Alphorm.com Formation Data Science avec Python - Prise en main des IDE
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
Cypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-pythonCypyth formation-programmation-objet-en-langage-python
Cypyth formation-programmation-objet-en-langage-python
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptx
 
M2 INAE introduction python.pdf
M2 INAE introduction python.pdfM2 INAE introduction python.pdf
M2 INAE introduction python.pdf
 
Support cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISupport cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie II
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 

Plus de FootballLovers9

resume-theorique-m108-3005-6298a1255e18a.pdf
resume-theorique-m108-3005-6298a1255e18a.pdfresume-theorique-m108-3005-6298a1255e18a.pdf
resume-theorique-m108-3005-6298a1255e18a.pdfFootballLovers9
 
resume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdfresume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdfFootballLovers9
 
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdfresume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdfFootballLovers9
 
resume-theorique-m106-partie2-1401-620cd8ad322d1.pdf
resume-theorique-m106-partie2-1401-620cd8ad322d1.pdfresume-theorique-m106-partie2-1401-620cd8ad322d1.pdf
resume-theorique-m106-partie2-1401-620cd8ad322d1.pdfFootballLovers9
 
resume-theorique-m106-partie1-v2-6228baed03113 (1).pptx
resume-theorique-m106-partie1-v2-6228baed03113 (1).pptxresume-theorique-m106-partie1-v2-6228baed03113 (1).pptx
resume-theorique-m106-partie1-v2-6228baed03113 (1).pptxFootballLovers9
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfFootballLovers9
 
resume-theorique-m104-0401-61d5b38b21f67 (1).pptx
resume-theorique-m104-0401-61d5b38b21f67 (1).pptxresume-theorique-m104-0401-61d5b38b21f67 (1).pptx
resume-theorique-m104-0401-61d5b38b21f67 (1).pptxFootballLovers9
 
resume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfresume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfFootballLovers9
 
guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...
guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...
guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...FootballLovers9
 
TSGE-CF-M203-Manuel-stagiaire.pdf
TSGE-CF-M203-Manuel-stagiaire.pdfTSGE-CF-M203-Manuel-stagiaire.pdf
TSGE-CF-M203-Manuel-stagiaire.pdfFootballLovers9
 
TSGE-GRH-M201-Manuel-stagiaire.pdf
TSGE-GRH-M201-Manuel-stagiaire.pdfTSGE-GRH-M201-Manuel-stagiaire.pdf
TSGE-GRH-M201-Manuel-stagiaire.pdfFootballLovers9
 
TSGE-OM-guide-stagiaire-Gestion-du-temps.pdf
TSGE-OM-guide-stagiaire-Gestion-du-temps.pdfTSGE-OM-guide-stagiaire-Gestion-du-temps.pdf
TSGE-OM-guide-stagiaire-Gestion-du-temps.pdfFootballLovers9
 
TSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdf
TSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdfTSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdf
TSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdfFootballLovers9
 
TSGE-Commerce-marketing-M205-Manuel-stagiaire.pdf
TSGE-Commerce-marketing-M205-Manuel-stagiaire.pdfTSGE-Commerce-marketing-M205-Manuel-stagiaire.pdf
TSGE-Commerce-marketing-M205-Manuel-stagiaire.pdfFootballLovers9
 
GE-Commerce-marketing-M201-Manuel-stagiaire.pdf
GE-Commerce-marketing-M201-Manuel-stagiaire.pdfGE-Commerce-marketing-M201-Manuel-stagiaire.pdf
GE-Commerce-marketing-M201-Manuel-stagiaire.pdfFootballLovers9
 
TS-TC-Statistiques-manuel-stagiaire.pdf
TS-TC-Statistiques-manuel-stagiaire.pdfTS-TC-Statistiques-manuel-stagiaire.pdf
TS-TC-Statistiques-manuel-stagiaire.pdfFootballLovers9
 
TS-TC-Statistique-presentation.pdf
TS-TC-Statistique-presentation.pdfTS-TC-Statistique-presentation.pdf
TS-TC-Statistique-presentation.pdfFootballLovers9
 
Presentation-Ecrits-professionnels.pdf
Presentation-Ecrits-professionnels.pdfPresentation-Ecrits-professionnels.pdf
Presentation-Ecrits-professionnels.pdfFootballLovers9
 

Plus de FootballLovers9 (20)

resume-theorique-m108-3005-6298a1255e18a.pdf
resume-theorique-m108-3005-6298a1255e18a.pdfresume-theorique-m108-3005-6298a1255e18a.pdf
resume-theorique-m108-3005-6298a1255e18a.pdf
 
resume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdfresume-theorique-m107-2203-6246f60d6b994.pdf
resume-theorique-m107-2203-6246f60d6b994.pdf
 
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdfresume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
 
resume-theorique-m106-partie2-1401-620cd8ad322d1.pdf
resume-theorique-m106-partie2-1401-620cd8ad322d1.pdfresume-theorique-m106-partie2-1401-620cd8ad322d1.pdf
resume-theorique-m106-partie2-1401-620cd8ad322d1.pdf
 
resume-theorique-m106-partie1-v2-6228baed03113 (1).pptx
resume-theorique-m106-partie1-v2-6228baed03113 (1).pptxresume-theorique-m106-partie1-v2-6228baed03113 (1).pptx
resume-theorique-m106-partie1-v2-6228baed03113 (1).pptx
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdf
 
resume-theorique-m104-0401-61d5b38b21f67 (1).pptx
resume-theorique-m104-0401-61d5b38b21f67 (1).pptxresume-theorique-m104-0401-61d5b38b21f67 (1).pptx
resume-theorique-m104-0401-61d5b38b21f67 (1).pptx
 
resume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfresume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdf
 
guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...
guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...
guide-de-soutien-metier-et-formation-developpement-digital-v21092021-6156f0cb...
 
TSGE-CF-M203-Manuel-stagiaire.pdf
TSGE-CF-M203-Manuel-stagiaire.pdfTSGE-CF-M203-Manuel-stagiaire.pdf
TSGE-CF-M203-Manuel-stagiaire.pdf
 
GE-CF-Cours-CAE.pdf
GE-CF-Cours-CAE.pdfGE-CF-Cours-CAE.pdf
GE-CF-Cours-CAE.pdf
 
TSGE-GRH-M201-Manuel-stagiaire.pdf
TSGE-GRH-M201-Manuel-stagiaire.pdfTSGE-GRH-M201-Manuel-stagiaire.pdf
TSGE-GRH-M201-Manuel-stagiaire.pdf
 
TSGE-OM-guide-stagiaire-Gestion-du-temps.pdf
TSGE-OM-guide-stagiaire-Gestion-du-temps.pdfTSGE-OM-guide-stagiaire-Gestion-du-temps.pdf
TSGE-OM-guide-stagiaire-Gestion-du-temps.pdf
 
TSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdf
TSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdfTSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdf
TSGE-Commerce-marketing-e-commerce-Guide-stagiaire.pdf
 
TSGE-Commerce-marketing-M205-Manuel-stagiaire.pdf
TSGE-Commerce-marketing-M205-Manuel-stagiaire.pdfTSGE-Commerce-marketing-M205-Manuel-stagiaire.pdf
TSGE-Commerce-marketing-M205-Manuel-stagiaire.pdf
 
GE-CM-M202.pdf
GE-CM-M202.pdfGE-CM-M202.pdf
GE-CM-M202.pdf
 
GE-Commerce-marketing-M201-Manuel-stagiaire.pdf
GE-Commerce-marketing-M201-Manuel-stagiaire.pdfGE-Commerce-marketing-M201-Manuel-stagiaire.pdf
GE-Commerce-marketing-M201-Manuel-stagiaire.pdf
 
TS-TC-Statistiques-manuel-stagiaire.pdf
TS-TC-Statistiques-manuel-stagiaire.pdfTS-TC-Statistiques-manuel-stagiaire.pdf
TS-TC-Statistiques-manuel-stagiaire.pdf
 
TS-TC-Statistique-presentation.pdf
TS-TC-Statistique-presentation.pdfTS-TC-Statistique-presentation.pdf
TS-TC-Statistique-presentation.pdf
 
Presentation-Ecrits-professionnels.pdf
Presentation-Ecrits-professionnels.pdfPresentation-Ecrits-professionnels.pdf
Presentation-Ecrits-professionnels.pdf
 

Dernier

Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEgharebikram98
 

Dernier (20)

Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
 

m103-resume-cours-theorique-6156f136c407b.pdf

  • 2. OBJECTIF 2 A l’issue de ce module de compétence, vous serez capable de programmer en Orientée Objet (POO) 90 heures
  • 3. 3 SOMMAIRE Appréhender le paradigme de la POO Chapitre 1 : Introduire la POO Chapitre 2 : Définir un objet Connaître les principaux piliers de la POO Chapitre 1 : Définir l’héritage et le polymorphisme Chapitre 2 : Connaître l’encapsulation Chapitre 3 : Caractériser l’abstraction Appliquer la POO dans le langage de programmation Python Chapitre 1 : Présenter l’environnement de programmation Python 3 Chapitre 2 : Implémenter une classe Chapitre 3 : Administrer les exceptions Chapitre 4 : Gérer le interfaces graphiques PARTIE 1 PARTIE 2 PARTIE 3
  • 5. INTRODUIRE LA POO CHAPITRE 1 4 - Historique de la POO 3 - Avantages de la POO 1 - Programmation procédurale 2 - De la programmation procédurale à la POO
  • 6. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation procédurale Dans la programmation procédurale, le programme est divisé en petites parties appelées procédures ou fonctions. • Ensuite, pour résoudre chaque partie, une ou plusieurs procédures/fonctions sont utilisées • Dans la programmation procédurale, les notions de données et de traitement de ces données sont séparées 6 Programmes = Procédures/Fonctions + Données
  • 7. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Exemple d’algorithme 7 Algorithme CalculSomme100PremierNombre Variable I,S: entier Procédure Somme Début /*début de la procédure*/ S0 Pour i1 à 100 Faire SS+1 FinPour Ecrire(" La somme des 100 premiers nombres est ",S); Fin /*Fin de la procédure*/ Début /*début algorithme*/ Somme Fin /*fin algorithme*/
  • 8. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation procédurale Dans la programmation procédurale: • Les données constituent la partie passive du programme. • Les procédures et les fonctions constituent la partie active. Programmer dans ce cas revenait à: • définir un certain nombre de variables (entier, chaine de caractères, structures, tableaux, etc.) • écrire des procédures pour les manipuler. 8
  • 9. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation procédurale Inconvénients: • Difficulté de réutilisation du code • Difficulté de la maintenance de grandes applications 9
  • 10. INTRODUIRE LA POO CHAPITRE 1 4 - Historique de la POO 3 - Avantages de la POO 1 - Programmation procédurale 2 - De la programmation procédurale à la POO
  • 11. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation orientée objet • Séparation (données, procédures) est-elle utile ? • Pourquoi privilégier les procédures sur les données ? • Pourquoi ne pas considérer que les programmes sont avant tout des ensembles objets informatiques caractérisé par les opérations qu’ils connaissent? Les langages orientés objets sont nés pour répondre à ces questions. Ils sont fondés sur la connaissance d’une seule catégorie d’entités informatiques : LES OBJETS 11
  • 12. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation orientée objet • Un objet incorpore des aspects statiques et dynamiques au sein d’une même notion • Un programme est constitué d’un ensemble d’objets chacun disposant d’une partie procédures (traitement) et d’une partie données. 12
  • 13. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation orientée objet 13 Programmation procédurale Programmation Orientée Objet Que doit faire le système ? Sur quoi doit-il le faire? De quoi doit être composé mon programme?
  • 14. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Programmation orientée objet 14 Programmation procédurale Programmation Orientée Objet Créditer un compte? Débiter un compte? Comment se présente (structure) d’un compte bancaire ? Programme de Gestion des comptes bancaires
  • 15. INTRODUIRE LA POO CHAPITRE 1 4 - Historique de la POO 3 - Avantages de la POO 1 - Programmation procédurale 2 - De la programmation procédurale à la POO
  • 16. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Avantages de la POO Motivation : concevoir, maintenir et exploiter facilement de gros logiciels Avantages: • Modularité : les objets forment des modules compacts regroupant des données et un ensemble d'opérations ce qui réduit la complexité de l’application (classe = module) • Abstraction : • Les entités objets de la POO sont proches de celles du monde réel (objet est un compte, stagiaire, formateur, etc.). • La POO se base sur un processus qui consiste à masquer des détails non pertinents à l’utilisateur. Exemple: Pour envoyez un SMS, vous tapez simplement le message, sélectionnez le contact et cliquez sur Envoyer →Ce qui se passe réellement en arrière-plan est masqué car il n’est pas pertinent à vous. 16
  • 17. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Motivation et avantage de la POO Réutilisabilité: • La POO favoriser la réutilisation de composants logiciels et même d'architectures complexes • La définition d’une relation d’héritage entre les entités logicielle évite la duplication de code → Facilité de la maintenance logicielle et amélioration de la productivité 17
  • 18. INTRODUIRE LA POO CHAPITRE 1 4 - Historique de la POO 3 - Avantages de la POO 1 - Programmation procédurale 2 - De la programmation procédurale à la POO
  • 19. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Historique évolution de la POO • Les concepts de la POO naissent au cours des années 1970 dans des laboratoires de recherche en informatique. • Les premiers langages de programmation véritablement orientés objet ont été Simula, puis Smalltalk. • Simula (1966) regroupe données et procédures. • Simula I (1972) formalise les concepts d'objet et de classe. Un programme est constitué d’ une collection d'objets actifs et autonomes. • Smalltalk (1972) : généralisation de la notion d'objet. 19
  • 20. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Historique évolution de la POO • A partir des année 80, les principes de la POO sont appliqués dans de nombreux langages • Eiffel créé par le Français Bertrand Meyer • C++ est une extension objet du langage C créé par le Danois Bjarne Stroustrup • Objective C une autre extension objet du C utilisé, entre autres, par l'iOS d'Apple • Les années 1990 ont vu l'avènement des PPOs dans de nombreux secteurs du développement logiciel, et la création du langage Java par la société Sun Microsystems • De nos jours, de très nombreux langages permettent d'utiliser les principes de la POO dans des domaines variés tels que PHP (à partir de la version 5), VB.NET, PowerShell, Python, etc. 20
  • 21. DÉFINIR UN OBJET CHAPITRE 2 4 – Objets en interaction 3 – Constructeur/Destructeur 1 - Notion d’objet 2 - Notion de classe
  • 22. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet • Chaque objet doit avoir un nom (référence) « qui lui est propre » pour l’identifier • La référence permet d’accéder à l’objet, mais n’est pas l’objet lui-même. Elle contient l’adresse de l’emplacement mémoire dans lequel est stocké l’objet. 22 OBJET= Référent + Etat + Comportement 0x304009 Référence P1 Objet @0x304009 Mémoire
  • 23. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet • Plusieurs référents peuvent référer un même objet→ Adressage indirect 23 P1=P2 Recopie l’adresse de P2 dans le réfèrent de P1 0x304009 Objet 1 P1 0x504010 Objet 2 P2 Mémoire 0x504010 Objet 1 P1 0x504010 Objet 2 P2 Mémoire Mémoire des objets Mémoire des objets
  • 24. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet • Un objet est capable de sauvegarder un état c'est-à-dire un ensemble d’information dans des variables internes (attributs) • Attributs sont l’ensemble des informations permettant de représenter l’état de l’objet. 24
  • 25. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet Exemple d’objets où chaque attribut est d’un type dit «primitif » ou « prédéfini », comme entier, réel, caractère… 25 Couleur=rouge Marque=Peugeot Couleur=Noir Marque=Citroën Type: Citronnier Hauteur: 2 Première_Voiture Deuxième_Voiture Premier-Arbre-Dans-Larue Mémoire des objets Attribut Valeur 0x304009 0x304021 0x304100
  • 26. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet Un objet stocké en mémoire peut être placé à l’intérieur de l’espace mémoire réservé à un autre. Il s’agit d’un Objet Composite 26 Couleur=rouge Marque=Peugeot Mémoire des objets Première_Voiture Moteur1 Moteur=Moteur1 Puissance=100 Marque=XX Première_Voiture: Objet composite Moteur1: Objet composant 0x304009 0x304021 26
  • 27. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet • Les objets changent d’état • Le cycle de vie d’un objet se limite à une succession de changements d’états • Soit l’objet Feu_de_signalisation_EnQuestion avec sa couleur et ses trois valeurs 27 Mémoire des objets Feu_de_signalisation_EnQuestion Couleur=1 Couleur=2 Couleur=3 0x304021
  • 28. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion d’objet Mais qui est la cause des changements d’états ? – LES METHODES 28 OBJET= Référent + Etat + Comportement Couleur=1 Mémoire des objets Mémoire des méthodes Change() Couleur=Couleur+1 If(Couleur==4) Couleur=1 Feu_de_signalisation _EnQuestion 0x304021
  • 29. DÉFINIR UN OBJET CHAPITRE 2 4 – Objets en interaction 3 – Constructeur/Destructeur 1 - Notion d’objet 2 - Notion de classe
  • 30. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion de classe Une classe unit les méthodes aux attributs Une classe est un modèle de définition pour les objets ayant: • même structure (même ensemble d’attributs) • même comportement (mêmes méthodes) 30 CLASSE= Attributs + Méthodes
  • 31. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion de classe • Les objets sont des représentations dynamiques (instanciation), « vivantes » du modèle défini pour eux au travers de la classe. • Une classe permet d’instancier (créer) plusieurs objets • Chaque objet est une instance (un exemplaire) d’une (seule) classe 31
  • 32. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Notion de classe 32 Avion_airbus a380 Etat= En VOl Contenu réservoir= 40l Atterrir() Avion_airbus a320 Etat= Au Sol ContenuRéservoir= 25l Atterrir() objet1 objet2 Avion Classe Avion EtatContenuRéservoir Atterrir() Attributs Méthodes Feu_de_Signalisation1 Couleur =1 objet1 objet2 Feu_de_Signalisation Classe Feu_de_Signalisation Couleur Change() Attributs Méthodes Change() Feu_de_Signalisation2 Couleur =2 Change() instanciation instanciation instanciation instanciation
  • 33. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Objet: instance d’une classe • Chaque objet correspond à une instance de la classe à laquelle il fait référence • La création d’un objet est constituée de deux phases: • Une phase de ressort de la classe: allouer de la mémoire et un contexte d’exécution minimaliste. • Une phase du ressort de l’objet: initialiser ses attributs d’instances • Dans les langages, ces deux phases ne sont pas différenciées. → Appel à une méthode spéciale : le constructeur 33
  • 34. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Objet: instance d’une classe 34 Couleur=1 Mémoire des objets Feu_de_signalisation_EnQuestion 0x304021 Couleur=2 Mémoire des objets Feu_de_signalisation_EnQuestion 0x304021 Feu_de_Signalisation Classe Feu_de_Signalisation Couleur Change() Feu_de_signalisation_EnQuestion.change() Application de la méthode change() définie dans la classe Feu_de_Signalisation Appel d’une méthode d’une classe instanceDeClasse.méthode() Exemple: Soit la classe Feu_De_Signalisation
  • 35. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Membre de classe vs membre d’instance • Membre de classe • Un Attribut de classe est associé à sa classe et non à une instance de cette classe. • Méthode de classe est associée à une classe et non à un objet. 35 • Membre d'instance Un attribut d'instance est associée à une instance de la classe. Chaque objet possède donc sa propre copie de la propriété .Une méthode d'instance est associée à une instance d'une classe. Chaque objet possède donc sa propre copie de la méthode. Un membre est un attribut ou une méthode. Il existe 2 types de membres (de classe/d’instance) Remarque: • Une méthode de classe ne peut exploiter que des membres de classe • Une méthode d'instance peut utiliser n'importe quel type de membre (classe ou instance)
  • 36. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Membre de classe vs membre d’instance Exemple: la classe Avion suivante 36 Avion Classe Avion EtatContenuRéservoir Atterrir() CompterNombreAvions() NombreAvions Méthode de classe Méthode d’instance Attribut de classe Attribut d’instance
  • 37. DÉFINIR UN OBJET CHAPITRE 2 4 - Objets en interaction 3 - Constructeur/Destructeur 1 - Notion d’objet 2 - Notion de classe
  • 38. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Constructeur • Le constructeur d'une classe est une méthode appelée une seule fois par objet et ce au moment de sa création. • Cette méthode sera appelée lors de la création de l’objet. • Le constructeur peut disposer d’un nombre quelconque de paramètres, éventuellement aucun. • Le rôle du constructeur est d'initialiser les attributs de l'objet 38
  • 39. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Destructeur • Le destructeur est une méthode qui permet la destruction d'un objet non référencé. • Un destructeurs permet: • Gérer les erreurs • . Libérer les ressources utilisées de manière certaine • Assurer la fermeture de certaines parties du code. • Les langages qui utilisent des ramasse-miettes (exemple Python) n'offrent pas le mécanisme des destructeurs puisque le programmeur ne gère pas la mémoire lui-même • Un ramasse-miettes est programme de gestion automatique de la mémoire. Il est responsable du recyclage de la mémoire préalablement allouée puis inutilisée. 39
  • 40. DÉFINIR UN OBJET CHAPITRE 2 4 - Objets en interaction 3 - Constructeur/Destructeur 1 - Notion d’objet 2 - Notion de classe
  • 41. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Objets en interaction • La communication entre les objets est la base de la POO • Les objets communiquent par envois de messages ceci: • Quand un objet demande à un autre d’exécuter une méthode qui est propre à cet autre. 41
  • 42. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python • Supposons que le feu « Feu_de_signalisation_EnQuestion1 » fasse ralentir ou accélérer la voiture « Voiture-Devant » • Objet Feu_de_signalisation_EnQuestion est l’expéditeur de message • Objet Voiture-Devant est le destinataire de message Objets en interaction 42 Couleur=3 Mémoire des objets Mémoire des méthodes Change() Couleur=Couleur+1 If(Couleur==4) Couleur=1 If (couleur==1)………. Voiture-Devant.ChangeVitesse(50) Vitesse=0 ChangeVitesse(int nV) Vitesse=nV Feu_de_signalisation_EnQuestion1 0x304021 0x30502 Voiture-Devant
  • 43. CONNAÎTRE LES PRINCIPAUX PILIERS DE LA POO PARTIE 2
  • 44. DÉFINIR L’HÉRITAGE ET LE POLYMORPHISME CHAPITRE 1 4 - Principe du polymorphisme 3 - Redéfinition des méthodes 1 - Principe et intérêt de l’héritage 2 - Types de l’héritage
  • 45. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de l’héritage • Le concept de l'héritage spécifie une relation de spécialisation/généralisation entre les classes (Document : livre, revu, …/Personne : étudiant, employé…) • Lorsqu'une classe D hérite d'une classe B : • D possède toutes les caractéristiques de B et aussi, d'autres caractéristiques qui sont spécifiques à D • D est une spécialisation de B (un cas particulier) • B est une généralisation de D (cas général) • D est appelée classe dérivée (fille) • B est appelée classe de base (mère ou super-classe) • Tout objet instancié de D est considéré, aussi, comme un objet de type B • Un objet instancié de B n'est pas forcément un objet de type D 45
  • 46. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de l’héritage Exemple: Considérons la définition des 3 classes Personne, Etudiant et Employé suivantes: Problème: • Duplication du code • Une modification faite sur un attribut ou méthode doit être refaite sur les autres classes 46 Personne Nom CIN anneeNaiss age() Etudiant Nom CIN anneeNaiss note1, note2 age() moyenne() Employe Nom CIN anneeNaiss prixHeure nbreHeure age() Salaire()
  • 47. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de l’héritage Solution • Placer dans la classe mère toutes les informations communes à toutes les classes. • Les classes filles ne comportent que les attributs ou méthodes plus spécifiques. • Les classes filles héritent automatiquement les attributs (et les méthodes) qui n'ont pas besoin d'être ré-écrits. 47 Personne Nom CIN anneeNaiss age() Etudiant note1, note2 moyenne() Employe prixHeure nbreHeure Salaire() Super-classe Sous-classes Héritent de
  • 48. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Intérêt de l’héritage • L'héritage minimise l'écriture du code en regroupant les caractéristiques communes entre classes au sein d’une seule (la classe de base) sans duplication. • Localisation facile, en un point unique, des sections de code. • La rectification du code se fait dans des endroits uniques grâce à la non redondance de description • L’extension ou l’ajout de nouvelles classes est favorisée surtout en cas d’une hiérarchie de classes bien conçue • Définition des informations et des comportements aux niveaux opportuns. • Rapprochement de la modélisation des systèmes d’informations aux cas réels 48
  • 49. DÉFINIR L’HÉRITAGE ET LE POLYMORPHISME CHAPITRE 1 4 - Principe du polymorphisme 3 - Redéfinition des méthodes 1 - Principe et intérêt de l’héritage 2 - Types de l’héritage
  • 50. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Héritage multiple • Une classe peut hériter de plusieurs classes Exemple: Un Etudiant est à la fois une Personne et un EtreHumain • La classe Etudiant hérite les attributs et les méthodes des deux classes→ Il deviennent ses propres attributs et méthodes 50
  • 51. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Héritage en cascade • Une classe sous-classe peut être elle-même une super-classe Exemple: Etudiant hérite de Personne EtudiantDeuxièmeCycle hérite de Etudiant → EtudiantDeuxièmeCycle hérite de Personne 51 Etudiant note1 note2 Moyenne() Personne Nom CIN dateNaiss age() Etudiant DeuxiemeCycle option
  • 52. DÉFINIR L’HÉRITAGE ET LE POLYMORPHISME CHAPITRE 1 4 - Principe du polymorphisme 3 - Redéfinition des méthodes 1 - Principe et intérêt de l’héritage 2 - Types de l’héritage
  • 53. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Redéfinition des méthodes héritées • Une méthode héritée peut être redéfinie si sa version initiale n'est pas satisfaisante pour la classe dérivée • La redéfinition consiste à conserver l'entête de la méthode et à proposer un code différent • Si une méthode héritée est redéfinie, c'est uniquement la nouvelle version qui fait parti de la description de la classe dérivée • Si la méthode définie au niveau de la classe dérivée est de type différent, ou de paramètres différents, alors il s’agit d’une nouvelle méthode qui s’ajoute à celle héritée de la classe de base 53
  • 54. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Redéfinition des méthodes héritées Exemple: • Soit la classe Etudiant qui hérite de la classe Personne • La méthode afficher() de la classe Personne affiche les attribut Nom, CIN d’une personne • La classe Etudiant hérite la méthode afficher() de la classe Personne et la redéfinit , elle propose un nouveau code (la classe Etudiant ajoute l’affichage des attributs notes1 et note2 de l’étudiant) 54 Personne Nom CIN age() afficher() Etudiant note1 note2 Moyenne() afficher()
  • 55. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Mécanisme de la liaison retardée Soit C la classe réelle d'un objet o à qui on envoie un message « o.m() » • o.m() peut appeler la méthode m() de C ou de n’importe quelle sous-classe de C • Si le code de la classe C contient la définition (ou la redéfinition) d’une méthode m(), c’est cette méthode qui sera exécutée • Sinon, la recherche de la méthode m() se poursuit dans la classe mère de C, puis dans la classe mère de cette classe mère, et ainsi de suite, jusqu’à trouver la définition d’une méthode m() qui est alors exécutée 55
  • 56. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Mécanisme de la liaison retardée Exemple: Soit etc un objet de type EtudiantTroisièmeCycle 56 Etudiant afficher() Personne afficher() EtudiantTroisième Cycle afficher() Etudiant Personne afficher() EtudiantTroisième Cycle etc.afficher() 1er cas 2ème cas etc.afficher() Afficher() de la classe Personne est exécutée Afficher() de la classe EtudiantTroisièmeCycle est exécutée
  • 57. DÉFINIR L’HÉRITAGE ET LE POLYMORPHISME CHAPITRE 1 4 - Principe du polymorphisme 3 - Redéfinition des méthodes 1 - Principe et intérêt de l’héritage 2 - Types de l’héritage
  • 58. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de polymorphisme • Le polymorphisme désigne un concept de la théorie des types, selon lequel un nom d'objet peut désigner des instances de classes différentes issues d'une même arborescence Exemple: Une instance de Etudiant peut « être vue comme » une instance de Personne (Pas l’inverse!!) • p=e → autorisé car le type de p est plus générique que le type de e • e=p→ non autorisé car le type de e est plus spécifique que celui de p 58 Variables Références Objets Type Personne p Type Etudiant e 0x304021 0x304055 Objet de Type Personne Objet de Type Etudiant
  • 59. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de polymorphisme 59 Variables Références Objets Type A a1 Type B b1 0x304021 0x304055 Type A a2 0x304555 A MethodeA() B MethodeB() • le type de la variable est utilisé par le compilateur pour déterminer si on accède à un membre (attribut ou méthode) valide b1.MethodeA() → OK car b1 est de type déclaré B qui hérite de A b1.MethodeB() → OK car b1 est de type déclaré B a2.MethodeA() → OK car a2 est de type déclaré A a2.MethodeB()→ ERREUR car a2 est de type A (même si le type l’objet référencé est B)
  • 60. CONNAITRE L’ENCAPSULATION CHAPITRE 2 1 - Principe de l’encapsulation 2 - Niveaux de visibilité
  • 61. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de l’encapsulation • L’encapsulation est le fait de réunir à l'intérieur d'une même entité (objet) le code (méthodes) + données (attributs). • L’encapsulation consiste à protéger l’information contenue dans un objet. • Il est donc possible de masquer les informations d'un objet aux autres objets 61
  • 62. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe de l’encapsulation • L’encapsulation consiste donc à masquer les détails d’implémentation d’un objet, en définissant une interface. • L’interface est la vue externe d’un objet, elle définit les services accessibles (Attributs et méthodes) aux utilisateurs de l’objet. interface = liste des signatures des méthodes accessibles Interface =Carte de visite de l’objet 62 Attributs Méthodes Objet Interface Public Privé
  • 63. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Intérêt de l’encapsulation • Les objets restreignent leur accès qu’aux méthodes de leur classe → Ils protègent leurs attributs • Cela permet d’avoir un contrôle sur tous les accès. Exemple: Les attributs de la classe compte sont privés Ainsi le solde d’un compte n’est pas accessible par un client qu’à travers les méthodes retirer() et déposer() qui sont publiques → Un client ne peut modifier son solde qu’ on effectuant une Opération de dépôt ou de retrait 63 Numéro de compte; solde retirer() déposer() Client Attributs privés Compte Méthodes publique
  • 64. CONNAITRE L’ENCAPSULATION CHAPITRE 2 1 - Principe de l’encapsulation 2 - Niveaux de visibilité
  • 65. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Niveaux de visibilité des membres Il existe 2 niveaux de visibilité des membres d’une classe: • Publique: les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes d'une classe définie avec le niveau de visibilité publique→ Il s'agit du plus bas niveau de protection des données • Privé: l'accès aux données est limité aux méthodes de la classe elle-même → Il s'agit du niveau de protection des données le plus élevé 65 Attributs Attributs Attributs Attributs
  • 66. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Niveaux de visibilité des membres Les niveaux intermédiaires d’encapsulation • Classes Amies une classe pourrait décider de se rendre entièrement accessible à quelques autres classes, privilégiées, qu’elle déclarera comme faisant partie de ses « amies » • Une classe dans une autre Une classe rend accessible ses attributs et ses méthodes déclarés privés à une autre classe lorsque cette seconde classe est créée à l’intérieur de la première. La classe englobée aura un accès privilégié à tout ce qui constitue la classe englobante. 66
  • 67. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Niveaux de visibilité des membres Les niveaux intermédiaires d’encapsulation • Mécanisme d’héritage Consiste à ne permettre qu’aux seuls enfants de la classe (ses héritiers) un accès aux attributs et méthodes protected du parent • Utilisation des paquetages Consiste à libérer l’accès, uniquement aux classes faisant partie d’un même paquetage (un même répertoire) 67
  • 68. CARACTÉRISER L’ABSTRACTION CHAPITRE 3 1 - Classes et méthodes abstraites 2 - Interface
  • 69. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Classes et méthodes abstraites • Une classe abstraite est une classe qui contient une ou plusieurs méthodes abstraites. Elle peut malgré tout contenir d'autres méthodes habituelles (appelées parfois méthodes concrètes). • Une méthode abstraite est une méthode qui ne contient pas de corps. Elle possède simplement une signature de définition (pas de bloc d'instructions) • Une classe possédant une ou plusieurs méthodes abstraites devient obligatoirement une classe abstraite. • Une classe abstraite peut ne pas comporter de méthodes abstraites 69
  • 70. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Classes et méthodes abstraites Exemple: • Sachant que toutes les formes possèdent les propriétés périmètre et surface, il est judicieux de placer les méthodes définissant ces propriétés (périmètre()et surface()) dans la classe qui est à la racine de l'arborescence (Forme) • La classe Forme ne peut cependant pas implémenter ces deux méthodes car on ne peut pas calculer le périmètre et la surface sans connaître le détail de la forme 70 Forme X, Y Déplacer() Rectangle Surface() Périmètre() Cercle Surface() Périmètre() Surface() Périmètre() Méthodes abstraites Classe abstraite Classes concrètes
  • 71. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Classes et méthodes abstraites • On pourrait naturellement implémenter ces méthodes dans chacune des sous-classes de Forme mais il n'y a aucune garantie que toutes les sous-classes les possèdent • Solution: Déclaration dans la classe Forme deux méthodes abstraites périmètre()et surface()ce qui rend la classe Forme elle-même abstraite et impose aux créateurs de sous-classes de les implémenter 71 Forme X, Y Déplacer() Rectangle Surface() Périmètre() Cercle Surface() Périmètre() Surface() Périmètre() Méthodes abstraites Classe abstraite Classes concrètes
  • 72. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Classes et méthodes abstraites Les règles suivantes s'appliquent aux classes abstraites: • Une classe abstraite ne peut pas être instanciée • Une sous-classe d'une classe abstraite ne peut être instanciée que si elle redéfinit chaque méthode abstraite de sa classe parente et qu'elle fournit une implémentation(un corps) pour chacune des méthodes abstraites. • Si une sous-classe d'une classe abstraite n'implémente pas toutes les méthodes abstraites dont elle hérite, cette sous-classe est elle-même abstraite (et ne peut donc pas être instanciée) 72
  • 73. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Utilité des classes abstraites • les classes abstraites permettent de définir des fonctionnalités(des comportements) que les sous-classes devront impérativement implémenter • Les utilisateurs des sous-classes d'une classe abstraite sont donc assurés de trouver toutes les méthodes définies dans la classe abstraite dans chacune des sous-classes concrètes • Les classes abstraites constituent donc une sorte de contrat (spécification contraignante) qui garantit que certaines méthodes seront disponibles dans les sous-classes et qui oblige les programmeurs à les implémenter dans toutes les sous-classes concrètes. 73
  • 74. CARACTÉRISER L’ABSTRACTION CHAPITRE 3 1 - Classes et méthodes abstraites 2 - Interface
  • 75. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe d’interface • Comme une classe et une classe abstraite, une interface permet de définir un nouveau type (référence). • Une interface est une forme particulière de classe où toutes les méthodes sont abstraites • Lorsqu'une classe implémente une interface, elle indique ainsi qu'elle s'engage à fournir une implémentation (c'est-à-dire un corps) pour chacune des méthodes abstraites de cette interface. • Si une classe implémente plus d'une interface, elle doit implémenter toutes les méthodes abstraites de chacune des interfaces. 75
  • 76. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe d’interface Exemple1: Si l'on souhaite caractériser la fonctionnalité de comparaison qui est commune à tous les objets qui ont une relation d'ordre (plus petit, égal, plus grand), on peut définir l'interface Comparable. • Les classe Personne et Outils qui implémentent l'interface Comparable doivent présenter une implémentation de la méthode CompareTo() sinon elles seront abstraites 76 Interface Comparable CompareTo() Personne CompareTo() Outils CompareTo() implémente implémente Comparaison des personnes selon l'âge Comparaison des Outils selon la longueur
  • 77. Appréhender le paradigme de la POO Connaître les principaux piliers de la POO La POO en Python Principe d’interface Exemple2: 77 Forme X, Y Déplacer() Rectangle Surface() Périmètre() Imprimer() Cercle Surface() Périmètre() Imprimer() Surface() Périmètre() Méthodes abstraites Classe abstraite Classes concrètes interface imprimable Imprimer() implémente Supposons que nous voulions que les classes dérivées de la classe Forme disposent toutes d'une méthode imprimer() permettant d'imprimer les formes géométriques. Solution 1: Ajouter une méthode abstraite Imprimer()à la classe Forme et ainsi chacune des sous-classes concrètes devrait implémenter cette méthode →si d'autres classes (qui n'héritent pas de Forme souhaitaient également disposer des fonctions d'impression, elles devraient à nouveau déclarer des méthodes abstraites d'impression dans leur arborescence. Solution 2: la classe forme implémente l’interface imprimable ayant la méthode Imprimer()