esercitazione di laboratorio - Dipartimento di Ingegneria informatica

OTTAVA ESERCITAZIONE DI LABORATORIO
Informatica Grafica – Ingegneria Edile Architettura
31/3/2003 – a.a. 2002/2003
RIFERIMENTO: Horstmann capp. 4 e 5
Introduzione
Gli argomenti di questa esercitazione sono
 Modifica della trasformazione del contesto grafico
 I/O (input/output) tramite JOptionPane
 Utilizzo istruzione if else
 Riutilizzo del codice sviluppato nelle ultime due esercitazioni
Esercizio
ESERCIZIO 1: Progettare una classe Triangolo con le seguente interfaccia pubblica.

Un costruttore di default in grado di istanziare un triangolo degenere con i tre vertici coincidenti con
l’origine

Un costruttore con 6 parametri x1,x2,x3,y1,y2,y3 in grado di istanziare un oggetto triangolo con vertici di
coordinate (x1,y1), (x2,y2), (x3,y3).

Un metodo che, ricevendo un parametro di tipo Graphics2D, disegni un oggetto triangolo nel contesto
grafico specificato dal parametro.

Un metodo senza parametri che restituisca l’area di un oggetto triangolo.

Un metodo senza parametri che restituisca il perimetro di un oggetto triangolo.

Un metodo senza parametri che restituisca il baricentro di un oggetto triangolo.

Un metodo senza parametri che verifichi se un triangolo è retto restituendo un tipo booleano.

Un metodo senza parametri che verifichi se un triangolo è ottusangolo restituendo un tipo booleano.
Per la classe Triangolo si richiede di generare la documentazione ipertestuale dopo aver commentato
opportunamente il codice.
Scrivere inoltre un’applet, DisegnaTriangolo, che, utilizzando la precedente classe, permetta di disegnare un
triangolo, definito all’interno di una finestra in coordinate utente, in una porzione di finestra di dispositivo
(viewport) oltre a stampare su console le principali caratteristiche del triangolo disegnato, ovvero se il triangolo è
degenere (vertici allineati), se è retto/ottusangolo/acutangolo, il valore dell’area e del perimetro e le coordinate del
baricentro.
Il codice da cui partire
Per risolvere l’esercizio precedente bisognerà riutilizzare il codice sviluppato nelle due ultime esercitazione,
combinandolo, riadattandolo ed ampliandolo alle nuove specifiche. In particolare l’esercizio si intenderà
completamente risolto una volta ottenuti i seguenti file.
Una classe Triangolo.java con un’interfaccia pubblica come specificata nell’esercizio, opportunamente
commentata per la generazione della documentazione ipertestuale.
2. Un’applet DisegnaTriangoli.java in grado di
a. acquisire da utente le coordinate dei vertici del triangolo, i parametri delle finestre di utente e di
viewport,
b. istanziare un oggetto triangolo con le coordinate fornite in input e calcolarne le principali proprietà
sfruttando i metodi pubblici di una classe Triangolo.java,
c. effettuare la trasformazione di coordinate del contesto grafico
d. disegnare il triangolo sfruttando il metodo pubblico di disegno disponibile nella classe
Triangolo.
Si fa notare che i primi due passi vanno implementati nel costruttore dell’applet o nel metodo init() affinché
non vengano rieseguiti ad ogni modifica della finestra dell’applet. Gli ultimi due passi invece che
riguardando il disegno dell’applet vanno implementati nel metodo paint per assicurare che ad ogni modifica
della finestra dell’applet, il suo contenuto venga ridisegnato correttamente.
1.
3.
Un file DisegnaTriangoli.htm con un breve codice html in grado di caricare un’applet
DisegnaTriangoli.class.
4.
Un insieme di file html di documentazione della classe Triangoli, ottenibili lanciando dal prompt del DOS il
comando javadoc Triangolo
Il codice del punto 1 viene fornito parzialmente realizzato ed è scaricabile dal sito. Per completarne il codice
bisognerà implementare i metodi
public void disegna(Graphics2D g)
public boolean isRetto()
public boolean isOttusangolo()
Il codice dei restanti metodi è già realizzato. I commenti per la generazione della documentazione ipertestuale sono
già stati inseriti. Si fa notare che rispetto al codice presentato nell’esercitazione del 3/3/2003 il tipo Point è stato
sostituito con il tipo Point2D.Double del pacchetto java.awt.geom.*. Il metodo privato ausiliario per il
calcolo della distanza tra due punti è stato eliminato e si è utilizzato il metodo distance già disponibile
nell’interfaccia pubblica della classe Point2D.Double. I costruttori sono stati inoltre modificati per adattarli alle
specifiche dell’esercizio.
Il codice del punto 2 è reso disponibile già completamente realizzato e scaricabile dal sito dell’esercitazione.
Il codice del punto 3 è reso disponibile già completamente realizzato e scaricabile dal sito dell’esercitazione.
La documentazione ipertestuale va generata col comando javadoc Triangolo dal prompt del DOS come
spiegato nell'esercitazione del 17/2/2003.
I passi dell’esercitazione
1.
Scaricare i codici di cui ai punti 1-3 della sezione precedente salvandoli in una stessa cartella.
2.
Aprire i tre file da JCreator, compilare i codici Triangolo.java e DisegnaTriangoli.java, ed
eseguire DisegnaTriangoli.htm.
3.
Implementare il metodo disegna della classe Triangolo, compilare (correggendo eventuali errori) ed
eseguire il file DisegnaTriangoli.htm.
4.
Implementare i metodi isRetto ed isOttusangolo1 della classe Triangolo, compilare
(correggendo eventuali errori) ed eseguire il file DisegnaTriangoli.htm.
5.
Generare la documentazione ipertestuale della classe Triangolo.
6.
Se è rimasto del tempo, introdurre dei controlli di consistenza dell’input nel codice dell’applet. In
particolare, verificare che per i parametri della finestra utente ed il viewport valgano le seguenti condizioni:

x1<x2

y1<y2

0<=xmin<xmax<=1

0<=ymin<ymax<=1
Nel caso in cui una di queste condizioni sia violata il programma deve terminare con un opportuno
messaggio d’errore. Compilare il codice e provare i controlli di consistenza.
1
Si ricorda che un triangolo retto ha un angolo retto e due acuti, un triangolo ottusangolo ha un angolo ottuso e due
acuti, un triangolo acutangolo ha 3 angoli acuti. E’ facile verificare se un triangolo possiede angoli retti o ottusi
conoscendo le lunghezza dei tre lati. Infatti, sia dato un triangolo con lati a,b,c e con angolo  che si oppone al lato
a. Se a2=b2+c2 l’angolo  è retto, se a2<b2+c2 l’angolo è acuto, e se a2>b2+c2 l’angolo è ottuso.