temp
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# LAB-41: Classe Point (Punto)
|
||||
# Obiettivo: rappresentare un punto nel piano cartesiano e calcolare distanze.
|
||||
# Concetti chiave: attributi privati, metodi getter, math.hypot.
|
||||
|
||||
import math # Importiamo il modulo math per usare hypot()
|
||||
|
||||
|
||||
class Point:
|
||||
def __init__(self, x=0.0, y=0.0):
|
||||
# I parametri hanno valori di default (0.0), quindi si può creare
|
||||
# un punto nell'origine semplicemente scrivendo Point().
|
||||
# Il doppio underscore __ rende gli attributi privati (name mangling).
|
||||
self.__x = float(x) # convertiamo a float per sicurezza
|
||||
self.__y = float(y)
|
||||
|
||||
def getx(self):
|
||||
# Getter: restituisce la coordinata x.
|
||||
# Necessario perché __x è privato e non accessibile dall'esterno.
|
||||
return self.__x
|
||||
|
||||
def gety(self):
|
||||
# Getter: restituisce la coordinata y.
|
||||
return self.__y
|
||||
|
||||
def distance_from_xy(self, x, y):
|
||||
# Calcola la distanza tra questo punto e le coordinate (x, y) fornite.
|
||||
# math.hypot(a, b) calcola √(a² + b²), che è esattamente la formula
|
||||
# della distanza euclidea: d = √((x2-x1)² + (y2-y1)²)
|
||||
return math.hypot(self.__x - x, self.__y - y)
|
||||
|
||||
def distance_from_point(self, point):
|
||||
# Calcola la distanza tra questo punto e un altro oggetto Point.
|
||||
# Usiamo i getter dell'altro oggetto per accedere alle sue coordinate private.
|
||||
return self.distance_from_xy(point.getx(), point.gety())
|
||||
|
||||
|
||||
# --- TEST ---
|
||||
point1 = Point(0, 0) # origine
|
||||
point2 = Point(1, 1) # punto a distanza √2 dall'origine
|
||||
|
||||
# Distanza da point1 a point2: √((1-0)² + (1-0)²) = √2 ≈ 1.4142...
|
||||
print(point1.distance_from_point(point2)) # → 1.4142135623730951
|
||||
|
||||
# Distanza da point2 (1,1) a (2,0): √((2-1)² + (0-1)²) = √2 ≈ 1.4142...
|
||||
print(point2.distance_from_xy(2, 0)) # → 1.4142135623730951
|
||||
Reference in New Issue
Block a user