Vous êtes sur la page 1sur 49

1

Programmation Orientée Objet (POO)

ISTA NTIC MARRAKECH

Filière Développement digital

Préparé par Mme Oussimour

Préparé par Mme Oussimour


2

Plan

Présentation de la poo
Présentation des Classes et objets
Présentation des Attributs et Constructeurs
Présentation de l’Encapsulation et Accesseurs /
Mutateurs
Présentation des Attributs et méthodes de classe
Présentation de l’Héritage et polymorphisme
Préparé par Mme Oussimour
3

Différence entre la programmation orientée objet et la


programmation procédurale

Préparé par Mme Oussimour


4

Différence entre la programmation orientée objet et la


programmation procédurale

Préparé par Mme Oussimour


5

Programmation Orientée Objet (POO)

La programmation orientée objet (abrégée POO)


est une façon particulière de programmer. Chaque
chose est un objet possédant sa propre structure
interne, capable d'interagir avec d'autres objets.
Cette façon de programmer permet une
maintenance plus aisée ainsi qu'une distribution
plus facile des codes.

Préparé par Mme Oussimour


6

Différence entre la programmation orientée objet et la


programmation procédurale

Préparé par Mme Oussimour


7

Préparé par Mme Oussimour


8

Programmation Orientée Objet (POO)

Qu'est ce qu’un Programme Orientée Objet ?


– Ensemble d'objets autonomes et responsables qui
s'entraident pour résoudre un problème final en
s'envoyant des messages.
Objet 1 Message

Objet 3

Objet 2
Préparé par Mme Oussimour
9

Qu’est ce qu’un objet


Le trio <objet, attribut, valeur>:
Nous avons l’habitude de décrire le monde qui nous entoure à l’aide de ce
trio que les informaticiens se plaisent à nommer : <objet, attribut, valeur>,
par exemple : <voiture, couleur, rouge>, <voiture, marque, peugeot>,
<personne, prénom,ahmed>, <personne, âge, 50>.
ce sont les entités et non pas leurs attributs qui vous sautent aux yeux, c’est
bien parce que chacune de ces entités ou objets, la voiture et le personne, se
caractérise par ces attributs, couleur, âge, taille, prenant une valeur
particulière, uniforme « sur tout l’objet ».

Préparé par Mme Oussimour


10

Qu’est ce qu’un objet


Le trio <objet, attribut, valeur>:
Il est possible dans tous les langages informatiques de stocker et de
manipuler des objets en mémoire, comme autant d’ensembles de couples
attribut/valeur.

Préparé par Mme Oussimour


11

Qu’est ce qu’un objet

Tous les objets sont caractérisé par des attributs

Préparé par Mme Oussimour


12

Espace mémoire

Préparé par Mme Oussimour


13

Qu’est ce qu’un objet


Le référent contient l’adresse physique de l’objet, codée sur 32 bits dans la
plupart des ordinateurs aujourd’hui.
Référent vers un objet unique: Le nom d’un objet informatique, ce qui le
rend unique, est également ce qui permet d’y accéder physiquement. Nous
appellerons ce nom le « référent de l’objet ». L’information reçue et contenue
par ce référent n’est rien d’autre que l’adresse mémoire où cet objet se
trouve stocké.
Plusieurs référents pour un même objet: Dans le cours de l’écriture d’un
programme orienté objet, on accédera couramment à un même objet par
plusieurs référents, générés dans différents contextes d’utilisation.

Préparé par Mme Oussimour


14

Programmation Orientée Objet

Activité des objets


les objets ne se bornent pas à être statiques. Ils bougent, se déplacent,
changent de forme, de couleur, d’humeur, et ce, souvent, suite à une interaction
directe avec d’autres objets. La voiture s’arrête car le feu est devenu rouge, et
elle redémarre dès qu’il passe au vert. Les personnes traversent car les voitures
s’arrêtent.
Changement d’états
Le cycle de vie d’un objet, lors de l’exécution d’un programme orienté objet, se
limite à une succession de changements d’états, jusqu’à sa disparition pure et
simple de la mémoire centrale.

Préparé par Mme Oussimour


15

Qu’est ce qu’un objet

Tous les objets sont dynamiques c’est-à-dire ils dispose d'un ensemble
d'opérations (les méthodes) qui permettent d'agir sur le comportement de
notre objet.

Préparé par Mme Oussimour


16

Qu’est ce qu’un objet


