République Tunisienne Université de Carthage
Ministère de l’Enseignement Supérieur et Ecole Nationale d’Ingénieurs de Bizerte
de la Recherche Scientifique
Programmation orientée objet
Python
GI1 et GM1
(Semestre 2)
Safa Hachani & Islam ELLEUCH
[Link]@[Link] / elleuchislam@[Link]
2024-2025
CHAPITRE 4 – POO ET
HÉRITAGE
Partie 1-
Programmation Orientée
Objet (POO) avec python
Plan
La programmation orientée objet
Syntaxe Classe en Python
Exercice
3
Programmation Procédurale (PPD)
Principe
Le programme est divisé en petites parties appelées procédures /fonctions qui
effectuent des traitements sur des données.
Il n’existe pas un lien direct entre les données et les traitements.
Les données et les traitements sont séparés.
Les données à traiter sont passées en arguments aux procédures
PPD
Traitement 1 Données Traitement 2
Traitement 3
Exemples de langages procéduraux : C, Pascal …
4
Programmation Procédurale (PPD)
Limites
Complexité du code
Difficulté de réutilisation du code.
Difficulté de la maintenance et l’ajout de nouvelle fonctionnalités dans les
grandes applications.
Nécessité de modification ou d’insertion des séquences.
Difficulté du travail en équipe.
5
Programmation Orienté Objet (POO)
Principe
Le programme est composé de plusieurs objets qui contiennent :
des données « internes »,
des traitements qui manipulent ces données internes ou d’autres données
Les données et leurs traitements sont regroupés dans une seule entité : objet.
POO Objet 1
Données
Traitements
Objet 2 Objet 3
Données Données
Traitements Traitements
6
Programmation Orienté Objet (POO)
Principe
Les données d’un objet sont appelées ses attributs.
Les traitements d’un objet sont appelés ses méthodes.
Exemples de langages orientés-objets : Python, C++, C#, Java, …
POO Objet 1
Données
Attributs
Méthodes
Traitements
Objet 2 Objet 3
Données
Attributs Données
Attributs
Méthodes
Traitements Méthodes
Traitements
7
Programmation Orienté Objet (POO)
Introduction
Paradigme (style) de programmation consistant à assembler des briques
logicielles (objets).
Un objet représente un concept ou une entité du monde.
La plupart des langages de programmation populaires aujourd’hui sont basés
sur l’approche objets. Mais les objets ne sont pas uniquement utilisés pour la
programmation...
Bases de données objets(Oracle)
Méthodes de conception objets (UML)
HTML+CSS, (accompagné de Javascript, PHP...)
8
Programmation Orienté Objet (POO)
Concept
Abstraction
Héritage
Polymorphisme
Concepts de
POO
Encapsulation
Objet
Classe
9
Concepts de la Programmation Orienté Objet
Des objets... pour quoi faire?
Objectif premier c’est faciliter le développement d’une application robuste.
En clair, programmer de manière orientée objet, c'est écrire du code source
(potentiellement complexe) mais que l'on masque en le plaçant à l'intérieur
d'un objet.
Pour la personne qui va l'utiliser, travailler avec un objet est donc beaucoup
plus simple qu'avant : il suffit d’appeler les fonctions sur celui-ci..
10
Concepts de la Programmation Orienté Objet
Objet
Le concept d’objet est utilisé pour modéliser informatiquement des "objets"
concrets de la vie courante (véhicule, personne, etc.) ou des objets
conceptuels (date, quantité, etc.).
Exemple: Gestion de location de véhicule
Renault Ali Ben Salah
Noir 5 jours Directeur
120 d Amal Mhiri
Audi Mohamed Tounssi Locataire
Bleu Agent
Mounir Gharbi
Un objet se caractérise par une identité (adresse en mémoire), des états
(valeurs de ses attributs) et un comportement (ses méthodes).
11
Concepts de la Programmation Orienté Objet
Classe
Une classe est la description d’une famille d’objets ayant une même
structure et un même comportement
Les objets d’une classe ont des valeurs différentes.
Exemple: Gestion de location de véhicule
Renault Ali Ben Salah
Noir 5 jours Directeur
120 d Amal Mhiri
Audi Mohamed Tounssi Locataire
Bleu Agent
Mounir Gharbi
Classe Véhicule Classe Contrat Classe Employé Classe Client
- marque, couleur - durée, prix - nom, prénom, statut - nom, prénom
12
Concepts de la Programmation Orienté Objet
Classe
Une classe est composée de plusieurs membres dont chacun est soit:
un attribut : variable typée
Une méthode : ensemble d’instruction de traitement
Classe Véhicule
marque
Attributs couleur
vitesse
Méthodes accelerer() : vitesse + 10
décélérer() : vitesse - 10
13
Python – Classe et attributs
Les classes en Python
Pour créer une classe en Python,on utilise l’instruction :
On crée ensuite une méthode qui permet de construire les objets, appelé
constructeur via l’instruction :
Il s’agit d’une méthode spéciale dont le nom est entouré de doubles
underscores, en effet:
Elle sert au fonctionnement interne de notre classe,
C’est l’emplacement idéale pour initialiser les attributs de l’instance
Elle n’est pas supposée être lancée comme une fonction classique
par l’utilisateur de la classe.
Ce constructeur est exécuté à chaque instanciation de notre classe,
et ne renvoie pas de valeur, il ne possède donc pas de return.
14
Python – Classe et attributs d’instance
Les attributs d’une classe doivent être initialisés dans le constructeur
La valeur doit être passée en paramètre du constructeur.
Les initialiser dans la méthode __init__()
Syntaxe : self. attribut = valeur
On peut accéder aux attributs d’instance :
de l’extérieur par [Link]
de l’intérieur par [Link] ou par [Link].
15
Python – Classe et attributs d’instance
La classe rectangle possède deux attributs : Longueur et largeur.
Exemple : classe Rectangle
C e qui s’affiche à l’exécution :
La longueur d e m o n r e c t a n g l e est 7
La largeur d e m o n r e c t a n g l e est 5
16
Python – Méthodes
Les méthodes
On peut aussi améliorer la classe en ajoutant des méthodes permettant
d’effectuer différentes tâches.
Une méthode est une fonction ou procédure nommée au sein de la classe:
permettant de définir des propriétés
permettant de définir des comportements des objets d’instances.
Syntaxe :
def NomMethode(self) :
Instructions ……..
17
Python – Méthodes
Exemple: Ajout de méthode qui calcule la surface du rectangle
C e qui s’affiche après exécution : La surface est : 35
18
Python – Méthodes
Les méthodes
On veut ajouter une méthode Périmètre à la classe Rectangle.
19
Python – Attributs de classe
Définition :
Un attribut de classe est un attribut qui sera identique pour chaque instance.
5 Couleur = ’’Jaune’’
NB: Il suffit de créer une variable à l’intérieur de la classe et en dehors de toute
méthode.
De l’extérieur ou à l’intérieur d’une classe, un attribut de classe peut se
retrouver avec une syntaxe : [Link] ou [Link]
R1=Rectangle(4,2) // Affichage
R2=Rectangle (8,6) Jaune
Print([Link]) Jaune
Print([Link])
20
Python – Attributs de classe
NB: Même si on peut retrouver un attribut de classe avec une syntaxe
[Link], un tel attribut ne peut pas être modifié avec une syntaxe:
[Link]=nouvelle_valeur
La seule manière de modifier un attribut de classe est d’utiliser une
syntaxe NomClasse.attribut_de_classe=nouvelle_valeur
[Link] = ’’Rouge’’
21
Encapsulation
- L’encapsulation est le fait de rendre les attributs d’une classe privée et
inaccessible en dehors de la classe
En python l’encapsulation est juste une convention et non pas une obligation
comme est le cas pour les autres langages de POO.
Rendre l’attribut privée
en l’entourant par deux « _ ».
Définir les setters : méthodes
permettant de modifier les attributs.
Définir les getters : méthodes
permettant d’accéder aux attributs
22
Property
Property permettant de transformer une méthode de la classe en attribut.
Définir une méthode précédée par le décorateur @property
Solliciter la méthode sur un objet en tant que attribut et non pas méthode.
En fait grâce au décorateur @property,
le compilateur la considère comme un attribut.
23
Exercice
1. Définir une classe Personne qui possède deux attributs nom et age.
2. Définir le constructeur qui initialise les attributs de l’instance par les valeurs
passée en paramètres du constructeur.
3. Définir une méthode qui permet d’afficher les attributs
Correction
Class Personne :
def –-int-—(self, nom, age):
self.__nom=nom
self.__age=age
def returnNom(self):
return self.__nom
def returnAge(self):
return self.__age
P = Personne(‘Maram’, 20)
print(‘Le nom de la personne est :’ , [Link]())
print(‘L’age de la personne est :’ , [Link]())
24