Aller au contenu

Chapitre 1 - Partie 2 : Programmation orientée objet


TermeDéfinition
ClasseModèle (plan) qui définit les attributs et méthodes d'un type d'objet
Objet (instance)Exemplaire concret créé à partir d'une classe
AttributVariable attachée à un objet (ses données)
MéthodeFonction attachée à un objet (ses comportements)
ConstructeurMéthode spéciale __init__ appelée à la création de l'objet
class Point:
def __init__(self, x, y):
self.x = x # attribut
self.y = y # attribut
def distance_origine(self): # méthode
return (self.x ** 2 + self.y ** 2) ** 0.5
def translater(self, dx, dy):
self.x += dx
self.y += dy
def __str__(self):
return f"({self.x}, {self.y})"
p = Point(3, 4) # création d'un objet (instance)
print(p.x) # accès à un attribut → 3
print(p.distance_origine()) # appel de méthode → 5.0
p.translater(1, -1)
print(p) # → (4, 3) grâce à __str__

Python permet de définir des méthodes spéciales (dites dunder methods) pour personnaliser le comportement des objets :

MéthodeRôle
__init__(self, ...)Constructeur : initialise l'objet
__str__(self)Représentation lisible (print, str())
__repr__(self)Représentation technique (console interactive)
__eq__(self, other)Comparaison ==
__len__(self)Résultat de len(objet)

L'encapsulation consiste à regrouper les données (attributs) et les traitements (méthodes) dans un même objet. L'utilisateur interagit avec l'objet uniquement via ses méthodes, sans connaître la structure interne.

class CompteBancaire:
def __init__(self, titulaire, solde=0):
self.titulaire = titulaire
self.solde = solde
def deposer(self, montant):
assert montant > 0, "Le montant doit être positif"
self.solde += montant
def retirer(self, montant):
assert 0 < montant <= self.solde, "Fonds insuffisants"
self.solde -= montant
def __str__(self):
return f"Compte de {self.titulaire} : {self.solde} €"

ConceptDescription
ClasseModèle définissant attributs et méthodes
ObjetInstance concrète d'une classe
AttributDonnée attachée à un objet
MéthodeFonction attachée à un objet
EncapsulationRegroupement données + traitements dans un objet