Matières ⚙️ Sciences de l'Ingénieur Lycée Programmation orientée objet (Python)
🐍

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é self fait 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 via super().__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. 1 Classe et constructeur : Étape 1 — Définir la classe et le constructeur :
    class NomClasse:
      def __init__(self, param1, param2):
        self.attribut1 = param1
        self.attribut2 = param2
  2. 2 Méthodes : Étape 2 — Définir les méthodes (fonctions de la classe) :
      def ma_methode(self, arg):
        self.attribut1 += arg
    Toujours self en premier paramètre pour accéder aux attributs.
  3. 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. 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 :
  1. Définition : class Reservoir: avec def __init__(self, volume_initial): self.volume = volume_initial.
  2. Méthode : def remplir(self, quantite): self.volume += quantite.
  3. Utilisation : r = Reservoir(10)r.volume = 10.
  4. r.remplir(5)r.volume = 15. Puis r.remplir(3)r.volume = 18.
Réponse : Après les deux remplissages, r.volume = 18 litres.

📏 Relations fondamentales

class NomClasse: — déclaration d'une classe
def __init__(self, ...): — constructeur (initialise les attributs)
self.attribut = valeur — définition d'un attribut d'instance
obj = 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.

Diagramme de classes UML : heritage Capteur / CapteurAlarme Deux classes UML reliees par une fleche d'heritage a tete triangulaire creuse pointant vers le haut, de CapteurAlarme (classe fille, en bas) vers Capteur (classe mere, en haut). La classe Capteur possede les attributs nom (str), unite (str) et valeur (float initialise a 0), et les methodes constructeur, mesurer(v) et afficher(). La classe CapteurAlarme ajoute l'attribut seuil (float) et la methode alarme(), en plus de son propre constructeur qui appelle celui de la classe mere via super(). Capteur - nom : str - unite : str - valeur : float = 0 + __init__(nom, unite) + mesurer(v) + afficher() hérite de CapteurAlarme - seuil : float + __init__(nom, unite, seuil) + alarme()
  • 1 Capteur (classe mère) : attributs nom, unite, valeur ; méthodes __init__, mesurer(v), afficher().
  • 2 CapteurAlarme (classe fille) : ajoute l'attribut seuil et la méthode alarme(), tout en héritant du reste via super().__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.
Diagramme de classes UML de l'exemple du cours : héritage entre 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 oublier self !
  • 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