Aller au contenu

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é.