Laboratorio di sistemi Classi Punto e Retta Java [NetBeans] Dato il seguente diagramma UML, progettare le classi corrispondenti /* * Punto.java * * Created on 1 febbraio 2007, 20.10 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package puntorettaconsoleapp; /** * * @author standard */ public class Punto { protected double x,y; /** Costruttore: punto origine del sistema di assi */ public Punto() { x=0; y=0; } /** Overloading del Costruttore */ public Punto(double a, double b) { x=a; y=b; } PuntoRetta.pdf Pag. 1/4 Cozzetto (C) Laboratorio di sistemi Classi Punto e Retta Java [NetBeans] /** Verifica se due punti sono uguali */ public boolean equals(Punto p) { return (x==p.x && y==p.y); } /** Overloading del metodo toString */ public String toString() { return "("+x+", "+y+")"; } /** Stampa le coordinate del punto */ public void stampaPunto() { System.out.println("Coordinate del punto: "+this.toString()); } /** Distanza tra due punti */ public double distanza(Punto p) { return Math.sqrt((x-this.x)*(x-this.x)+(y-this.y)*(y-this.y)); } } // fine classe Punto PuntoRetta.pdf Pag. 2/4 Cozzetto (C) Laboratorio di sistemi Classi Punto e Retta Java [NetBeans] /* * Retta.java * * Created on 1 febbraio 2007, 20.13 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package puntorettaconsoleapp; /** * * @author standard */ public class Retta { protected Punto p0; protected double m; /** Costruttore nullo */ public Retta() { //nulla } // Overloading del costruttore nullo public Retta(Punto p0, double m) { this.p0=p0; this.m=m; } /** Overloading del costruttore precedente: individua la rella passante per due punti */ public Retta(Punto p1, Punto p2) { this(p1,(p2.y-p1.y)/(p2.x-p1.x)); } /** Overloading del costruttore: individua la retta * di coefficiente angolare c e termine noto t */ public Retta(double c, double t) { this(new Punto(0,t),c); } /** Stabilisce se il punto p appartiene alla retta */ public boolean appartiene(Punto p) { return (p.y-p0.y==m*(p.x-p0.x)); } /** Verifica se due rette sono uguali */ public boolean equals(Retta r) { return (this.appartiene(r.p0) && this.parallela(r)); } PuntoRetta.pdf Pag. 3/4 Cozzetto (C) Laboratorio di sistemi Classi Punto e Retta Java [NetBeans] /** Stabilisce il parallelismo tra rette */ public boolean parallela(Retta r) { return (r.m==this.m); } /** Restituisce il coefficiente angolare della retta */ public double coefficienteAngolare() { return m; } /** Restituisce il termine noto */ public double termineNoto() { return p0.y-m*p0.x; } /** Trova il punto di intersezione tra due rette se esiste */ public Punto intersezione(Retta r) { if (!this.parallela(r)) { double x=(this.termineNoto()-r.termineNoto())/(r.coefficienteAngolare()this.coefficienteAngolare()); double y=r.coefficienteAngolare()*x+r.termineNoto(); return new Punto(x,y); } else return null; } /** Stabilisce se la retta è parallela all'asse delle X */ public boolean isParallelaAsseX() { return (m==0); } /** Stabilisce se la retta è parallela all'asse delle Y */ public boolean isParallelaAsseY() { return (m==Double.POSITIVE_INFINITY || m==Double.NEGATIVE_INFINITY); } /** Punto di intersezione con l'asse delle X, se esiste */ public Punto intersezioneAsseX() { if (!this.isParallelaAsseX()) return new Punto(p0.x-p0.y/m,0); else return null; } /** Punto di intersezione con l'asse delle Y, se esiste */ public Punto intersezioneAsseY() { if (!this.isParallelaAsseY()) return new Punto(0,p0.y-p0.x*m); else return null; } } // fine classe Retta PuntoRetta.pdf Pag. 4/4 Cozzetto (C)