0 XP
?
Débutant55 min35 XP

Objectifs de cette leçon

  • Définir une classe avec attributs et méthodes
  • Créer des instances d'une classe
  • Comprendre le constructeur __init__

Classes et objets 🏗️

Une classe c'est comme un moule à gâteaux : tu définis une forme une fois, et tu peux créer autant de gâteaux identiques que tu veux !


1. De la recette au gâteau : classe → objet 🎂

Exécution pas à pas

pseudo
1/17
▶️
CLASSE Chien
⚙️CLASSE ChienLe programme exécute cette action, puis passe à la suivante.

Le programme exécute cette instruction, puis passe à la suivante.

class Chien:
    """Plan de construction pour des chiens."""

    def __init__(self, nom, age):
        """Constructeur : appelé à la création."""
        self.nom = nom
        self.age = age

    def aboyer(self):
        """Comportement."""
        return f"{self.nom} dit: Wouf !"

    def __str__(self):
        return f"Chien({self.nom}, {self.age} ans)"

2. Créer et utiliser des objets 🎮

Exécution pas à pas

pseudo
1/9
▶️
' Création d'instances
⚙️' Création d'instancesLe programme exécute cette action, puis passe à la suivante.

Le programme exécute cette instruction, puis passe à la suivante.

# Création d'instances
medor = Chien("Médor", 3)
rex = Chien("Rex", 5)

# Utilisation
print(medor.aboyer())  # Médor dit: Wouf !
print(rex.aboyer())    # Rex dit: Wouf !
print(medor)           # Chien(Médor, 3 ans)
print(medor.nom)       # Médor (accès direct)

3. Attributs privés : le coffre-fort 🔐

Parfois, on ne veut pas qu'on modifie directement les données. On les protège :

Exécution pas à pas

pseudo
1/24
▶️
CLASSE CompteBancaire
⚙️CLASSE CompteBancaireLe programme exécute cette action, puis passe à la suivante.

Le programme exécute cette instruction, puis passe à la suivante.

class CompteBancaire:
    def __init__(self, titulaire):
        self.titulaire = titulaire
        self._solde = 0  # Convention : protégé (ne pas toucher !)

    def deposer(self, montant):
        if montant > 0:
            self._solde += montant

    def retirer(self, montant):
        if 0 < montant <= self._solde:
            self._solde -= montant
            return montant
        return 0

    @property
    def solde(self):
        """Propriété en lecture seule."""
        return self._solde

compte = CompteBancaire("Alice")
compte.deposer(1000)
print(compte.solde)  # 1000
# compte._solde = 9999  # Possible mais TRÈS déconseillé !

💡 L'encapsulation en action : on ne peut PAS modifier _solde directement. On doit passer par deposer() et retirer() qui vérifient les règles métier.


4. Schéma récapitulatif 📊

💡 À retenir : La classe = le plan. L'objet = la réalisation concrète. On peut créer des MILLIERS d'objets à partir d'une seule classe !

Exécution pas à pas

0/7

État de la mémoire

4 variables
Variable
Valeur
Type
Addr.
medor.nom
"Médor"
str
0x2000
medor.age
3
int
0x2010
rex.nom
"Rex"
str
0x2020
rex.age
5
int
0x2030
Aucune variable active
medor.nom0x2000
"Médor"
str
medor.age0x2010
3
int
rex.nom0x2020
"Rex"
str
rex.age0x2030
5
int

⚡ Simulateur — Classes et objets

Étape 1/7
📝 Pseudo-code
1CLASSE Chien # ← plan pour des chiens
2 nom : texte
3 age : entier
4
5 CONSTRUCTEUR(nom, age) # ← appelé à la création
6 self.nom ← nom
7 self.age ← age
8 FIN CONSTRUCTEUR
9
10 FONCTION aboyer() # ← méthode = action
11 RETOURNER self.nom + ' dit: Wouf !'
12 FIN FONCTION
13FIN CLASSE
14
15médor ← Chien('Médor', 3) # ⬅ 1ʳᵉ instance
16rex ← Chien('Rex', 5) # ⬅ 2ᵉ instance
17afficher(médor.aboyer()) # ⬅ voir le résultat
18afficher(rex.aboyer()) # ⬅ même méthode, autre objet
🏗️ Classe et Instances
📋 Classe Chien
- nom : texte
- age : entier
+ aboyer()
💡 Concepts clés
  • Classe = plan (définit la structure)
  • Instance = objet créé à partir du plan
  • Chaque instance a ses propres valeurs
  • Constructeur = initialise les attributs

La classe Chien est définie avec ses attributs et méthodes.