
/**
 * Classe punto.
 * 
 */

public class Punto
{
	// instance variables
	private double x;
	private double y;

	/**
	 * Constructor for objects of class Punto
	 */
	public Punto(double a, double b)
	{
		// initialise instance variables
		x = a;
		y = b;
	}
	
	/**
	 * Restituisce la coordinata x
	 * @return     la coordinata x 
	 */
	public double getX() {
	    return x;
	}

	/**
	 * Restituisce la coordinata y
	 * @return     la coordinata y 
	 */
	public double getY() {
	    return y;
	}
	
	/**
	 * Calcola la distanza tra due punti
	 * 
	 * @param  p   un altro punto
	 * @return     la distanza tra il punto this e p 
	 */
	public double distanza(Punto p)
	{
		return Math.sqrt(
		    Math.pow(x - p.x, 2) +
		    Math.pow(y - p.y, 2)
		);
	}
	
	/**
	 * Scambia e trasla due punti 
	 * 
	 * @param  dx  delta su x
	 * @param  dy  delta su y
	 * @return     void 
	 */
	public void trasla(double dx, double dy)
	{
		x += dx;
		y += dy;
	}
	
    /**
      * Restituisce una stringa che rappresenta il punto
      * 
      * @return una stringa
      */
     public String toString() {
         return "(" + x + ", " + y + ")";
     }
     

}
