# -*- encoding:utf8 -*-

# Ajouter une méthode distance à la classe de base Point

from math import sqrt                   # fonction racine carrée

# Définition de la classe Point

class Point(object):
    """ Définition d'un point géométrique """
    
    def __init__(self, coord_x=0, coord_y=0):       # la méthode constructeur
        """
        Point(float coord_x, float coord_y) --> Obj
        Retourne un objet de la classe Point dont les coordonnées sont <coord_x> et <coord_y>
        """
        self.x =coord_x                             # initialise les attributs d'instance
        self.y =coord_y                             # à coord_x et coord_y

    def affiche_point(self):
        """
        affiche_point() --> None
        Affiche les coordonnées du point sous la forme (x;y)
        """
        print("({};{})".format(self.x, self.y))

    def distance(self, P):
        """
        distance(Point P) --> float
        Retourne la distance séparant l'instance d'un point <P>
        """
        dx = abs(self.x - P.x)          # abs() => valeur absolue
        dy = abs(self.y - P.y)
        distance = sqrt(dx**2 + dy**2)  # théorème de Pythagore
        return distance

# Programme de test lancé uniquement si le fichier est lancé en tant
# que programme autonome et n'est pas utilisé comme un module de
# classes importées ailleurs

if __name__ == "__main__":

    # Définition de 2 points:
    A = Point(-3, 4)
    B = Point(2, 16)

    # Affichage des points:
    A.affiche_point()
    B.affiche_point()

    # Calcul et affichage de la distance les séparant:
    print("Distance =", A.distance(B))

    input("Appuyez sur une touche pour fermer la fenetre !")
