Definire la classe Punto2D che ha due coordinate intere x ed y. Incapsulare le due variabili definendo le corrispondenti funzioni "get" e "set". Scrivere anche una funzione "print" che stampa il punto. Scrivere anche un "main" che crea due punti e li stampa.
Suggerimento: e' simile alla classe Rectangle vista nei laboratori guidati.
Definire la classe Punto3D come sotto-classe di Punto2D che aggiunge la terza coordinata z. Incapsulare anche qui la variabile definendo le funzioni "get" e "set" corrispondenti. Re-implementare in modo opportuno la funzione "print". Scrivere anche un "main" che crea due punti, questa volta 3D, e li stampa.
Suggerimento: e' simile alla classe Cuboid, sotto-classe di Rectangle, vista nei laboratori guidati.
Modificare il "main" nella classe Punto3D nel seguente modo: dichiara due variabili di classe Punto2D, in una mette un nuovo oggetto di classe Punto3D e nell'altra un oggetto di classe Punto2D, poi stampa entrambe.
Riprendere la classe Punto2D e aggiungere una funzione di classe "distanza" che prende come argomenti due punti e restituisce la loro distanza calcolata con la nota formula d = sqrt( (x2-x1)^2 + (y2-y1)^2). Nel "main aggiungere il calcolo e la stampa della distanza tra i due punti.
Attenzione: questo esercizio e' lungo. Ci si puo' fermare alla prima parte.
Realizzare un'interfaccia grafica per l'esercizio 3, fatta dai seguenti componenti:
Rappresentazione ad albero:
Frame (BorderLayout) / \ / \ a nord Panel (GridLayout 2 a sud Panel (GridLayout righe x 4 colonne) 1 riga x 2 colonne | | | ... | | | | | | ... | | | 4 Label e 4 TextField Button Label a posizioni alternate
Rappresentazione a scatole cinesi:
+--------------------------------------+ | Panel a nord | |+------------------------------------+| Frame || Labelx1 TextField Labely1 TextField|| || Labelx2 TextField Labely2 TextField|| |+------------------------------------+| | Panel a sud | |+------------------------------------+| || Button Label || |+------------------------------------+| +--------------------------------------+
Fine prima parte: ci si puo' fermare qui.
Associare al bottone un action listener che prende le quattro stringhe presenti nei campi di input, le converte a interi, crea due punti, calcola la distanza e infine scrive la distanza nella etichetta accanto al bottone.
Nota: la conversione a intero puo' causare errore se le stringhe sono vuote o non rappresentano numeri interi.
Gestire l'eccezione con un blocco try-catch: se tutto va bene comportarsi come sopra, se invece si ha eccezione scrivere "errore" nell'etichetta che dovrebbe contenere la distanza.