SlideShare une entreprise Scribd logo

Introduction à l’orienté objet en Python

Objectif général : Développer en orienté objet avec Python Objectifs opérationnels : - Organiser le code grâce aux classes - Sécuriser une classe avec l’encapsulation - Réutiliser et factoriser du code avec l’héritage - Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme

1  sur  31
Introduction
à l’orienté objet
en Python
Abdoulaye DIENG 1
Septembre 2020
Objectif général
Développer en orienté objet avec Python
Objectifs opérationnels
• Organiser le code grâce aux classes
• Sécuriser une classe avec l’encapsulation
• Réutiliser et factoriser du code avec l’héritage
• Invoquer des méthodes de même nom, quel que soit le type
d'objet sur lequel elles opèrent, sans avoir à effectuer au
préalable une vérification de type grâce au polymorphisme
Sommaire
1) Qu’est que Python ?
2) Environnement de développement
3) Classe
4) Encapsulation
5) Héritage
6) Polymorphisme
Qu’est ce que Python
Langage de programmation interprété, multi-paradigme
(fonctionnel et orienté objet) et multiplateforme (Windows,
Linux, macOS, Android et iOS)
Offre des outils de haut niveau et une syntaxe simple
Créé par Guido Van Russom en 1989
Dernière version 3.8 en sept 2020
Usage :
 Scripts pour automatiser des tâches
 Analyse de données
 Calcul numérique
 Développement web
 Instagram, YouTube, Dropbox, …
5
Environnement de dev
installation de Python
Selon le SE, télécharger le fichier d'installation de Python à
l’URL https://www.python.org/downloads/
Installer Python sous Windows
exécuter le fichier d'installation et suivre les étapes
Installer Python sous Mac OS X
Ouvrir le fichier .dmg, faire un double-clic sur le paquet
d'installation Python.mpkg et suivre les étapes
Installer Python sous Linux
1) Décompresser l'archive : tar -xzf archive
2) Se mettre dans le dossier créé
3) Exécuter le script configure : ./configure
4) Compiler
make puis make install en tant que super-utilisateur.
6

Recommandé

Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniShellmates
 

Contenu connexe

Tendances

Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Abel LIFAEFI MBULA
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationMouna Torjmen
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec JavaPapa Cheikh Cisse
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 

Tendances (20)

Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
Formation python 3
Formation python 3Formation python 3
Formation python 3
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Python
PythonPython
Python
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec Java
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Cours java
Cours javaCours java
Cours java
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 

Similaire à Introduction à l’orienté objet en Python

Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objetsAbdoulaye Dieng
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye Dieng
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxTarikElMahtouchi1
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...Hamza SAID
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflectionEric Toguem
 

Similaire à Introduction à l’orienté objet en Python (20)

Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objets
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
Les Classe en Java
Les Classe en JavaLes Classe en Java
Les Classe en Java
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 
Chapitre3 2013 POO
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POO
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
 
Cours de JAVA de base
Cours de JAVA  de baseCours de JAVA  de base
Cours de JAVA de base
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Java
JavaJava
Java
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Cpp3 : heritage
Cpp3 : heritageCpp3 : heritage
Cpp3 : heritage
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Design patterns
Design patternsDesign patterns
Design patterns
 
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflection
 

Plus de Abdoulaye Dieng

Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturelAbdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPressAbdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 

