Le point cartésien 2D

Contexte

Dans le plan, un point peut être représenté par ses coordonnées cartésiennes x et y.

Environnement de travail

Pour cet exercice, vous devez utiliser en priorité le fichier squelette ex12-point2d.py. IMPORTANT : Enregistrez le avec Right Click + Save Link As... pour conserver l’encodage.

Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :

  1. Imports et définition des variables globales ;
  2. Définition des fonctions secondaires ;
  3. Définition de la fonction principale ;
  4. Appel protégé de la fonction principale.

Objectifs

L’objectif est d’écrire une classe Point2D :

- dont les attributs sont ``x`` et ``y``, les coordonnées cartésiennes du point ;
- et possédant :
    - une méthode ``move()`` avec 2 arguments ``dx`` et ``dy`` permettant de déplacer le point de telle sorte que ses nouvelles coordonnées soient ``(x+dx, y+dy)``.
    - une méthode :meth:`distance` prenant en argument un autre ``Point2D`` et retournant la distance euclidienne entre le point courant et celui passé en argument.

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main() et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).

Informations complémentaires

Le constructeur doit permettre de créer un point de coordonnées (0,0) si aucun paramètre ne lui est passé.

La méthode move() ne retourne rien (None).

Pour le calcul de distance, il est efficace de faire appel à la fonction math.hypot().

Redéfinir la méthode __str__() pour un affichage pertinent lors de l’appel à print().

Doctests

Une fois la classe opérationnelle, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal.