Classe, objet et état¶
Dans la page précédente, on a parlé de programmation orientée objet sans écrire une seule ligne de code. On a juste réfléchi en termes de “choses” qui ont des données et des actions.
Maintenant, il est temps de transformer ces idées en vrai code Python.
Classe et objet : la différence¶
Commençons par un point très important.
- Une classe, c’est un plan, un modèle
- Un objet, c’est une instance concrète de ce plan
Un peu comme :
- un plan de maison
- et une maison construite à partir de ce plan
En Python, on définit une classe avec le mot-clé class.
class Personnage:
pass
Pour l’instant, cette classe ne fait rien. Mais on peut déjà créer un objet à partir de cette classe :
p = Personnage()
Ici :
Personnageest la classepest un objet (une instance dePersonnage)
L’état d’un objet¶
Un objet n’est pas juste une étiquette. Il possède un état, c’est-à-dire des données qui lui sont propres.
Par exemple, un personnage peut avoir :
- un nom
- des points de vie
Ces données, on les appelle des attributs.
Le constructeur __init__¶
Quand on crée un objet, on veut souvent lui donner un état initial. C’est exactement le rôle du constructeur.
En Python, le constructeur s’appelle __init__.
class Personnage:
def __init__(self, nom, vie):
self.nom = nom
self.vie = vie
Ici :
__init__est appelé automatiquement à la création de l’objetselfreprésente l’objet en cours de créationself.nometself.viesont des attributs de l’objet
On peut maintenant créer de vrais objets :
p1 = Personnage("Alice", 100)
p2 = Personnage("Bob", 80)
Chaque objet a son propre état.
Accéder aux attributs¶
Pour accéder à un attribut d’un objet, on utilise un point . :
print(p1.nom)
print(p1.vie)
On peut aussi les modifier :
p1.vie = p1.vie - 20
Ce qui modifie l’état de cet objet précis, et pas celui des autres.
Chaque objet est indépendant¶
Même s’ils viennent de la même classe, les objets sont indépendants.
p1 = Personnage("Alice", 100)
p2 = Personnage("Bob", 100)
p1.vie -= 30
print(p1.vie)
print(p2.vie)
Ce programme affiche :
70
100
Modifier l’un ne modifie pas l’autre. C’est l’un des points clés de la programmation orientée objet.
Quizz¶
Regardez ce code :
class Compteur:
def __init__(self, valeur):
self.valeur = valeur
a = Compteur(5)
b = Compteur(5)
a.valeur -= 1
print(b.valeur)
Qu’affiche ce programme ?
- 4
- *5
- Une erreur
> `a` et `b` sont deux objets différents. Modifier l’état de `a` ne modifie pas celui de `b`.
Exercice pratique¶
Créez une classe CompteBancaire qui représente un compte bancaire.
Un compte bancaire :
- a un solde
- ce solde est défini à la création du compte
Votre programme doit :
- créer deux comptes avec des soldes différents
- afficher le solde de chaque compte
- modifier le solde d’un seul compte
- vérifier que l’autre n’a pas changé
Le but de cet exercice n’est pas encore de faire des retraits ou des dépôts, mais de bien comprendre la notion d’état propre à chaque objet.
En résumé¶
Vous savez maintenant :
- définir une classe
- créer des objets à partir d’une classe
- utiliser un constructeur (
__init__) - donner un état à un objet
- comprendre que chaque objet est indépendant
Dans la page suivante, on va ajouter des comportements à nos objets, et voir comment ils peuvent agir sur leur propre état.