Documento guida - Dipartimento di Informatica e Sistemistica

annuncio pubblicitario
QUINTA ESERCITAZIONE DI LABORATORIO
Informatica Grafica – Ingegneria Edile Architettura
3/2/2003 – a.a. 2002/2003
Introduzione
Le classi e gli oggetti sono componenti fondamentali de i linguaggi orientati agli oggetti (object-oriented). Gli oggetti sono componenti software che
contengono dati ed algoritmi, che possono essere sfruttati a loro volta da altri oggetti in un programma. Una classe specifica i dati e gli algoritmi
associati ad una categoria di oggetti. Inoltre permette di creare oggetti da utilizzare nei programmi. Lo scopo di questa esercitazione è vedere un primo
esempio di classe e capire alcuni aspetti importanti nella definizione di classi e nell’utilizzo di un oggetto.
La classe Triangoli
ESERCIZIO: Realizzare una classe PrimoTriangolo che contenga come dati le coordinate dei vertici di un triangolo e come algoritmi i metodi per il
calcolo dell’area, del perimetro e del baricentro. Si assuma di lavorare in uno spazio bidimensionale. Realizzare inoltre un’altra classe
TestPrimoTriangolo che permetta di collaudare la classe PrimoTriangolo.
Il codice da cui partire
L’esercizio di cui sopra è parzialmente risolto. Il codice della classe PrimoTriangolo sostituendo ai commenti nel corpo dei metodi le istruzioni che
realizzano le operazioni descritte nei commenti stessi. La classe TestPrimoTriangolo è già completa.
FILE PrimoTriangolo.java
import java.awt.Point;
public class PrimoTriangolo {
public PrimoTriangolo() {
/*
inizializza le coordinate dei vertici del triangolo come segue
v1=(X1,Y1), v2=(X2,Y2), v3=(X3,Y3)
*/
}
public double perimetro(){
/*
calcola il perimetro del triangolo in funzione delle coordinate
dei vertici e ne restituisce il valore
*/
return 0;
}
public double area (){
/*
calcola l'area del triangolo in funzione delle coordinate
dei vertici e ne restituisce il valore
*/
return 0;
}
public Point baricentro(){
/*
calcola le coordinate del baricentro del triangolo in funzione delle coordinate
dei vertici e ne restituisce i valori in un oggetto Point
*/
return new Point();
}
private final int X1=100, X2=200, X3=300, Y1=200, Y2=400, Y3=600; // coordinate dei vertici
private Point v1, v2, v3;
// i vertici del triangolo
}
La classe PrimoTriangolo utilizza le classi java.lang.Math e java.awt.Point che contengono rispettivamente utilità per il calcolo di funzioni
matematiche standard e per la creazione e modifica di un oggetto punto di coordinate bidimensionali con valori interi rispettivamente. Diversamente
dalla classe Point, la classe Math è inclusa automaticamente in ogni programma java assieme a tutto il pacchetto java.lang.*. Tra i vari metodi presenti
nella classe Math vi sono quelli per il calcolo della radice quadrata e della potenza
public static double sqrt(double a):restituisce la radice quadrata di a
public static double pow(double a,double b): restituisce ab
La classe Point permette di istanziare un oggetto punto di coordinate intere specificandone le coordinate attraverso il costruttore con due argomenti.
public Point(int x,int y): costruisce un punto di coordinate (x,y)
E’ possibile accedere alle coordinate x ed y di un oggetto Point direttamente, essendo quest’ultime proprietà pubbliche e quindi appartenenti
all’interfaccia della classe. Alternativamente è possibile ottenerne i valori tramite i seguenti metodi accessori.
public double getX(): restituisce le coordinate x del punto in doppia precisione.
public double getY(): restituisce le coordinate y del punto in doppia precisione.
All’interno della classe PrimoTriangolo sono dichiarati, ma non ancora implementati

Un costruttore senza argomenti che dovrebbe inizializzare i vertici v1, v2 e v3 del triangolo come specificato dalle costanti X1, X2, X3, Y1,
Y2, Y3.

Un metodo che dovrebbe calcolare l’area del triangolo partendo dalle coordinate dei vertici v1,v2,v3

Un metodo che dovrebbe restituire le coordinate del baricentro del triangolo in un oggetto di tipo Point sfruttando i valori delle coordinate
dei vertici v1, v2, v3.

Le costanti intere X1, X2, X3, Y1, Y2, Y3 da utilizzare nel costruttore per inizializzare i vertici v1, v2, v3

