Aller au contenu principal

TP2 - Chasse aux bugs en POO

Objectif

Apprendre à reconnaître et corriger les erreurs courantes en programmation orientée objet.

Au préalable
  1. Faire le petit quiz :
Question 1 sur 10
🧠

Vérifie tes connaissances

Score: 0/10
Question 9

Les méthodes spéciales (dunders) doivent toujours commencer et finir par deux underscores.

  1. Créez un dossier POO (Programmation Orientée Objet) dans votre dossier Terminale NSI.
  2. Dans ce dossier, créez un fichier TP2_bugs.py.

Introduction

En POO, il est très fréquent de rencontrer des erreurs au moment de définir ou d’utiliser des classes.
L’objectif de ce TP est de se familiariser avec ces erreurs pour mieux les comprendre et apprendre à les corriger.


Exercice 1

On reprend la classe Pokemon :

class Pokemon :
def __init__(self, nom, pv):
nom = nom
pv = pv
  1. Créez un objet pikachu = Pokemon("Pikachu", 50).
  2. Essayez d’afficher pikachu.nom. Que se passe-t-il ?
  3. Expliquez pourquoi l’attribut n’existe pas.
  4. Corrigez le code pour que chaque objet ait bien ses attributs.

Exercice 2

On reprend la classe Voiture :


class Voiture :
def __init__(self, couleur):
self.couleur = couleur

def afficher():
print(self.couleur)
  1. Créez une voiture v1 = Voiture("Rouge") et appelez v1.afficher(). Quelle erreur apparaît ?
  2. D’où vient cette erreur ?
  3. Corrigez la méthode pour qu’elle fonctionne.

Exercice 3

On reprend la classe Instrument :

class Instrument :
def __init__(self, nom):
self.nom = nom

def nom(self):
return self.nom
  1. Créez un instrument clarinette = Instrument("Clarinette").
  2. Essayez d’appeler clarinette.nom(). Que se passe-t-il ?
  3. Expliquez pourquoi le programme ne fonctionne pas.
  4. Corrigez la classe pour séparer l’attribut et la méthode.

Exercice 4

class Boucle :
def __init__(self):
self.b = Boucle()

b1 = Boucle()
  1. Exécutez le code. Quelle erreur est affichée par Python ?
  2. Expliquez en quelques mots pourquoi cette erreur apparaît.
  3. Corrigez la classe pour éviter la récursion infinie.

Exercice 5

On reprend la classe Carre :

class Carre :
def __init__(self, cote):
self.cote = cote

c1 = Carre(4)
print(c1.longueur)
  1. Que se passe-t-il quand on exécute ce programme ?
  2. Comment Python appelle-t-il ce type d’erreur ?
  3. Corrigez le code pour que l’affichage fonctionne correctement.

Exercice 6 – Bonus : utiliser les erreurs pour progresser

Exception

En Python, une exception est une erreur que le programme renvoie quand il ne peut pas exécuter une instruction. Exemple : AttributeError, TypeError, RecursionError…

On peut intercepter ces erreurs grâce au mot-clé try/except.

try:
print(c1.longueur)
except AttributeError:
print("L'attribut n'existe pas !")
  1. Expliquez le rôle du bloc try/except.
  2. Pourquoi cela peut-il être utile dans des programmes plus complexes ?
  3. Rajoutez un try/except dans la classe Voiture pour éviter une erreur si on essaie d’accéder à un attribut inexistant.
Conclusion

Faire des erreurs en POO est normal : l’important est de comprendre le message d’erreur et d’apprendre à le corriger.