Telechargé par Abderrahim GHADI

1

publicité
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))
Téléchargement