En résumé en POO un objet est caractérisé par 2 notions :
Les attributs: Il s'agit des données caractérisant l'objet. Ce sont des
variables stockant des informations d'état de l'objet
Les méthodes (appelées parfois fonctions membres): Les méthodes d'un
objet caractérisent son comportement, c'est-à-dire l'ensemble des actions
(appelées opérations) que l'objet est à même de réaliser. Ces opérations
permettent de faire réagir l'objet aux sollicitations extérieures (ou d'agir sur
les autres objets). De plus, les opérations sont étroitement liées aux attributs,
car leurs actions peuvent dépendre des valeurs des attributs, ou bien les
modifier

Préparé par Mme Oussimour


17

Qu’est ce qu’une classe


une classe c'est le modèle de quelque chose que nous voulons construire.
Par exemple on crée un plan de construction d'une maison qui réunit les
instructions destinée à la construction.
Mais le plan n'est pas une maison.
La maison est un objet qui a été instancié à partir de la classe(le plan).
A partir du plan ( la classe ) on peut construire une autre maison ( l'objet ).
En bref, la classe c'est le modéle, et un objet c'est une instance.

Préparé par Mme Oussimour


18

Qu’est ce qu’une classe


On appelle classe la structure d'un objet, c'est-à-dire la déclaration de
l'ensemble des entités qui composeront un objet.
Un objet est donc « issu » d'une classe, c'est le produit qui sort d'un moule.
La classe devient ce contrat logiciel qui lie à vie les attributs de l’objet et les
méthodes qui utilisent ces attributs. Par la suite, tout objet devra
impérativement respecter ce qui est dit par sa classe, sinon gare au
compilateur !

Préparé par Mme Oussimour


19

Qu’est ce qu’une classe


on dit qu'un objet est une instanciation d'une classe, c'est la raison pour
laquelle on pourra parler indifféremment d'objet ou
d'instance (éventuellement d'occurrence).
Pour créer un objet d’une classe donnée, il faut:
• déclarer une référence à l’objet en question ;
• l’instancier.

Préparé par Mme Oussimour


20

Qu’est ce qu’une classe


Créons une classe Voiture :
class Voiture:
def __init__(self):
self.nom = "Ferrari "

Notre classe Voiture est une sorte d'usine à créer des voitures.
La méthode __init__() est appelée lors de la création d'un objet.
Un objet est une instance d'une classe . On peut créer autant d'objets que
l'on désire avec une classe .
Créons maintenant notre voiture:
>>> ma_voiture = Voiture()
Préparé par Mme Oussimour
21

Qu’est ce qu’une classe


Une classe est composée de 3 parties :
Les attributs (parfois appelés données membres) : il s'agit des données
représentant l'état de l'objet
un ou plusieurs constructeurs : ce sont des fonctions indiquant de quelle
façon l’objet doit être déclaré et initialisé.
Les méthodes (parfois appelées fonctions membres): il s'agit des opérations
applicables aux objets

Préparé par Mme Oussimour


22

Qu’est ce qu’une classe


En python une classe sera toujours définie de la manière suivante :
class Point:
def __init__(self, x, y):
self.__x = x
self.__y = y
def deplace(self, dx, dy):
self.__x = self.__x + dx self.__y = self.__y + dy
def affiche(self):
print("abscisse =", self.__x, "ordonnee =", self.__y)

Préparé par Mme Oussimour


23

Les attributs
les attributs représentent les « variables » traduisant l’état de l’objet (comme
avec les champs des structures).
Ces variables peuvent être de toutes natures : des entiers, des chaînes de
caractères, des listes, d’autres objets, etc. . . Par convention, leur nom
commencent toujours par une minuscule.

Préparé par Mme Oussimour


24

Les constructeurs
Un constructeur est une fonction appelée au moment de la création d’un
objet a partir d’une classe. Il permet d’initialiser correctement cet objet,
éventuellement À partir de paramètres.
En python le constructeur n’est rien d’autre qu’une méthode, sans valeur de
retour, qui porte un nom imposé par le langage Python : __init__()
def __init__(self, x, y):
self.set_x(x)
self.set_y(y)

Préparé par Mme Oussimour


25

Les méthodes
Les méthodes sont des « sous-porgrammes » propres à agir sur les objets
d’une classe. Elles sont assimilables à des fonctions sauf qu’elles sont
généralement appelés par des objets et agissent potentiellement sur eux.
Un bon exemple est la méthode de la classe string (chaînes de caractères)
lower() qui permet de passer toutes les lettres d’une chaîne en minuscules de la
façon suivante :

txt = "Hello my FRIENDS"

x = txt.lower()

Préparé par Mme Oussimour


26

Encapsulation des données


l’encapsulation est l'idée de protéger l'information contenue dans
un objet et de ne proposer que des méthodes de manipulation de
cet objet.
Le concept d’encapsulation est un mécanisme consistant à
rassembler les données et les méthodes au sein d’une structure
en cachant l’implémentation de l’objet, c’est-à-dire en empêchant
l’accès aux données par un autre moyen que les services
proposés. L’encapsulation permet donc de garantir l’intègrité des
données contenues dans l’objet.

