Programmation Orientée Objet (POO)
Introduction
La programmation orientée objet (POO) est une manière d’organiser un programme en regroupant dans des structures appelées classes à la fois des données (attributs) et les actions qui peuvent être réalisées sur ces données (méthodes).
Cette approche permet de représenter des concepts de manière claire et structurée : chaque objet manipulé dans le programme est une instance d’une classe, c’est-à-dire une version concrète du modèle défini.
La POO facilite la lecture, la réutilisation et l’évolution du code, en rapprochant la logique du programme de la façon dont on décrit et organise les choses dans la vie courante.
👉 Exemple concret :
- Une classe est comme un modèle ou un plan.
- Une instance (objet) est un exemplaire concret de ce modèle.
Exemple
- La classe
Stylo
décrit ce qu’est un stylo en général : une couleur d’encre, une longueur, une marque… - Les instances sont des stylos précis :
stylo1
: Bic bleu de 15 cmstylo2
: Pilot noir de 13 cm
En Python, on écrira une classe Stylo
, puis on créera plusieurs objets stylo1
, stylo2
, etc.
👉 À retenir : Une classe est un modèle, une instance est une utilisation concrète de ce modèle.
Écrire une classe en Python
Exemple : un rectangle.
class Rectangle:
def __init__(self, largeur, hauteur):
self.largeur = largeur # attribut
self.hauteur = hauteur # attribut
def aire(self):
return self.largeur * self.hauteur # méthode
def perimetre(self):
return 2 * (self.largeur + self.hauteur) # méthode
Créer une instance (objet)
# Création de deux rectangles (instances)
rect1 = Rectangle(5, 2)
rect2 = Rectangle(10, 3)
print(rect1.aire()) # 10
print(rect2.perimetre()) # 26
- Rectangle est le plan (classe).
- rect1 et rect2 sont des rectangles concrets (instances).
- Chaque instance a ses propres valeurs d’attributs.
Accéder aux attributs et méthodes
Attributs :
print(rect1.largeur) # 5
print(rect2.hauteur) # 3
Méthodes
print(rect1.aire()) # 10
print(rect2.perimetre()) # 26
Exemples supplémentaires
class Livre:
def __init__(self, titre, auteur, pages):
self.titre = titre
self.auteur = auteur
self.pages = pages
def resume(self):
return f"{self.titre}, écrit par {self.auteur} ({self.pages} pages)"
livre1 = Livre("1984", "George Orwell", 328)
print(livre1.resume())
# affiche : 1984, écrit par George Orwell (328 pages)
class Animal:
def __init__(self, nom, espece, age):
self.nom = nom
self.espece = espece
self.age = age
def presentation(self):
return "Je suis " + str(self.nom) + " un " print(self.espece) + " de " + str(self.age) + " ans."
animal1 = Animal("Milo", "chat", 3)
animal2 = Animal("Rex", "chien", 5)
print(animal1.presentation()) # Je suis Milo, un chat de 3 ans.
print(animal2.presentation()) # Je suis Rex, un chien de 5 ans.
Exercices
(Les trois premiers exercices viennent du site KXS)
Exercice 1
- Créez une classe Point qui possède deux attributs
x
ety
correspondant aux coordonnées du point. Ces deux attributs doivent être affectés par le constructeur. -
Ajoutez une méthode
affiche()
qui affiche les coordonnées du point comme ci-dessous (ici, x = 2 et y = 3) :Point | x : 2 | y : 3
-
Ajoutez une méthode
translater(tx, ty)
qui ajoutetx
àx
etty
ày
.
Exercice 2
- Créez une classe Compte modélisant un compte en banque.
La classe possède deux attributssomme
ettaux
correspondant à la somme placée sur le compte et au taux d'intérêt. Ces deux attributs doivent être affectés par le constructeur. -
Ajoutez une méthode
affiche()
qui affiche la somme et le taux comme ci-dessous :Compte | somme : 2000€ | taux : 2%
-
Ajoutez une méthode
depot(x)
qui ajoutex
à la somme sur le compte. - Ajoutez une méthode
retrait(x)
qui enlèvex
à la somme sur le compte.
Elle pourra renvoyer une erreur si la somme sur le compte devient négative et annuler alors l'opération. - Ajoutez une méthode
interets()
qui calcule les intérêts perçus en un an et les ajoute à la somme placée.
Pour rappel, les intérêts se calculent avec la formule :interets = taux × somme / 10
Exercice 3
- En vue de faire un site web recensant des citations de films, créez une classe Citation permettant d'enregistrer le texte de la citation et son film.
-
Créez une méthode
affiche()
permettant d'afficher la citation de cette façon :Si je connaissais le con qu’a fait sauter le pont !
-- On a retrouvé la 7e compagnie -
Ajoutez deux attributs
vote_plus
etvote_moins
pour enregistrer les votes des utilisateurs sur chaque citation. - Ajoutez deux méthodes
vote_pour()
etvote_contre()
qui permettent respectivement d'incrémentervote_plus
etvote_moins
. - Enfin, ajoutez une méthode
affiche_votes()
qui affiche le nombre de votes pour et le nombre de votes contre la citation.
Exercice 4 – Gestion d’une bibliothèque simplifiée
- Créez une classe Livre avec les attributs
titre
etauteur
.
Ajoutez une méthodeaffiche()
qui affiche un livre de la forme :
"Le Seigneur des Anneaux" de Tolkien
-
Créez une classe Bibliotheque qui contient un attribut
livres
initialisé à une liste vide.
Ajoutez une méthodeajoute_livre(livre)
qui permet d’ajouter un objetLivre
à la liste. -
Ajoutez une méthode
affiche()
qui affiche tous les livres de la bibliothèque avec un numéro devant chacun. Exemple :1 - "Le Seigneur des Anneaux" de Tolkien 2 - "Vingt mille lieues sous les mers" de Jules Verne
-
Ajoutez une méthode
recherche(titre)
qui affiche tous les livres dont le titre contient le mot recherché.
Exercice 5 – Jeu de dés
-
Créez une classe De avec un attribut
faces
(par défaut 6) et une méthodelancer()
qui renvoie un nombre aléatoire entre 1 etfaces
. -
Créez une classe Joueur avec les attributs
nom
etscore
(initialisé à 0).
Ajoutez une méthodejouer(de)
qui lance le dé passé en paramètre et ajoute le résultat au score du joueur. -
Créez une classe Partie avec les attributs
joueurs
(liste d’objetsJoueur
) etde
(un objetDe
).
Ajoutez une méthodetour()
qui fait jouer tous les joueurs une fois. -
Ajoutez une méthode
vainqueur()
qui affiche le nom du joueur avec le plus grand score.
Exercice 6 – Gestion d’un Panier d’Achat
- Créez une classe Article avec les attributs
nom
etprix
.
Ajoutez une méthodeaffiche()
qui affiche de la forme :
Pomme - 2€
-
Créez une classe Panier avec un attribut
articles
initialisé à une liste vide.
Ajoutez une méthodeajoute_article(article)
qui ajoute un objetArticle
à la liste. -
Ajoutez une méthode
total()
qui renvoie le prix total du panier.
Exercice 7 – Gestion d’un Étudiant
- Créez une classe Etudiant avec les attributs
nom
,prenom
etnotes
(liste vide par défaut). - Ajoutez une méthode
ajoute_note(note)
qui ajoute une note à la liste. - Ajoutez une méthode
moyenne()
qui calcule et renvoie la moyenne des notes de l’étudiant. - Ajoutez une méthode
affiche()
qui affiche :
Dupont Jean | Moyenne : 14.5
Exercice 8 – Gestion d’une Playlist
- Créez une classe Chanson avec les attributs
titre
etartiste
.
Ajoutez une méthodeaffiche()
qui affiche de la forme :
Imagine - John Lennon
- Créez une classe Playlist avec un attribut
chansons
initialisé à une liste vide.
Ajoutez une méthodeajoute_chanson(chanson)
pour ajouter une chanson. - Ajoutez une méthode
affiche()
qui affiche toutes les chansons avec leur numéro. - Ajoutez une méthode
recherche(mot)
qui affiche toutes les chansons dont le titre contient le mot recherché.
Exercice 9 – Gestion d’un Compteur
- Créez une classe Compteur avec un attribut
valeur
initialisé à 0. - Ajoutez une méthode
incremente()
qui augmente la valeur de 1. - Ajoutez une méthode
decremente()
qui diminue la valeur de 1. - Ajoutez une méthode
raz()
qui remet la valeur à 0. - Ajoutez une méthode
affiche()
qui affiche la valeur actuelle du compteur.
Exercice 10 – Gestion d’un Thermomètre
- Créez une classe Thermometre avec un attribut
temperature
initialisé à 20 (degrés Celsius). - Ajoutez une méthode
augmente(x)
qui augmente la température dex
. - Ajoutez une méthode
baisse(x)
qui diminue la température dex
. - Ajoutez une méthode
affiche()
qui affiche :
Température actuelle : 22°C