Le variabili istanza v1, v2, v3 di tipo Point da utilizzare per contenere i valori delle coordinate dei vertici corrispondenti.
Lo scopo dell’esercitazione è implementare i metodi scrivendone il corpo.
FILE TestPrimoTriangolo.java
public class TestPrimoTriangolo {
public static void main(String[] args) {
System.out.println("***BENVENUTI AL PROGRAMMA TRIANGOLI*************************\n");
PrimoTriangolo triangolo=new PrimoTriangolo();
double area= triangolo.area();
double perimetro= triangolo.perimetro();
double ascissaBaricentro= triangolo.baricentro().x;
double ordinataBaricentro= triangolo.baricentro().y;
System.out.print("L'area del triangolo e'\t\t");
System.out.println(area);
System.out.print("Il perimetro del triangolo e'\t");
System.out.println(perimetro);
System.out.print("L’ascissa del baricentro e’\t");
System.out.println(ascissaBaricentro);
System.out.print("L’ordinata del baricentro e’\t");
System.out.println(ordinataBaricentro);
System.out.println("\n************ARRIVEDERCI*************************************");
}
}
La classe TestPrimoTriangolo che permette di testare oggetti della classe PrimoTriangolo contiene il solo metodo main. Il main di
TestPrimoTriangolo è strutturato come segue. Dopo una stampa su console di benvenuto, istanzia un’oggetto di tipo PrimoTriangolo, definisce ed
inizializza delle variabili locali sfruttando i metodi pubblici della classe PrimoTriangolo area, perimetro e baricentro. I primi due metodi restituiscono
dei valori primitivi l’ultimo invece un oggetto di tipo Point. Per ottenere le coordinate x ed y dell’oggetto Point si accede direttamente ai campi x ed y
resi pubblici nell’interfaccia della classe. Successivamente stampa una serie di messaggi su console che visualizzano i valori dell’area, del perimetro e
delle coordinate del baricentro del triangolo istanziato sfruttando i valori dell’area, del perimetro e delle coordinate del baricentro immagazzinati nelle
variabili locali.
Passi dell’esercitazione
Le classi parzialmente realizzate possono essere compilate ed eseguite. Inizialmente stampano valori nulli per l’area, il perimetro e le coordinate del
baricentro del triangolo. Lo scopo dell’esercitazione è modificarli passo passo fino a renderli completamente aderenti alle specifiche dell’esercizio.
1.
Scaricare dal sito dell’esercitazione i file TestPrimoTriangolo.java e PrimoTriangolo.java e salvarli in una stessa cartella. Aprire e
compilare in ordine PrimoTriangolo.java e TestPrimoTriangolo.java con JCreator. Lanciare TestPrimoTriangolo.class da JCretor.
Se il programma è stato eseguito e ha mostrato in output valori nulli per l’area, il perimetro e le coordinate del baricentro passare al punto successivo
altrimenti chiedere aiuto all’esercitatore.
2.
Sostituire al corpo dei metodi PrimoTriangolo() e area() il codice che realizza le azioni specificate nei rispettivi commenti. Compilare in
ordine PrimoTriangolo.java e TestPrimoTriangolo.java e lanciare TestPrimoTriangolo.class.
Se il programma è stato eseguito ed ha mostrato in output il valore corretto dell’area del triangolo passare al punto successivo altrimenti chiedere aiuto
all’esercitatore.
3.
Sostituire al corpo del metodo perimetro() il codice che realizza le azioni specificate nel rispettivo commento. Compilare in ordine
PrimoTriangolo.java e TestPrimoTriangolo.java e lanciare TestPrimoTriangolo.class.
Se il programma è stato eseguito e ha mostrato in output il valore corretto del perimetro passare al punto successivo altrimenti chiedere aiuto
all’esercitatore. Si fa notare che le coordinate del baricentro di un triangolo sono semplicemente la media aritmetica delle coordinate dei tre vertici.
4.
Sostituire al corpo del metodo baricentro() il codice che realizza le azioni specificate nel rispettivo commento. Compilare in ordine
PrimoTriangolo.java e TestPrimoTriangolo.java e lanciare TestPrimoTriangolo.class.
Se il programma è stato eseguito e ha mostrato in output il valore corretto del baricentro passare al punto successivo altrimenti chiedere aiuto
all’esercitatore.
5.
Ottimizzare il codice di PrimoTriangolo.java definendo un nuovo metodo privato e statico che calcola la distanza tra due punti in funzione
delle loro coordinate e sfruttarlo per snellire il codice dei metodi per il calcolo del perimetro e dell’ area. Compilare in ordine
PrimoTriangolo.java e TestPrimoTriangolo.java e lanciare TestPrimoTriangolo.class.
Se il programma è stato eseguito correttamente l’esercitazione è terminata altrimenti chiedere aiuto all’esercitatore.
Scarica