You are on page 1of 26

Programmation O.O.

Python
Pr. F. Guerouate
Introduction
• En Python, la programmation orientée objet (POO) est un paradigme
de programmation qui utilise des objets et des classes dans la
programmation. Il vise à implémenter des entités du monde réel
comme l'héritage, les polymorphismes, l'encapsulation, etc. dans la
programmation. Le concept principal des POO est de lier les données
et les fonctions qui y travaillent ensemble comme une seule unité afin
qu'aucune autre partie du code ne puisse accéder à ces données.

Principaux concepts de la programmation orientée objet (POO)


Introduction
Principaux concepts de la programmation orientée objet (POO):
 Classe
 Objets
 Polymorphisme
 Encapsulation
 Héritage
 Abstraction de données
Classe
• Une classe est une collection d'objets. Une classe contient le modèle ou le
prototype à partir desquels les objets sont créés.
• Une classe regroupe des fonctions et des attributs qui définissent un objet. On
appelle par ailleurs les fonctions d'une classe des «  méthodes  » 
• Les classes sont créées par le mot-clé class.
• Les attributs sont les variables qui appartiennent à une classe.
• Les attributs sont toujours publics et accessibles à l'aide de l'opérateur point (.).
Ex. : Maclasse.Monattribut
Classe
Il est conseillé en Python de nommer sa classe en CamelCase, c’est à dire
qu’un nom est composé d’une suite de mots dont la première lettre est
une capitale. On préférera par exemple une classe MonNomDeClasse que
mon_nom_de_classe.
Exemple1: Création d'une classe vide en Python
Class Personne:
pass
Objets
• L'objet est une entité qui a un état et un comportement qui lui sont
associés. Il peut s'agir de n'importe quel objet du monde réel comme
une souris, un clavier, une chaise, une table, un stylo, etc. Les entiers,
les chaînes, les nombres à virgule flottante, même les tableaux et les
dictionnaires sont tous des objets. Plus précisément, tout entier
unique ou toute chaîne unique est un objet. Le nombre 12 est un
objet, la chaîne "Hello, world" est un objet, une liste est un objet qui
peut contenir d'autres objets, etc. Vous avez toujours utilisé des
objets et vous ne vous en rendez peut-être même pas compte.
• Un objet est composé de :
• Etat : Il est représenté par les attributs d'un objet. Il reflète également les
propriétés d'un objet.
• Comportement : Il est représenté par les méthodes d'un objet. Il reflète
également la réponse d'un objet à d'autres objets.
• Identité : donne un nom unique à un objet et permet à un objet d'interagir
avec d'autres objets.
Objets
• Exemple:
• Pour la classe Personne: P1=Personne()

Cela créera un objet nommé P1 de la classe Personne définie ci-dessus. Avant


de plonger profondément dans les objets et les classes, comprenons quelques
mots-clés de base que nous utiliserons lorsque nous travaillerons avec des
objets et des classes.
Classe en Python
• Créons une classe User:
self
• Les méthodes de classe doivent avoir un premier paramètre
supplémentaire dans la définition de la méthode. Nous ne donnons
pas de valeur pour ce paramètre lorsque nous appelons la méthode,
Python le fournit.
• Si nous avons une méthode qui ne prend aucun argument, nous
devons toujours avoir un argument. Ceci est similaire à ce pointeur en
C++ et à cette référence en Java. Lorsque nous appelons une méthode
de cet objet en tant que myobject.method(arg1, arg2), elle est
automatiquement convertie par Python en
MyClass.method(myobject, arg1, arg2).
La méthode __init__
• La méthode __init__ est similaire aux constructeurs en C++ et Java. Il
est exécuté dès qu'un objet d'une classe est instancié. La méthode est
utile pour effectuer toute initialisation que vous souhaitez effectuer
avec votre objet.
• On peut créer autant d'objets que l'on désire avec une classe .
Créons maintenant notre utilisateur:
User1=user()
On peut afficher le id de User1:
>>User1.id
3
• On peut à tout moment créer un attribut pour notre objet:
>>User1.nom=« Guerouate »
Et le lire après:
>> User1.nom
Guerouate
• Exemple 1 : Création d'une classe et d'un objet avec des attributs de
classe et d'instance
• Exemple 2 : Création d'une classe et d'objets avec des méthodes
Les propriétés
• Exemple: la classe Voiture, moteur
La composition: a un(e) (has-a)
• Exemple: la classe Voiture, moteur
L'héritage de classe
• L'héritage est la capacité d'une classe à dériver ou hériter des propriétés
d'une autre classe. La classe qui dérive les propriétés est appelée classe
dérivée ou classe enfant et la classe dont les propriétés sont dérivées est
appelée classe de base ou classe parent. Les avantages de l'héritage
sont :
• Il représente bien les relations du monde réel.
• Il fournit la réutilisabilité d'un code. Nous n'avons pas à écrire le même code
encore et encore. De plus, cela nous permet d'ajouter plus de fonctionnalités à
une classe sans la modifier.
• Il est de nature transitive, ce qui signifie que si la classe B hérite d'une autre
classe A, alors toutes les sous-classes de B hériteront automatiquement de la
classe A.
L'héritage de classe: relation est un(e) (is-
a)
• Exemple: la classe de base Voiture
L'héritage de classe: relation
• Exemple: la classe Personne, Etudiant
• Si nous créons un objet à partir de la classe Etudiant, cet objet est à
la fois de type Personne et de type Etudiant.
Polymorphisme / surcharge de méthode
• Le polymorphisme est un mécanisme important dans la
programmation objet. Il permet de modifier le comportement d’une
classe fille par rapport à sa classe mère. Le polymorphisme permet
d’utiliser l’héritage comme un mécanisme d’extension en adaptant le
comportement des objets.
L'héritage de classe
• Exercice:
• créer deux classes, la classe de base Personne (classe parent) et Employé
(classe enfant). La classe Employée hérite de la classe Person. Vous pouvez
utiliser les méthodes de la classe de personne à travers la classe d'employé
comme la fonction d'affichage . Une classe enfant peut également modifier le
comportement de la classe parent à travers une méthode details().
Constructeur et héritage
• Le constructeur est aussi une méthode hérité:
Exemple:
Les objets de type Salarie disposent des mêmes comportements,
propriétés et attributs déclarés dans la classe Personne.
La classe fille peut fournir ses propres comportements et ses propres
attributs :
Constructeur et héritage

Ajoutons un constructeur au niveau de la classe Salarie:


Constructeur et héritage
Cela ne fonctionne plus car le constructeur déclaré dans la classe Salarie remplace et cache celui hérité de
la classe Personne et l’initialisation de l’attribut _age n’est plus faite.
Quand une classe hérite d’une autre classe, elle a la responsabilité de s’assurer que le constructeur de la
classe de base est appelé pour garantir l’initialisation. Pour ce cas on utilise La fonction super() qui
retourne le type de la super classe. L’implémentation correcte de la classe Salarie  doit donc être :
Constructeur et héritage

Passer des paramètres à l’initialisation de la classe de base si cette dernière attend des
paramètres de constructeur
Constructeur et héritage

You might also like