Vous êtes sur la page 1sur 10

Programmation Python DSI

La POO en Python
I. Notions de classe et d’objet :

Une manière simple d’aborder la notion de classe est de considérer celle-ci comme une « usine »
permettant de fabriquer des objets possédant des caractéristiques (attributs) et des actions
exécutables (méthodes) communes.

Exemple :

1
Programmation Python DSI

Un objet créé à partir d’une classe est une instance de cette classe. Dans l’exemple ci-dessous,
les objets porsche_911 et corvette_z06 sont deux objets de type Voiture c’est-à-dire deux
instances différentes de cette classe.

II. Les classes et les objets en Python :


Pour créer une classe en python, on utilise la syntaxe suivante :

Les éléments de la classe peuvent être :

 Les attributs
 Les méthodes (y compris le constructeur)

1. Constructeur et attribut :
C’est une méthode spéciale nommée en python __init__, qui peut prendre des paramètres et qui
permet d’instancier la classe par la suite. Aussi, le constructeur peut permettre d’initialiser les
futurs objets crées. Si une classe n’a aucun constructeur, elle en a un par défaut qui est le
constructeur sans paramètres.

Exemple :

En python, la définition des attributs doit être faite dans le constructeur. Si on veut rendre un
attribut facultatif, on ajoute None comme suit :

2
Programmation Python DSI

Ainsi, on peut créer, par la suite un objet sans prénom.

2. Les méthodes :

On peut définir une ou plusieurs méthodes dans notre classe python. Pour cela, on suit la syntaxe
suivante :

Pour créer des objets d’une classe, on sort de la classe (commencer du niveau 1
d’indentation). Pour créer un objet d’une classe donnée, il faut utiliser la syntaxe suivante :

s1=Stagiaire(…..) permet , en fait, de créer un objet s1 de la classe Stagiaire. Attention, ici, on a


un appel au constructeur, même-ci on n’utilise pas son nom direct __init__ . En effet, __init__ est
une méthode qui sera appelée via le nom de la classe.

3
Programmation Python DSI

3. Encapsulation en Python :

L’encapsulation est un mécanisme qui consiste à rassembler les données et les méthodes au sein
d’une classe en cachant l’implémentation de l’objet. Pour implémenter le principe
d’encapsulation, les langages de programmation orientés objets introduisent et utilisent la notion
de visibilité.

On a 3 types de visibilité :

1. « + » ou public : tout le monde peut y accéder


2. « # » ou protected : seules la classe possédant l’élément et les classes filles peuvent y
accéder (voir notion d’héritage)
3. « – » ou private : seule la classe possédant l’élément peut y accéder

a. Les attributs privés:


Pour rendre les attributs privés, python impose d’utiliser un nom d’attribut qui commence par __
( double underscore) .

b. Les méthodes publiques :


La plupart des méthodes doivent être publiques. En effet, elles représentent l’interface d’échange
avec les autres éléments de. Pour créer un membre public dans une classe python, il suffit de choisir
un nom, sans rien ajouter au début.

Exemple : création d’une méthode publique calculMoy

4
Programmation Python DSI

Remarque importante :
Si pour une raison donnée, nous voulons définir un attribut public ou une méthode privée, alors,
on utilise la règle générale d’implémentation de l’encapsulation en python :

 Les membres privés doivent avoir un nom qui commence par __ (double
underscore)
 Les membres publics ont un nom simple
c. Les éléments protégés :
Si une classe donnée va être une classe mère, alors, elle doit rendre ses attributs protégés au lieu
de privés. En effet, si elle définit des attributs privés, alors, les classes filles qui héritent ces attributs
n’arrivent pas à les utiliser !! pour définir un élément protégé, python propose de commencer son
nom par un _ (underscore).

Exemple :

4. Accesseurs et modificateurs :

Comme les attributs sont privés,on doit créer des méthodes qui permettent l’accès ( pour
connaître la valeur de l’attribut , pour modifier cette valeur)

 Les Getters (Accesseurs) : méthodes qui permettent de connaître les valeurs des attributs.
 Les Setters(modificateurs) : sont des méthodes qui permettent de modifier les attributs