Introduction à l’orienté objet en Python

  • 1. Introduction à l’orienté objet en Python Abdoulaye DIENG 1 Septembre 2020
  • 2. Objectif général Développer en orienté objet avec Python
  • 3. Objectifs opérationnels • Organiser le code grâce aux classes • Sécuriser une classe avec l’encapsulation • Réutiliser et factoriser du code avec l’héritage • Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
  • 4. Sommaire 1) Qu’est que Python ? 2) Environnement de développement 3) Classe 4) Encapsulation 5) Héritage 6) Polymorphisme
  • 5. Qu’est ce que Python Langage de programmation interprété, multi-paradigme (fonctionnel et orienté objet) et multiplateforme (Windows, Linux, macOS, Android et iOS) Offre des outils de haut niveau et une syntaxe simple Créé par Guido Van Russom en 1989 Dernière version 3.8 en sept 2020 Usage :  Scripts pour automatiser des tâches  Analyse de données  Calcul numérique  Développement web  Instagram, YouTube, Dropbox, … 5
  • 6. Environnement de dev installation de Python Selon le SE, télécharger le fichier d'installation de Python à l’URL https://www.python.org/downloads/ Installer Python sous Windows exécuter le fichier d'installation et suivre les étapes Installer Python sous Mac OS X Ouvrir le fichier .dmg, faire un double-clic sur le paquet d'installation Python.mpkg et suivre les étapes Installer Python sous Linux 1) Décompresser l'archive : tar -xzf archive 2) Se mettre dans le dossier créé 3) Exécuter le script configure : ./configure 4) Compiler make puis make install en tant que super-utilisateur. 6
  • 7. Environnement de dev édition et exécution d’un script Python Pour éditer un script python • Créer le dossier « exemples-python » : lieu de stockage de tous les exemples de ce cours • À l’aide d’un éditeur de texte, créer un nouveau fichier (nomScript.py par exemple) dans « exemples-python » Pour exécuter un script python • Lancer l’invite de commande (Windows) ou le terminal (Mac ou Linux) • Se placer dans « exemples-python » • Lancer la commande python nomScript.py (sous Windows) python3 nomScript.py (sous Mac OS/Linux) 7
  • 8. Environnement de dev interpréteur de Python L’interpréteur convertit les instructions Python en un langage compréhensible par l’ordinateur Il peut être utilisé pour exécuter une instruction Pour ouvrir l’interpréteur • Lancer l’invite de commande ou le terminal • taper python ou python3 Résultat : triple chevrons ( >>> ) 8
  • 9. Classe présentation Une classe est un type ou modèle de définition pour des entités (ou objets) ayant les mêmes caractéristiques (ou attributs) et les mêmes comportements (ou méthodes) Un objet est alors une variable de la classe : on dit qu'il est une instance de cette classe, c'est-à-dire un élément concret, un exemplaire de cette classe. Une classe est composée de membres : • des attributs qui donnent l’état des instances • des méthodes qui indiquent les opérations qui pourront être effectuées sur les instances • d’un constructeur pour créer les instances Exemple : classe Rectangle avec • les attributs : longueur et largeur • les méthodes : aire() et perimetre()
  • 10. Classe déclaration Syntaxe de déclaration class NomClasse : # Initialisation d’éventuels attributs de classe # Définition d’un constructeur # Initialisation des attributs d’instance # Définition des méthodes exemple_classe_rectangle.py (script à créer) class Rectangle : 10
  • 11. Classe attribut de classe Attribut qui existe même si aucun objet de la classe n’est créé. Exemple : le nombre de rectangles créés Sa valeur est la même pour tout objet Initialisé comme une variable classique Exemple à ajouter à la classe Rectangle nbRectanglesCrees=0; Accessible en le préfixant du nom de la classe suivi de . Exemple : Rectangle.nbRectanglesCrees 11
  • 12. Classe définition du constructeur Un constructeur est une méthode particulière qui est appelée lors de la création d’un objet. Sa tâche principale est d’initialiser les attributs d’instance Il prend en paramètre l’instance (en 1er) puis les arguments d’initialisation La valeur d’un attribut d’instance est propre à chaque objet Syntaxe de définition def __init__(self, arg1 [, arg2, …]) self.attribut1 = arg1 … Exemple à ajouter à la classe Rectangle 12
  • 13. Classe méthode Méthode = fonction définie dans une classe Trois types de méthode • Méthode de classe : reçoit cls (classe courante) comme 1er argument et ne peut accéder qu’aux membres de classe • Méthode d’instance : reçoit self (objet courant) comme 1er argument et peut accéder aux membres d’instance et de classe • Méthode statique : ne peut accéder à aucun membre 13
  • 14. Classe exemples de définitions de méthode Méthode statique 14 Méthode d’instance Méthode de classe
  • 16. Classe instanciation Syntaxe nomObjet = NomClasse([liste_arguments]) exemple_main.py (script à créer) from exemple_classe_rectangle.py import Rectangle rectangle1 = Rectangle(4,3) 16
  • 17. Classe accès aux membres Syntaxe d’accès à un attribut d’instance nomObjet.nomAttribut Syntaxe d’accès à une méthode d’instance nomObjet.nomMethode([liste_arg]) Syntaxes d’accès à un attribut de classe nomClasse.nomAttribut nomObjet.nomAttribut Syntaxe d’accès à une méthode de classe ou statique nomClasse.nomMethode([liste_arg]) nomObjet.nomMethode([liste_arg]) Exemple à ajouter dans exemple_main.py juste avant l’instanciation print(Rectangle.nbr_rectangles_crees ) Exemple à ajouter dans exemple_main.py print(rectangle1.get_nbr_rectangles_crees() ) print(rectangle1.aire()) rectangle1.longueur = -14 // transition 17
  • 18. Encapsulation présentation L'encapsulation est un mécanisme consistant à empêcher l'accès aux données par un autre moyen que les services (méthodes) proposés : o chaque objet = boîte noire pour ses utilisateurs o les utilisateurs n'ont accès qu’à l'interface publique Ce mécanisme permet de : o garantir l'intégrité des données contenues dans l'objet ; o simplifier l'utilisation des objets en masquant l'ensemble des attributs et des méthodes qui sont utiles simplement au fonctionnement interne des objets. 18
  • 19. Encapsulation membre privé Membre privé = attribut ou méthode directement accessible qu’à l’intérieur de la classe Syntaxe préfixer le nom de 2 underscores Exemples • Dans la classe Rectangle, remplacez toute occurrence de self.longeur par self.__longeur • Exécutez exemple_main.py pour constater l’erreur causée par l’instruction rectangle1.longueur = -14
  • 20. Encapsulation getter et setter getter : méthode permettant de consulter un attribut privé Exemple à ajouter à la classe Rectangle setter : méthode permettant de modifier (sous contrôle) un attribut privé Exemple à ajouter à la classe Rectangle
  • 21. Encapsulation getter et setter - exemple Dans exemple_main.py, remplacez la dernière instruction par :
  • 22. Encapsulation propriété Une propriété permet syntaxiquement d’accéder directement (à l’extérieur de la classe) à un attribut privé tout en utilisant (à l’intérieur de la classe) le getter ou le setter de l’attribut Syntaxe de définition dans le corps de la classe nom_propriete = property(getter, setter) Syntaxe d’accès nom_objet.nom_propriete Exemple à ajouter à la classe Rectangle longueur = property(get_longueur, set_longueur) Dans exemple_main.py, ajoutez rectangle1.longueur = 5 print(rectangle1.longueur)
  • 23. Héritage définition et intérêt Héritage : création d’une classe à partir d’une autre en partageant ses attributs et méthodes Intérêt • Eviter de réécrire un même code plusieurs fois • Spécialisation ou enrichissement : une nouvelle classe réutilise les membres (publiques ou protégés) d’une classe en y ajoutant des membres particuliers • Généralisation ou factorisation : réunir des classes possédant des caractéristiques et comportements communs dans une nouvelle classe plus générale 23
  • 24. Héritage syntaxe Syntaxe class nomClasseFille(nomClasseMere): … Exemple • Un pavé droit est un rectangle dans l’espace • exemple_classe_pavedroit.py (script à créer) class PaveDroit(Rectangle): … 24
  • 25. Héritage membre protégé Pb : une classe dérivée n’hérite pas un membre privé Membre protégé : portée limitée à la classe et à ses descendantes Syntaxe préfixer le nom d’un seul underscore Exemple : dans la classe Rectangle, remplacez toute occurrence de self.__longeur par self._longeur Comme pour un membre privé, un membre protégé peut être associé à un getter, un setter et une propriété 25
  • 26. Héritage constructeur de la sous-classe Construire un objet D d’une classe dérivée, nécessite d’abord de construire un objet B de sa classe de base puis de le compléter par ce qui est spécifique à D. Le constructeur de la classe fille doit faire un appel explicite au constructeur de la classe mère afin d’initialiser les attributs hérités de celle-ci Syntaxes de l’appel explicite du constructeur de la classe mère • précéder __init__ du nom de la classe mère • précéder __init__ de super() 26
  • 27. Héritage constructeur de la sous-classe • Dans exemple_main.py, ajoutez 27 • exemple_classe_pavedroit.py
  • 28. Héritage redéfinition d’une méthode de la classe mère Une sous-classe peut redéfinir toutes méthode héritée et fournir une implémentation spécifique pour celle-ci La redéfinition d’une méthode cache le code de la méthode héritée Exemple 1) Définissez une méthode describe() de Rectangle qui affiche une phrase du type : « Rectangle de longueur <longueur> cm et de largeur <largeur> cm » 2) Dans exemple_main.py, invoquez describe() sur un objet de base et sur un objet dérivé 3) Dans la classe PaveDroit, redéfinissez describe() et refaites la question 2 28
  • 29. Héritage réutilisation d’une méthode de la classe mère Syntaxes de la réutilisation d’une méthode de la classe mère • La précéder du nom de la classe mère • La précéder de super() Exemple Réécrire et invoquer la méthode volume() de PaveDroit en réutilisant la méthode aire() de Rectangle 29
  • 30. Polymorphisme La redéfinition de méthode par une sous-classe entraine l’appel de méthodes de même nom sur des objets de types différents Le polymorphisme permet d’appeler des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type. Exemple les méthodes describe() de la classe Rectangle et de la classe PaveDroit 30

Notes de l'éditeur

  1. PHP M. DIENG
  2. PHP M. DIENG
  3. PHP M. DIENG
  4. PHP M. DIENG
  5. PHP M. DIENG
  6. PHP M. DIENG
  7. PHP M. DIENG
  8. PHP M. DIENG
  9. https://www.datacamp.com/community/tutorials/property-getters-setters
  10. https://www.datacamp.com/community/tutorials/property-getters-setters
  11. https://www.datacamp.com/community/tutorials/property-getters-setters https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/232793-definissez-des-proprietes
  12. PHP M. DIENG
  13. PHP M. DIENG
  14. PHP M. DIENG
  15. PHP M. DIENG
  16. PHP M. DIENG
  17. PHP M. DIENG
  18. PHP M. DIENG
  19. PHP M. DIENG