Algo & Prog 1 Python : TP séance 06
- Rendu du TP sur Ametice :
- Suivez les instructions pour le rendu du TP en mettant le bon numéro de séance dans le nom du répertoire.
- N'oubliez pas de rendre votre travail à la fin de la séance comme indiqué, même si vous n'avez pas fini la planche de TP, puis de rendre la version finale avant le début de la séance suivante.
Exercice 1. classes Sommet et SommetNom, héritage et surcharge
On se propose de créer un module sommet.py
, qui sera réutilisé dans l'exercice
suivant.
Pour chaque question, testez systématiquement votre code dans le programme
principal à la fin du fichier.
N'oubliez pas de protéger votre programme principal avec
une garde.
1.a. Classe Sommet
Déclarer une classe Sommet
, avec des attributs gelés x
et y
,
représentant les coordonnées du sommet.
Le constructeur de la classe reçoit en paramètres les coordonnées x
et y
et les stocke dans les attributs.
1.b. Représentation str de Sommet
Définir la méthode __str__
de manière à ce qu'elle renvoie les
coordonnées sous la forme d'une chaîne de caractères "(x,y)
".
1.c. Égalité de sommets
Définir la méthode __eq__
de manière à ce que deux sommets soient égaux
si leurs coordonnées sont respectivement égales.
Ne pas oublier de rajouter une garde, sous la forme d'un
test de compatibilité de types.
1.d. Classe SommetNom
Déclarer une classe SommetNom
qui dérive de la classe Sommet
.
Son constructeur reçoit en paramètre les coordonnées x
et y
d'un sommet,
ainsi que son nom ; il stocke le nom dans un attribut nom
de l'instance
courante, puis passe les coordonnées au constructeur de la classe mère.
1.e. Représentation str de SommetNom
Surcharger (redéfinir) la méthode __str__
de SommetNom
de manière à
renvoyer le nom et les coordonnées sous la forme d'une chaîne de caractères
"nom(x,y)"
.
1.f. Comparaisons
Peut-on comparer deux SommetNom
, ou encore un Sommet
et un SommetNom
,
avec l'opérateur ==
?
Écrire des tests dans le programme principal.
Exercice 2 : classe Polygone, surcharge et conteneur
Écrire un module polygone.py
, avec son programme principal à la fin,
protégé par une garde.
Le module polygone.py
importe le module sommet.py
dans
l'espace de noms courant.
2.a. Classe Polygone
Déclarer une classe Polygone
avec un attribut sommets
gelé.
Le constructeur initialise l'attribut sommets
à une liste vide.
2.b. Addition
Définir la méthode __add__
de manière à pouvoir ajouter un Sommet
à
un Polygone
avec l'opérateur +
:
la méthode renvoie un nouveau Polygone
, dont la liste sommets
a mémorisé
le sommet en dernière position.
2.c. Auto-addition
Définir la méthode __iadd__
de manière à rajouter un Sommet
dans un
Polygone
existant avec l'opérateur +=
.
2.d. Représentation
Surcharger la méthode __str__
de manière à renvoyer dans une chaîne de
caractères les coordonnées des sommets entre des [
et ]
et séparés par des
' ; '
.
2.e. Longueur
Définir la méthode __len__
afin de renvoyer le nombre de sommets.
2.f. Appartenance
Définir la méthode __contains__
de manière à ce que le résultat de
l'expression sommet in polygone
soit vraie si le sommet est égal à l'un des
sommets du polygone.
2.g. Classe Carré
Déclarer une classe Carré
qui dérive de Polygone
, dont le constructeur
reçoit les coordonnées x0
, y0
du coin inférieur gauche (dans un repère
direct), ainsi que la longueur d'un côté.
Le constructeur initialise ensuite la classe mère puis rajoute les 4
sommets du carré.