Exercice : Classe point Rédigez la définition d'une classe “Points”. Les objets de cette classe doivent avoir : • une méthode d'affichage des coordonnées du point • une méthode de déplacement pour changer ces coordonnées. • une méthode dist qui calcule la distance entre 2 points. Nous supposons que la distance entre 2 points A (x 0, y 0 ) et B ( x 1, y 1 ) peut être calculée avec la formule : d ( A , B)=√( x 1−x 0)²+( y 1− y 0 ) ² Exercice 2 : Classe Vecteur 1. Création de la classe et de ses méthodes a) Créer une nouvelle classe Vecteur dont les attributs s’appellent x, y et z et qui contiendront chacune des coordonnées représentant un vecteur de R3 . L’afficheur doit permettre de renvoyer un vecteur sous la forme (1,2,3) b) Écrire une méthode norme() qui renvoie la norme (euclidienne) d’un vecteur. 2. Surcharge des méthodes a) Surcharger l’opérateur - pour la différence de vecteurs ; b) Surcharger les opérateurs == et = ! pour tester l’égalité ou la non égalité de vecteurs. Classe point from math import sqrt p1 = Point(2, 3) class Point(object): def __init__(self, x, y): self.x = x self.y = y p2 = Point(3, 3) def show(self): return self.x, self.y print(p1.show()) # (2, 3) print(p2.show()) # (3, 3) p1.move(10, -10) def move(self, x, y): self.x += x self.y += y print(p1.show()) print(p1.dist(p2)) # 13.45362404707371 def dist(self, pt): dx = pt.x - self.x dy = pt.y - self.y return math.sqrt(dx ** 2 + dy ** 2) Classe vecteur from math import sqrt et ses méthodes class Vecteur(): def __init__(self,x,y,z): self.x=x self.y=y self.z=z def affiche(self): return self.x , self.y, self.z renvoie un tuple donc (….) def norme(self): return sqrt((self.x)**2+(self.y)**2+(self.z)**2) v=Vecteur(1,2,3) print(v.affiche()) print(v.norme()) Surcharge de l’opérateur - # affichera (1, 2, 3) # affichera 3.7416573867739413 def __sub__(self,v): if type(v)==Vecteur: return Vecteur(self.x-v.x,self.yv.y,self.z-v.z) v=Vecteur(1,2,3) w=Vecteur(3,4,5) print(v.__sub__(w).affiche()) print((v-w).affiche()) Surcharge de l’opérateur == # (12, -7) #(-2, -2, -2) #(-2, -2, -2) def __eq__(self,v): if type(v)==Vecteur : return self.x==v.x and self.y==v.y and self.z==v.z def __ne__(self,v): if type(v)==Vecteur : return self.x != v.x or self.y !=v.y or self. z !=v.z v=Vecteur(1,2,3) w=Vecteur(1,2,3) print(v.__eq__(w)) print(v.__ne__(w))