Laboratorio di sistemi Array di oggetti Java Adattamento dell'esercizio a pag. 142 del libro di testo /* * Poligono.java * * Creato il 3 dicembre 2007, 12.34 * * */ package poligonojavaapp; /** * * @author maurizio */ public class Poligono { // array di oggetti di tipo Punto Punto[] vertici; // numero dei vertici int numVertici = 0; // numero massimo prefissato dei vertici del poligono static final int MAX_VERTICI = 20; /** Crea una nuova istanza di Poligono */ public Poligono() { vertici = new Punto[MAX_VERTICI]; } /** Costruttore con parametro il numero di punti */ public Poligono(int n) { if (n>=1 && n <=MAX_VERTICI) vertici = new Punto[n]; else new Poligono(); } /** metodo per aggiungere un vertice al poligono */ public void aggiungiVertice(Punto p) { if (numVertici<MAX_VERTICI && p!=null) vertici[numVertici++] = p; } /** metodo per rimuovere l'ultimo vertice aggiunto */ public void rimuoviUtimoVertice() { if (numVertici>0) { numVertici--; vertici[numVertici]=null; } } poligono.pdf Pag. 1/5 Cozzetto © Laboratorio di sistemi Array di oggetti Java /** stampo la lista dei vertici */ public void stampaPoligono() { for ( int j=0; j < numVertici; j++ ) vertici[j].stampaPunto(); } /** metodo che restituisce un vertice del poligono, nota la posizione nella lista dei vertici */ public Punto getVertice(int i) { if (i>=0 && i<=numVertici-1) return vertici[i]; return null; } /** metodo che restituisce il perimetro del poligono */ public double perimetro() { double perim = 0.0; for (int j=0; j<numVertici-1; j++) perim = perim + vertici[j].distanza(vertici[j+1]); perim = perim + vertici[numVertici-1].distanza(vertici[0]); return perim; } } // fine classe Poligono poligono.pdf Pag. 2/5 Cozzetto © Laboratorio di sistemi Array di oggetti Java /* * Punto.java * * Creato il 9 novembre 2007, 12.01 * */ package poligonojavaapp; import java.util.Scanner; /** * * @author maurizio */ public class Punto { double x,y; /** Crea una nuova istanza di Punto */ public Punto() { x=0.0; y=0.0; } // costruttore con due parametri public Punto(double a, double b) { x=a; y=b; } // metodo statico per il calcolo del quadrato public static double quadrato(double a) { return a*a; } // restituisce la distanza tra due punti public double distanza(Punto p) { return Math.sqrt(quadrato(p.x-x)+quadrato(p.y-y)); } // acquisisce due valori da tastiera e restituisce un punto public static Punto leggiPunto(String messaggio) { Scanner sc = new Scanner(System.in); System.out.println(messaggio); double xx = sc.nextDouble(); double yy = sc.nextDouble(); return new Punto(xx,yy); } poligono.pdf Pag. 3/5 Cozzetto © Laboratorio di sistemi Array di oggetti Java // overridding di toString() public String toString() { return "Coordinate: ("+x+", "+y+")"; } } // “stampa” un punto public void stampaPunto() { System.out.println(toString()); } /* * Main.java * * Creato il 9 novembre 2007, 12.01 * */ package poligonojavaapp; /** * * @author maurizio */ public class Main { /** Crea una nuova istanza di Main */ public Main() { } /** * @param args gli argomenti della linea di comando */ public static void main(String[] args) { // fisso 5 vertici del poligono int n=5; // creo l'oggetto pentagono Poligono pentagono = new Poligono(n); "); // carico i punti del poligono for (int j=0; j<n; j++) { Punto p = Punto.leggiPunto("Dammi le coordinate x e y del punto "+(j+1)+": pentagono.aggiungiVertice(p); System.out.println("Aggiunto vertice "+(j+1)); } poligono.pdf Pag. 4/5 Cozzetto © Laboratorio di sistemi Array di oggetti Java // rimuovo l'ultimo vertice System.out.println("Rimuovo l'ultimo vertice"); pentagono.rimuoviUltimoVertice(); // rimuovo un altro punto System.out.println("Rimuovo l'ultimo vertice"); pentagono.rimuoviUltimoVertice(); System.out.println("Stampo i vertici del poligono"); pentagono.stampaPoligono(); System.out.println("Perimetro: "+pentagono.perimetro()); } } // fine classe Main Esecuzione Dammi le coordinate x e y del punto 1: 1 2 Aggiunto vertice 1 Dammi le coordinate x e y del punto 2: 3 4 Aggiunto vertice 2 Dammi le coordinate x e y del punto 3: 5 6 Aggiunto vertice 3 Dammi le coordinate x e y del punto 4: 7 8 Aggiunto vertice 4 Dammi le coordinate x e y del punto 5: 9 10 Aggiunto vertice 5 Rimuovo l'ultimo vertice Rimuovo l'ultimo vertice Stampo i vertici del poligono Coordinate: (1.0, 2.0) Coordinate: (3.0, 4.0) Coordinate: (5.0, 6.0) Perimetro: 11.313708498984761 BUILD SUCCESSFUL (total time: 13 seconds) poligono.pdf Pag. 5/5 Cozzetto ©