Préparé par Mme Oussimour


27

Encapsulation des données


L’encapsulation permet de définir des niveaux de visibilité des
éléments de la classe. ces niveaux de visibilité définissent les
droits d’accès aux données selon que l’on y accède par une
méthode de la classe elle-même, d’une classe héritière, ou bien
d’une classe quelconque.

Préparé par Mme Oussimour


28

Encapsulation des données


Il existe trois niveaux de visibilité :
• 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é public. Il s’agit du plus bas niveau de
protection des données.
• protégée : l’accès aux données est réservé aux fonctions des
classes héritières, c’est-à-dire par les fonctions membres de la
classe ainsi que des classes dérivées.
• privée : 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é.
Préparé par Mme Oussimour
29

Encapsulation des données


Python n’implémente pas directement ces concepts de visibilité des membres
de classe et il est donc impossible de définir un membre comme privé ou
protégé : par défaut, tous les membres de classe sont publics en Python.
En revanche, certaines conventions ont été mises en place par la
communauté Python
Ces conventions sont les suivantes :
On préfixera les noms des membres qu’on souhaite définir comme “privés”
avec deux underscores comme ceci : __nom-du-membre ;
On préfixera les noms des membres qu’on souhaite définir comme “protégés”
avec un underscore comme ceci : _nom-du-membre.

Préparé par Mme Oussimour


30

Accesseurs et mutateurs
Un accesseur est une méthode qui va nous permettre
d'accéder aux variables de nos objets en lecture,
un mutateur nous permettra d'en faire de même en
écriture
Grâce aux accesseurs, vous pourrez afficher les
variables de vos objets, et grâce aux mutateurs, vous
pourrez les modifier
On rencontre souvent l’utilisation de noms de la
forme get_XXXX() pour les accesseurs
et set_XXXX() pour les mutateurs Préparé par Mme Oussimour
31

Accesseurs et mutateurs

En python on utilise la syntaxe suivante:


def get_x(self):
return self.__x def
def set_x(self, x):
self.__x = x

Préparé par Mme Oussimour


32

Accesseurs et mutateurs
Utiliser les décorateurs
Python

Préparé par Mme Oussimour


33

Surcharge des méthodes


La surcharge d'une méthode permet de définir
plusieurs fois une même méthode avec des
arguments différents.
Une méthode est surchargée lorsqu'elle exécute
des actions différentes selon le type et le nombre
de paramètres transmis.

Préparé par Mme Oussimour


34

Surcharge des méthodes


En Python, une fonction peut être créée et appelée
plusieurs fois en lui passant de nombreux arguments
ou paramètres. Ce processus d’appel de la même
fonction, encore et encore, en utilisant différents
arguments ou paramètres s’appelle la surcharge de
fonction
Exemple: Surcharger la méthode d’instance CALCUL
pour permettre de calculer la moyenne générale de
chaque stagiaire en prenant comme paramètres les
coefficients des notes Préparé par Mme Oussimour
35

Attributs de classe

Les attributs de classe sont des attributs que les


objets d’une même classe vont partager
Si on ajoute une variable dans une classe comme
on créait une variable locale dans une fonction, on
crée ce qu'on appelle un attribut de classe
À l'extérieur ou à l’intérieur d'une classe, un
attribut de classe peut se retrouver avec une
syntaxe NomClasse.attribut
Préparé par Mme Oussimour
36

Attributs de classe

Un attribut de classe existe même si aucun objet


de la classe n'a été créé.

Exemple: compteur permettant de connaitre en


permanence combien d’instances de Stagiaire il
existe.

Préparé par Mme Oussimour


37

Les méthodes de classe

Les méthodes de classes sont différentes des


méthodes d’instances en ce qu’elles prennent
comme premier argument la classe elle-même. De
plus, une méthode de classe est liée à la classe, mais
pas à l’objet de cette classe.
les méthodes et de classe sont des méthodes qui vont affecter
l’ensemble des objets d’une classe.
Exemple: Dans la classe stagiaire on ajoute une méthode de
classe qui réinitialise le compteur à 0
Préparé par Mme Oussimour
38

Les méthodes statiques en


Python
Les méthodes statiques sont utilisées pour créer des fonctions utiles.
Ces méthodes ont une connexion logique avec la classe, mais
n’utilisent pas l’état de la classe ou de l’objet.
Si on ajoute une méthode statique dans la classe . Cette méthode a
une connexion logique avec la classe n’utilise pas ses propriétés ou
ses méthodes.
Exemple: dans la classe Stagiaire on ajoute une méthode
statique qui prend la moyenne d’un étudiant et affiche une
observation

