Laboratorio di sistemi Array di oggetti Java Adattamento dell

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 ©