Programmation orientée objet (Python)
Classes, objets, attributs, méthodes, héritage
🏭 Application industrielle : La POO est utilisée pour modéliser et simuler des systèmes techniques en Python : robots, capteurs, actionneurs. Chaque composant physique peut être représenté par un objet avec ses propriétés et comportements.
La Programmation Orientée Objet (POO) organise le code autour d'objets plutôt que de fonctions isolées.
Un objet est une instance d'une classe. La classe est le plan de construction : elle définit les attributs (données) et les méthodes (fonctions).
Exemple concret :class Moteur:
def __init__(self, puissance, vitesse):
self.puissance = puissance
self.vitesse = vitesse
def demarrer(self):
print("Moteur en marche")
Le constructeur__init__(self, ...)initialise les attributs lors de la création. Le mot-cléselffait référence à l'objet courant.
L'héritage permet de créer une classe fille qui réutilise les attributs et méthodes d'une classe mère viasuper().__init__(...), tout en ajoutant ses propres spécificités.
📖 Vocabulaire clé
Classe
:
Modèle (plan) définissant attributs et méthodes d'un type d'objet. Syntaxe :
class NomClasse:.
Objet (instance)
:
Entité concrète créée à partir d'une classe, avec ses propres valeurs d'attributs. Syntaxe :
obj = NomClasse(arg1, arg2).
Attribut
:
Variable rattachée à un objet, définie dans
__init__ avec self.nom = valeur. Chaque objet a ses propres valeurs.
Héritage
:
Mécanisme par lequel une classe fille hérite des attributs et méthodes d'une classe mère. Syntaxe :
class Fille(Mere): avec super().__init__(...) dans le constructeur.
📋 Créer et utiliser une classe en Python
-
1
Classe et constructeur : Étape 1 — Définir la classe et le constructeur :
class NomClasse:def __init__(self, param1, param2):self.attribut1 = param1self.attribut2 = param2 -
2
Méthodes : Étape 2 — Définir les méthodes (fonctions de la classe) :
def ma_methode(self, arg):self.attribut1 += arg
Toujoursselfen premier paramètre pour accéder aux attributs. -
3
Instanciation et utilisation : Étape 3 — Instancier et utiliser :
obj = NomClasse(val1, val2)crée un objet.obj.ma_methode(5)appelle la méthode sur cet objet. -
4
Héritage : Étape 4 — Héritage (si nécessaire) :
class Fille(Mere):def __init__(self, param_mere, param_fille):super().__init__(param_mere)self.nouveau_attr = param_fille
✅ Exemple résolu
Énoncé : Créer une classe
Reservoir avec un attribut volume (litres) et une méthode remplir(quantite). Déterminer le volume après deux remplissages.
Démarche :
- Définition :
class Reservoir:avecdef __init__(self, volume_initial): self.volume = volume_initial. - Méthode :
def remplir(self, quantite): self.volume += quantite. - Utilisation :
r = Reservoir(10)→r.volume = 10. r.remplir(5)→r.volume = 15. Puisr.remplir(3)→r.volume = 18.
Réponse : Après les deux remplissages,
r.volume = 18 litres.
📏 Relations fondamentales
class NomClasse: — déclaration d'une classedef __init__(self, ...): — constructeur (initialise les attributs)self.attribut = valeur — définition d'un attribut d'instanceobj = NomClasse(...) — instanciation (création d'un objet)class Fille(Mere): + super().__init__(...) — héritage avec appel du constructeur parent🎨 Illustration
Diagramme de classes UML
Héritage : Capteur → CapteurAlarme
La classe CapteurAlarme hérite de la classe Capteur : elle réutilise ses attributs et méthodes, et en ajoute de nouveaux.
La flèche à tête triangulaire creuse pointe toujours vers la classe mère, jamais vers la classe fille.
-
1
Capteur (classe mère) : attributs
nom,unite,valeur; méthodes__init__,mesurer(v),afficher(). -
2
CapteurAlarme (classe fille) : ajoute l'attribut
seuilet la méthodealarme(), tout en héritant du reste viasuper().__init__(...). - 3 La flèche à tête triangulaire creuse (notation UML de généralisation) pointe de la classe fille vers la classe mère.
Ce qu'il faut lire : Lis le diagramme de bas en haut : la classe fille CapteurAlarme hérite de tout ce que possède Capteur, et lui ajoute son propre attribut et sa propre méthode.
Capteur et CapteurAlarme.❌ Une erreur, une suggestion
L'erreur fréquente
Ne pas oublier self comme premier paramètre de chaque méthode.
La suggestion
Sans self, Python ne sait pas à quel objet rattacher les attributs. Erreur classique : écrire def remplir(quantite): au lieu de def remplir(self, quantite):. De même, dans le corps de la méthode, il faut écrire self.volume et non volume.
💡 À retenir
- Une classe est un modèle, un objet est une instance concrète.
- Le constructeur
__init__(self, ...)initialise les attributs. Ne pas oublierself! - Les méthodes agissent sur les attributs via
self.attribut. - L'héritage (
class Fille(Mere):) réutilise le code de la classe mère.super().__init__(...)appelle le constructeur parent.
🏭 Application industrielle
Où retrouve-t-on ce principe en ingénierie ?
La POO est utilisée pour modéliser et simuler des systèmes techniques en Python : robots, capteurs, actionneurs. Chaque composant physique peut être représenté par un objet avec ses propriétés et comportements.
Mots-clés associés : ClasseObjetAttributMéthodeHéritagePython
La POO est utilisée pour modéliser et simuler des systèmes techniques en Python : robots, capteurs, actionneurs. Chaque composant physique peut être représenté par un objet avec ses propriétés et comportements.
Mots-clés associés : ClasseObjetAttributMéthodeHéritagePython