Préparé par Mme Oussimour


39

Les méthodes statiques


Les méthodes statiques sont utilisées pour créer des fonctions utiles.
Ces méthodes ont une connexion logique avec la classe, mais
n’utilisent pas l’état de la classe ou de l’objet.
Si on ajoute une méthode statique dans la classe . Cette méthode a
une connexion logique avec la classe n’utilise pas ses propriétés ou
ses méthodes.
Exemple: dans la classe Stagiaire on ajoute une méthode
statique qui prend la moyenne d’un étudiant et affiche une
observation

Préparé par Mme Oussimour


40

Les méthodes statiques

Préparé par Mme Oussimour


41

Héritage
L'héritage (en anglais inheritance) est un principe propre à la
programmation orientée objet, permettant de créer une nouvelle
classe à partir d'une classe existante.
Observons les 3 classes suivantes que ce que vous remarquer!!
Stagiaire Formateur
Personne
CIN CIN
CIN NOM
NOM NOM
PRENOM PRENOM
PRENOM DATE DE NAISSANCE
DATE DE NAISSANCE DATE DE NAISSANCE
ADRESSE ADRESSE
ADRESSE TEL
TEL TEL
NUM_INSCRIPTION Matricule
FILIERE Spécialisation
NOTE1 Date_Embauche
NOTE2
NOTE3
Préparé par Mme Oussimour
42

Héritage
Le nom d'"héritage" (pouvant parfois être appelé dérivation de classe)
provient du fait que la classe dérivée (la classe nouvellement créée)
contient les attributs et les méthodes de sa superclasse (la classe
dont elle dérive).
L'intérêt majeur de l'héritage est de pouvoir définir de nouveaux attributs
et de nouvelles méthodes pour la classe dérivée, qui viennent s'ajouter à
ceux et celles héritées.
Cela a comme avantage majeur de ne pas avoir à repartir de zéro lorsque
l'on veut spécialiser une classe existante
On dit que la classe B hérite de la classe A si B est un A (Stagiaire est
une Personne)
Préparé par Mme Oussimour
43

Héritage
L’héritage permet de construire une classe B à partir d’une classe
existante A. Il s’agit d’une sorte d’héritage biologique.
La classe B va ainsi hériter des variables, des méthodes, bref de tous
les membres de A puis, on va ajouter des éléments supplémentaires
propres à la classe B.
Si B hérite de A, on dit que B est une classe fille, une sous-classe,
une classe enfant ou encore une classe dérivée de A.
A l’inverse, A se nomme la classe mère, la classe de base,
la classe parent ou encore la super classe de B.
Toute instance (objet) de B peut être considéré comme un objet de A.
Une instance de A ne peut être toujours considéré comme un objet de B
Préparé par Mme Oussimour
44

Exemples Héritage

Préparé par Mme Oussimour


45

Exemples Héritage

Préparé par Mme Oussimour


46

Héritage en Python

Exemple PRATIQUE
-création de la classe Mère Personne
-création des classes Filles Stagiaire et Formateur
Utiliser l’héritage dans le constructeur

Préparé par Mme Oussimour


47

Polymorphisme

“Polymorphisme” signifie littéralement “plusieurs


formes”. Dans le contexte de la programmation
orientée objet, le polymorphisme est un concept
qui fait référence à la capacité d’une variable,
d’une fonction ou d’un objet à prendre
plusieurs formes, c’est-à-dire à sa capacité de
posséder plusieurs définitions différentes.

Préparé par Mme Oussimour


48

Polymorphisme et redéfinition des


méthodes
La redéfinition d'une méthode héritée est motivée par le fait que sa
version, dans la classe mère, ne correspond pas aux besoins de la
classe fille.
La redéfinition permet alors de proposer un code différent à une
méthode héritée tout en gardant son entête.
Autrement, il ne peut s'agir d'une redéfinition mais d'une nouvelle
méthode complétement différente de celle héritée.
A partir d'une classe fille, il est possible, à tout moment, d'invoquer
une méthode redéfinie, dans sa version initiale, déclarée dans la
classe mère.
Préparé par Mme Oussimour
49

Polymorphisme d’héritage en
Python
Exemple pour Pratiquer la redéfinition des méthodes en Python
1. Redéfinir la méthode Afficher de la classe Mère Personne dans les classes filles
Stagiaire et Formateur
2. Création des classes Animal ,Chat, Dauphin,Aigle
3. Redéfinir la méthode Se_Déplacer de la classe Mère Animal dans les classes filles

Préparé par Mme Oussimour

Vous aimerez peut-être aussi