Programmazione in Java - CEDACRI
a.a. 00/01
Lezione 4
Argomenti trattati
Uso di "Class Diagrams" per descrivere l'architettura dei programmi.
Un primo (semplice) esempio di architettura: View-Controller.
Input/Output interattivo.
Che cosa sono i costruttori di classe.
Frames e output grafico.
Relazioni tra classi: USARE, AVERE, ESSERE.
Ereditarieta' e subtyping.
Introduzione agli applet.
Uso di appletviewer.
Programmi utilizzati
-
dal Cap. 4
-
Input/Output interattivo
-
Uso di Dialog Box per l'input:
CelsiusToFahrenheit2.java
-
Uso di Dialog Box per l'output:
CelsiusToFahrenheit3.java
ESERCIZIO:realizzare un'applicazione ConfrontaTemperature
che riceve in input da due dialog box una temperatura in Celsius e una
temperatura in Fahrenheit, le confronta, e restituisce in output
su dialog box il risultato del confronto.
-
Output grafico
-
Introduzione ai Frames
-
Creazione di un frame invisibile:
FrameTest1.java
-
Creazione di un frame vuoto:
FrameTest2.java
-
Personalizzazione di un frame con l'ereditarieta'
(ATTENZIONE: gli esempi ilustrati in questo punto
hanno il pregio di essere
molto semplici, essi usano
il metodo paint per disegnare direttamente su un frame.
Questo stile di programmazione e' SCONSIGLIATO.)
-
Uno schema da riempire:
SchemaMyOwnFrame.txt
-
Un frame personalizzato
MyOwnFrame.java
e una classe che lo usa:
MyExample.java
DOMANDA:
potremmo dire che
la classe MyExample USA la classe MyOwnFrame,
mentre
la classe MyOwnFrame E' (o ESTENDE o EREDITA DA) JFrame.
Quale tra queste due relazioni (ESSERE e ESTENDERE) e' la piu' generale?
-
Un frame (una finestra grafica)
MyFrameWriter.java
e una classe che lo usa:
FrameTest3.java
-
Personalizzazione di un frame con l'ereditarieta' e uso dei Panel
(ATTENZIONE: gli esempi ilustrati in questo punto
NON SONO PRESENTI NEL LIBRO.
Sono una rielaborazione degli esempi del punto precedente.
Sono piu' complessi, non disegnano direttamente su di un frame, ma su
pannelli che sono aggiunti ai frame.
Questo e' lo stile di programmazione CONSIGLIATO.
Per ulteriori dettagli consultare il Capitolo 7 del libro
"Java 2 i fondamenti".)
-
Due schemi da riempire:
SchemaMioFrame.txt
e
SchemaMioPanel.txt
-
Un pannello personalizzato
MioPanel.java,
un frame personalizzato
MioFrame.java
che usa il pannello,
e una classe che usa il frame:
MioExample.java
ESERCIZIO:Modificare gli altri esempi del punto
precedente usando il nuovo stile.
-
Metodi per disegnare
(ATTENZIONE: gli esempi ilustrati in questo punto
usano lo stile di programmazione SCONSIGLIATO.)
-
Finestre grafiche per mostrare l'Output
-
Una finesta che mostra un orologio
ClockWriter.java
e l'applicazione che la usa:
ShowClock.java
-
Oggetti con uno stato: variabili di istanza
-
Una finestra/applicazione che dice quante volte e' stata ridisegnata:
FieldExample.java
-
Una finesta che mostra un orologio
ClockWriter2.java,
l'applicazione che la usa e' ottenuta modificando ShowClock.java
in modo da farle usare ClockWriter2.java invece di ClockWriter.java.
DOMANDA:potremmo dire che la classe ClockWriter USA la classe
GregorianCalendar, mentre la classe ClocKWriter2 HA UN GregorianCalendar.
Quale tra queste due relazioni (USARE e AVERE) e' la piu' generale?
In precedenza abbiamo anche incontrato la relazione ESSERE.
Quale tra le relazioni ESSERE e AVERE e' la piu' generale?
ESERCIZIO:Fare gli esecizi 1, 2, 3 prima della sezione 4.4.1
del libro. Per fare l'esercizio 3 usare
lo stile di programmazione CONSIGLIATO.
-
Una piccola applicazione che riassume
quello che abbiamo visto fino ad ora:
un frame che calcola e mostra le temperature
CelsiusToFahrenheitFrame.java
e un'applicazione che lo usa:
UseCelsiusToFahrenheitFrame.java
ESERCIZIO:riscrivere le applicazioni illustate in questo punto
usando lo stile di programmazione CONSIGLIATO.
-
"BEYOND THE BASICS"
-
A proposito di EREDITARIETA':
FrameTest4.java,
-
Un esempio, scritto in un cattivo stile di programmazione, che illustra lo
"scope" delle variabili (ATTENZIONE: e' un po' diverso da quello del libro):
Contrived.java,
-
Introduzione agli applet:
un semplice applet
MyApplet.java
e il file HTML che lo usa
(ATTENZIONE: il browser che avete a disposizione potrebbe non riconoscere
il package swing)
DisplayApplet.html
(disponibile anche come file di testo:
DisplayApplet.txt)
PRIMA DELLA LEZIONE SUCCESSIVA:
Leggere il "Summary" del Capitolo 4.
Leggere le note su "
Programmazione Object-Oriented
(a prescindere da Java)".
|