Exemple :

5
Programmation Python DSI

Alors, on peut accéder à l’information voulue via la méthode get ou set. Par exemple, on peut
créer un objet sans l’initialiser. Puis, utiliser les modificateurs pour initialiser les valeurs des
attributs.

Exemple :

On crée une classe Stagiaire avec les attributs numéro d’inscription, age, nom, prénom, note1 et
note2. On ajoute ‘=None’ pour chaque paramètre dans le constructeur pour dire que c’est un
paramètre facultatif :

6
Programmation Python DSI

Donc, on peut créer un objet stagiaire sans informations (objet vide non encore initialisé). Puis,
on va utiliser les modificateurs pour ajouter les informations du s2 :

Ainsi, nous avons pu créer deux objets s1 et s2 avec deux méthodes différentes :

 s1 est créé et initialisé par le constructeur . C’est à dire, au moment de la création, on a


donné les informations nécessaires
 s2 est premièrement crée via le constructeur. Puis, initialiser en utilisant les modificateurs.

5. Attributs et méthodes de classes :

a. Attribut de classe :

Jusqu’à présent, les attributs déclarés étaient des attributs d’instance. C’est à dire que les attributs
de chaque objet, peuvent avoir des valeurs différentes (numéro, nom, etc ).

Un attribut de classe est un attribut dont la valeur est la même pour toutes les instances d’une
même classe. Pour déclarer un tel attribut, on le définit comme dans l’exemple suivant :

7
Programmation Python DSI

b. Méthode de classe :

Une méthode de classe ne doit pas être envoyée à une instance donnée de cette classe, mais plutôt
à la classe elle-même.

Syntaxe : Une méthode de classe est déclarée par @staticmethod.

Exemple : On va utiliser un attribut de classe privé. Donc, on crée une méthode getCmp() qui sera
une méthode statique (Méthode de classe ) :

III. Héritage en programmation orienté objet :

L’héritage est un type de relations entre classes. En effet, il traduit la relation “est un”.

Exemple : Un roman est un livre, Une voiture est un Véhicule

L’héritage est le mécanisme de transmission des propriétés (attributs et méthodes) d’une classe à
une autre ;

 La classe de base (classe mère, parente) transmet toutes ses propriétés transmissibles aux
classes dérivées (classe fille, enfant);

8
Programmation Python DSI

 La classe dérivée possède ses propres attributs et méthodes, que la classe de base ne
connaît pas. De plus, la classe dérivée peut redéfinir (améliorer, spécialiser, ….) les
méthodes transmises par la classe de base

1. Héritage en Python :

Exemple :

Ou encore :

9
Programmation Python DSI

Exercice d’application :

1. Écrivez une classe Point qui représente un point sur le plan. Elle possède deux attributs
flottants x et y.
2. Ajouter un constructeur afin de permettre l’initialisation de x et de y.
3. Ajouter les accesseurs(getter) et les mutateurs(setter) des attributs
4. Ajouter une méthode distance() qui retourne la distance du point à l’origine du repère.
5. Ajouter une méthode distance( point) qui calcule la distance du point “self” au point
point.
6. Ajouter une méthode translate(dx, dy) qui translate le point de dx sur les abscisses et de
dy sur les ordonnées.
7. Écrire une classe Segment qui possède deux attributs point1 et point2 de type Point
représentant les deux extrémités du segment.
8. Ajouter une méthode length() qui calcule et retourne la longueur du segment.
9. Ecrire une classe Test_Points qui permet de créer deux points A et B et d’afficher la
distance qui les sépare
10. Translater le point A sur l’axe des abscisses et afficher ses nouvelles coordonnées
11. Translater le B point sur l’axe des ordonnées ses nouvelles coordonnées
12. Afficher la longuer du segment [AB]

10

Vous aimerez peut-être aussi