Vous êtes sur la page 1sur 17

PYTHON & POO

La Programmation Orientée Objet avec Python


SOMMAIRE
1. La Programmation Orientée Objet (POO)
1. Définition
2. Les principes de la POO
3. POO vs Programmation procédurale
2. Les classes en python
1. La classe et l’objet
2. Syntaxe de définition des classes
3. L’attribut et La méthode
4. L’héritage
5. Les méthodes prédéfinies et les descripteurs
6. Les variables privées
3. Questions - Réponses

2
1. Définition

● Une méthode de programmation informatique,


orgnanisée autour des objets (données).
● Un paradigme informatique consistant à définir et à faire
interagir des objets grâce à des technologies tels que les
langages de programmation tels que C++, Visual Basic.Net,
Python, Java, Ruby, etc.
● Le but de la POO est de se concentrer sur (s’orienter selon)
l’objet, les données, plutôt que sur la logique nécessaire pour
faire une manipulation.

3 1. La Programmation Orientée Objet (POO)


2. Les principes de la POO
● Encapsulation
Il s’agit de regrouper des données, selon leurs attributs et des
routines visant à les manipuler.
● Abstraction

Elle consiste à gérer la complexité d’implémentation d’une


structure de donnée en masquant les détails inutiles à
l’utilisateur.
● Héritage

Il consiste à utiliser les attributs et routines d’un modèle de


donnée plus général pour en faire un plus spécifique.
● Polymorphisme

Le mot polymorphisme issu du grec, signifie qui peut prendre


plusieurs formes. Ce principe veut que les attributs et routines
d’un type de donnée répondent aux besoins selon différents
contextes.
4 1. La Programmation Orientée Objet (POO)
3. POO vs Programmation procédurale

La programmation procédurale est la méthode de


programmation née avec l’informatique. Elle consiste à
résoudre un problème par une analyse descente qui
décompose le problème en sous-problèmes jusqu’à ce que
des actions élémentaires soient identifiées. Ainsi, le
programme est décomposé en procédures successives afin de
résoudre le problème.

5 1. La Programmation Orientée Objet (POO)


3. POO vs Programmation procédurale

Quelle méthode choisir ?


● La POO ne permet pas fondamentalement de faire plus de
choses que la programmation procédurale.
●Inconvénient majeur de la programmation procédurale
La plus petite modification de la structure des données du
programme entraîne une modification de toutes les procédures
qui interagissent avec ces données.
● Avantage majeur de la POO
Elle permet de mieux organiser son code, facilite le travail en
équipe et la maintenance à long terme.

6 1. La Programmation Orientée Objet (POO)


1. La classe et l’objet

● La classe est un moule, un ● L’objet est le résultat de


type, une forme, une l’action de mouler. Mouler c’est
structure selon lesquels est obtenir un objet, le reproduire
construit, fait quelque chose. en remplissant un moule d’une
matière liquide (en renseignant
une classe d’information
essentielles).

7 2. Les classes en python


1. La classe et l’objet

● La classe est définie par des ● L’objet est issu de la classe.


attributs (caractéristique En ce sens qu’un attribue avec
commune à un ensemble une valeur donnée représente
d’entité) et des méthodes un état de l’objet. Et que
(action manipulant les l’usage d’une méthode sur
attributs). l’objet peut modifier ses états.
Ex : Un moule à tarte cannelé Ex : Une tarte cannelé à la fraise, au lait
et au chocolat

8 2. Les classes en python


2. Syntaxe de définition des classes

class ClassName:
<declaration-1>
.
.
.
<declaration-N>

9 2. Les classes en python


3. L’attribut et La méthode
class ClassName:
"""ClassName's description"""
attributeName = 'value'

def methodName(self):
.
.
.
return 'hello world'
.
.
.

10 2. Les classes en python


4. L’héritage

class DerivedClassName (Base1, Base2, Base3):


def methodName(self):
super(Base1, methodName)(self)
super(Base3, methodName1)(self)
.
.
.
return 'hello world'
.
.
.
Réf. https://docs.python.org/3/tutorial/classes.html#multiple-inheritance

11 2. Les classes en python


5. Les méthodes prédéfinies et les
descripteurs
Les méthodes prédéfinies

class DerivedClassName (Base):


def __init__(self):
super()(self)
self.counter = 0
print('hello world')
def __del__(self):
print('bye world')
def __add__(self, other):
self.counter += other.counter
def __eq__(self,other):
return self.counter == other.counter
Réf. https://docs.python.org/3/reference/datamodel.html

12 2. Les classes en python


5. Les méthodes prédéfinies et les
descripteurs

Les descripteurs

class DerivedClassName (Base):



#usage: get a pseudo-public attr
@property
def value(self):
"value method's description"
self.calc()
return self.__value

Réf. https://docs.python.org/3/howto/descriptor.html

13 2. Les classes en python


5. Les méthodes prédéfinies et les
descripteurs

Les descripteurs

class DerivedClassName (Base):



#usage: make method accessible directly from class
@staticmethod
def f(x):
return x * 100

Réf. https://docs.python.org/3/howto/descriptor.html

14 2. Les classes en python


5. Les méthodes prédéfinies et les
descripteurs

Les descripteurs

class DerivedClassName (Base):



#usage: make alternative contructor
@classmethod
def copy(cls):
return cls(self.__value1, …, self.__valueN)

Réf. https://docs.python.org/3/howto/descriptor.html

15 2. Les classes en python


6. Les variables privées

● Les variables "privés", qui ne peuvent être accédés que


depuis l'intérieur d'un objet, n'existent pas en Python.
Toutefois, par convention : un nom préfixé par un tiret bas (comme
_spam) doit être considéré comme une partie non publique. Il doit
être vu comme un détail d'implémentation pouvant faire l'objet de
modifications futures sans préavis.
● Il existe un support limité pour un tel mécanisme, appelé
name mangling. Tout identifiant de la forme __spam (avec au moins
deux tirets bas en tête et au plus un à la fin) est remplacé
textuellement par _classname__spam, où classname est le nom de la
classe sans le ou les premiers tirets-bas. Ce changement de nom est
utile pour permettre à des sous-classes de surcharger des méthodes
sans casser les appels de méthodes à l'intérieur d'une classe.

16 2. Les classes en python


3. Questions – Réponses

Conclusion

17 3. Questions - Réponses

Vous aimerez peut-être aussi