TP2 - Vérification des erreurs
Objectif
Découvrir des erreurs possibles en POO à ne pas répéter.
Au préalable
- Se créer un dossier
Terminale NSI
sur votre ordinateur ou clé USB - Dans ce dossier, créer un dossier
POO
(Programmation Orientée Objet)
Sur EduPython ou autre instance python, faire :
- Créer un nouveau fichier en cliquant sur l'icône
📄
, ou en appuyant surCTRL
+N
- Enregistrer le fichier sous le nom
TP2_bugs
en cliquant sur l'icône💾
, ou en appuyant surCTRL
+S
TP
La réécriture du code se fait sur python. Les explications aux questions se font soit sur papier, soit sous la forme de commentaire dans le programme.
La Programmation d'objets peut être sujette à la présence d'erreur lors de la conception des classes, ainsi que par l'utilisation des attributs et méthodes. Ce TP a pour but d'essayer de comprendre la présence de ces erreurs, pour ne pas avoir à les reproduire dans les activités et projet.
Exercice 1
On donne la classe suivante :
class test :
def __init__(self):
test = 0
- Peut-on se servir de la variable
test
du constructeur ? Pourquoi ?
On rajoute ceci dans le main :
t1 = test()
t2= test()
print("Test :",t1)
- A quoi correspondent
t1
ett2
? - Qu'affiche le print ? Expliquer en quelques mots le résultat obtenu.
- La fonction
isinstance(objet,class)
permet de retourner un booléen vérifiant siobjet
est bien une instance declass
. Rajouter une ligne affichant si t1 est une instance de test, et si t2 est une instance de list. - Modifier la classe pour que chaque objet ait un
attribut
ayant pour valeur 0, et modifier le print pour afficher la valeur de l'attribut det1
.
Pour finir, on écrit ce code :
class test :
def __init__(self):
self.t = test()
t1 = test()
On obtient cette erreur :
- Essayer de déterminer l'origine de cette erreur, puis expliquer en quelques mots pourquoi le constructeur crée une erreur.
Exercice 2
On donne la classe suivante :
class test2 :
def __init__(self,i):
self.i = 12
i = 15
def i():
print(self.i)
- Peut-il y avoir la présence de 2 variables
i
dans le constructeur ? - Dans le main, créer un objet de classe
test2
, et appeler la méthodei()
de cet objet. Que se passe-t-il ? - Renommer la fonction en
fonctionTest
et modifier l'appel dans le main. Quelle erreur s'affiche ? - Rajouter le paramètre manquant de la fonction et exécuter à nouveau le programme.