Python et la Programmation Orienté Objet
Pr: MAJDOUB Soufyane
Université Sidi Mohamed Ben Abdellah de Fès
[email protected] Laboratoire d’Informatique, Signaux, Automatique et
Cognitivisme
December 5, 2024
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 1 / 14
Plan
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 2 / 14
Notion d’objet
La notion d’objet
La POO est une méthode de programmation puissante qui permet
de créer des applications complexes et modulaires en utilisant des
objets qui interagissent les uns avec les autres.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 3 / 14
Notion d’objet
La notion d’objet
La POO est une méthode de programmation puissante qui permet
de créer des applications complexes et modulaires en utilisant des
objets qui interagissent les uns avec les autres.
• Les objets sont utilisés pour modéliser des entités du monde
réel ou des concepts abstraits.
• C’est une instance d’une classe, qui est une structure de
données qui définit les attributs et les méthodes de l’objet.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 3 / 14
Notion d’objet
La notion d’objet
La POO est une méthode de programmation puissante qui permet
de créer des applications complexes et modulaires en utilisant des
objets qui interagissent les uns avec les autres.
• Les objets sont utilisés pour modéliser des entités du monde
réel ou des concepts abstraits.
• C’est une instance d’une classe, qui est une structure de
données qui définit les attributs et les méthodes de l’objet.
Exemple: Compte bancaire
Attributs Méthodes
• Numéro de compte • retirer(montant)
• Solde • déposer(montant)
• Propriétaire • consulter()
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 3 / 14
Le concept d’objet
La POO repose sur quatre concepts fondamentaux :
1 L’encapsulation: est le fait de regrouper des données et des
méthodes connexes dans un même objet.
2 L’abstraction: permet de masquer les détails de l’implémentation
d’un objet et de se concentrer sur son comportement.
3 L’héritage: permet de créer de nouvelles classes à partir d’une
classe existante, en héritant de ses attributs et de ses méthodes.
4 Le polymorphisme: permet à des objets de même type d’avoir des
comportements différents.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 4 / 14
Le concept d’objet
La POO repose sur quatre concepts fondamentaux :
1 L’encapsulation: est le fait de regrouper des données et des
méthodes connexes dans un même objet.
2 L’abstraction: permet de masquer les détails de l’implémentation
d’un objet et de se concentrer sur son comportement.
3 L’héritage: permet de créer de nouvelles classes à partir d’une
classe existante, en héritant de ses attributs et de ses méthodes.
4 Le polymorphisme: permet à des objets de même type d’avoir des
comportements différents.
Résultat:
• • Fonctionnalités internes et
Utilisation d’objets pour définir
variables ne sont pas accessibles
d’autres objets
directement
• L’objet enfant hérite des propriétés
• Constructions des objets
de l’objet parent
indépendantes
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 4 / 14
Classe en python
Classe en POO
• Une classe est un modèle ou une définition abstraite qui décrit les
caractéristiques et les comportements que les objets qui en sont
issus possèdent.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 5 / 14
Classe en python
Classe en POO
• Une classe est un modèle ou une définition abstraite qui décrit les
caractéristiques et les comportements que les objets qui en sont
issus possèdent.
• Les classes sont utilisées pour créer des objets qui ont des propriétés
(des données) et des méthodes (des fonctions) qui leur sont propres.
La syntaxe pour définir une classe en Python est la suivante :
class NomDeLaClasse:
def __init__(self, attribut1, attribut2):
self.attribut1 = attribut1
self.attribut2 = attribut2
def methode(self):
return self.attribut1 + self.attribut2
• init est le constructeur de la classe, utilisé pour initialiser les objets.
• self fait référence à l’instance de la classe.
• Une méthode est une fonction qui est définie dans une classe et agit sur les données
de cette classe.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 5 / 14
Exemple d’une classe : Personne
Voici un exemple simple d’une classe représentant une personne :
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
def se_presenter(self):
return f"Bonjour, je m’appelle {self.nom} et j’ai {sel
Utilisation de la classe :
personne1 = Personne("Alice", 30)
print(personne1.se_presenter()) # Bonjour, je m’appel
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 6 / 14
Héritage en Python
L’héritage permet à une classe de hériter des attributs et des
méthodes d’une autre classe. Exemple :
class Employe(Personne):
def __init__(self, nom, age, poste):
# Appel au constructeur de la classe parente
super().__init__(nom, age)
self.poste = poste
def se_presenter(self):
return f"Bonjour, je m’appelle {self.nom}, j’ai {self.age}
ans et je travaille comme {self.poste}."
Exemple d’utilisation :
employe1 = Employe("Bob", 40, "Développeur")
print(employe1.se_presenter())
# Bonjour, je m’appelle Bob, j’ai 40 ans et je travaille
comme Développeur.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 7 / 14
Héritage en Python
Le polymorphisme permet à des objets de différentes classes de
répondre à la même méthode de manière différente. Exemple :
# Classe de base Forme
class Forme:
def area(self):
pass
# Classe Cercle héritant de Forme
class Cercle(Forme):
def __init__(self, rayon):
self.rayon = rayon
def area(self):
# Aire du cercle : pi * rayonˆ2
import math
return math.pi * self.rayon ** 2
# Classe Carre héritant de Forme
class Carre(Forme):
def __init__(self, cote):
self.cote = cote
def area(self):
# Aire du carré : coteˆ2
return self.cote ** 2
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 8 / 14
Héritage en Python
# Classe Rectangle héritant de Forme
class Rectangle(Forme):
def __init__(self, longueur, largeur):
self.longueur = longueur
self.largeur = largeur
def area(self):
# Aire du rectangle : longueur * largeur
return self.longueur * self.largeur
# Fonction pour calculer et afficher l’aire de n’importe quelle forme
def afficher_aire(forme):
print(f"L’aire de la forme est: {forme.area()}")
# Création d’objets de différentes formes
cercle = Cercle(5)
carre = Carre(4)
rectangle = Rectangle(4, 6)
# Appel de la fonction avec différents objets
afficher_aire(cercle) # Affiche l’aire du cercle
afficher_aire(carre) # Affiche l’aire du carré
afficher_aire(rectangle) # Affiche l’aire du rectangle
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 9 / 14
Exercice : Points et Vecteurs
Enoncé : Créez une classe Point représentant un point dans un plan 2D, et une classe
Vecteur représentant un vecteur dans ce même plan.
• La classe Point doit avoir :
• Un constructeur init (self, x, y) pour initialiser les coordonnées x et y.
• Une méthode afficher() qui affiche les coordonnées du point.
• Une méthode distance origine() qui calcule la distance entre le point et
l’origine (0, 0).
• Une méthode calculer vecteur() qui calcule le vecteur entre le point
courant et un autre point donné.
• La classe Vecteur doit avoir :
• Un constructeur init (self, x, y) pour initialiser les coordonnées du
vecteur.
• Une méthode afficher() qui affiche les coordonnées du vecteur.
• Une méthode additionner(vecteur) pour additionner le vecteur courant
avec un autre vecteur et retourner un nouveau vecteur résultat.
• Une méthode produit scalaire(vecteur) qui calcule le produit scalaire du
vecteur courant avec un autre vecteur.
• Une méthode norme() qui calcule la norme du vecteur.
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 10 / 14
Solution
import math
# Définition de la classe Point
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def afficher(self):
print(f"Point({self.x}, {self.y})")
def distance_origine(self):
return math.sqrt(self.x ** 2 + self.y ** 2)
def calculer_vecteur(self, autre_point):
return Vecteur(autre_point.x - self.x, autre_point.y - self.y)
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 11 / 14
Solution
import math
# Définition de la classe Vecteur
class Vecteur:
def __init__(self, x, y):
self.x = x
self.y = y
def afficher(self):
print(f"Vecteur({self.x}, {self.y})")
def additionner(self, vecteur):
return Vecteur(self.x + vecteur.x, self.y + vecteur.y)
def produit_scalaire(self, vecteur):
return self.x * vecteur.x + self.y * vecteur.y
def norme(self):
return math.sqrt(self.x ** 2 + self.y ** 2)
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 12 / 14
Solution
# Exemple d’utilisation
point1 = Point(1, 2)
point2 = Point(4, 6)
point1.afficher()
point2.afficher()
vecteur = point1.calculer_vecteur(point2)
vecteur.afficher()
vecteur1 = Vecteur(3, 4)
vecteur2 = Vecteur(1, 2)
vecteur1.afficher()
vecteur2.afficher()
vecteur3 = vecteur1.additionner(vecteur2)
vecteur3.afficher()
print(f"Produit scalaire : {vecteur1.produit_scalaire(vecteur2)}")
print(f"Norme du vecteur1 : {vecteur1.norme()}")
MAJDOUB Soufyane (USMBA) POO en python December 5, 2024 13 / 14
Fin
Questions? Commentaires?