Indice degli argomenti
Orario delle lezioni
INIZIO CORSO IN AULA INFORMATICA
Edificio di via Tigor 22 - Trieste
LUNEDI' 19 FEBBRAIO 2018
Orario delle lezioni
Libro di testo
Lun 12.00 - 14.00 Aula Informatica - Via Tigor Concetti di informatica e fondamenti di Java (6° edizione)
Mar 11.00 - 14.00 Aula Informatica - Via Tigor
Cay Horstmann - Apogeo
ISBN 9788891617378
Programma del corso e progetti per l'esame
Una prima prova di Java
Disegnare una faccia stilizzata
Scrivete un programma FacePrinter che, usando caratteri, visualizzi un viso, auspicabilmente migliore di questo:
////// (| o o |) || ^ || |_\_/_|
Usare i commenti per indicare quando vengono visualizzati i capelli, le orecchie, la bocca e così via.
NB: si usi l'istruzione Java System.out.println, visualizzando così il risultato nella finestra di output dell'ambiente di programmazione NetBeans.Cominciamo a lavorare con gli oggetti
Le classi e la loro interfaccia pubblica
I tipi di dati fondamentali
Strutture condizionali
Cicli
Array ed array list
Esecuzione di un'applicazione Java
Un semplice modo di eseguire un'applicazione Java è creare un file comandi (con suffisso .bat) che provveda a lanciare l'eseguibile java.exe appartenente al Java Runtime Environment (JRE). Tale file richiama la classe principale, contenente il metodo main, ed a cascata le eventuali altre classi dell'applicazione (i file .class dei bytecode).
Un altro sistema è compattare tutte le classi che compongono l'applicazione in un file di tipo executable jar, con suffisso .jar. Tale file viene creato automaticamente da NetBeans e si può trovare nella sottocartella denominata dist del progetto. Tale file è associato a in Windows all'eseguibile "lanciatore" javaw.exe, in modo che facendo doppio click sul file . jar l'applicazione viene eseguita.
Esistono poi anche dei compilatori, che producono un vero e proprio file eseguibile, compatibile con la piattaforma richiesta, a partire dai file .class di un progetto Java.
Si provino gli esempi allegati (il primo va decompattato in una cartella).
Un esempio di interfaccia
Le interfacce consentono in molti casi di rendere il codice più generale e maggiormente riutilizzabile.
I seguenti esempi, che fanno riferimento al libro di testo, consentono di osservare come l'interfaccia definita nel terzo esempio permetta di risolvere con un codice comune i due problemi risolti con codici distinti nei primi due esempi.
Gestire eventi sul frame
Negli esempi che seguono, che fanno riferimento al libro di testo, viene visualizzato un semplice JFrame contenente un pulsante. Al click sul pulsante viene lanciato un evento azione, che fa apparire una semplice finestrella che conta il numero di click eseguiti.
I tre esempi illustrano tre modalità diverse di gestire l'evento azione, utilizzando una classe che implementa l'interfaccia ActionListener. Precisamente:
- attraverso una classe separata;
- attraverso una classe interna con nome;
- attraverso una classe interna anonima.
Esempio di gestione del mouse
Nel programma allegato, che fa riferimento al libro di testo, viene illustrato un semplice esempio di gestione del mouse. Lanciando il programma apparirà un JFrame con un rettangolo. Eseguendo un click del mouse sul JFrame, il rettangolo si sposterà nella posizione indicata dal click.
- Nel precedente esempio la gestione del mouse è stata affidata ad una classe interna con nome. Si provi a modificare l'esempio affidando la gestione del mouse ad una classe separata (che può essere una classe distinta o anche lo stessa classe che contiene il metodo paintComponent). Si provi anche a gestire lo stesso programma con una classe interna anonima.
Gestire eventi di temporizzazione
Nel programma allegato, che fa riferimento al libro di testo, viene illustrato come gestire eventi di temporizzazione che consentono di realizzare semplici animazioni.
Lanciando il programma, verrà visualizzato un JFrame con un rettangolo in movimento. La temporizzazione del movimento avviene attraverso un oggetto della classe Timer: ad intervalli prefissati vengono lanciati degli eventi di tipo azione, che vengono gestiti dal programma attraverso una classe interna che implementa l'interfaccia ActionListener e nel cui metodo actionPerformed viene eseguito il movimento del rettangolo.
- Si provi a modificare il programma in modo che sia una classe separata a reagire agli eventi di tipo azione lanciati dal Timer.
Un semplice esempio di progetto con interfaccia
Un esercizio su interfacce ed ereditarietà
Si crei un progetto NetBeans contenente due classi: Square e Circle. La classe Square sarà una sottoclasse della classe Rectangle2D.Double, mentre la classe Circle sarà una sottoclasse della classe Ellipse2D.Double. Entrambe implementeranno un'interfaccia Measurable contenente i due metodi getArea e getPerimeter, che consentiranno di calcolare area e perimetro delle due figure geometriche.
Si realizzi anche una semplice classe di test che consenta di verificare il funzionamento delle due classi sopra citate.
I rettangoli che rimbalzano
Si riconsideri il programma presentato nella sezione "Gestire eventi di temporizzazione" e lo si modifichi in modo da far rimbalzare il rettangolo al raggiungimento dei bordi del frame.
Si provi poi a modificare ancora il programma gestendo il movimento di più rettangoli colorati in contemporanea. Si consenta all'utente di scegliere il numero di rettangoli iniziale e di variarlo nel corso dell'esecuzione. Si consenta anche all'utente di gestire la velocità del movimento variando l'intervallo di temporizzazione del timer.
Qualche esercizio ancora