Concetti introduttivi.
Caratteristiche del linguaggio Java, sua diffusione ed evoluzione.
Strutturazione di semplici programmi. Definizione di classi. Definizione e
assegnazione di variabili e attributi. Definizione di metodi e metodi
costruttori. Convenzioni di scrittura del codice.
Tipi di dato.
Tipi di dato elementari e relativi operatori. Tipi enum. Tipi di dato
strutturati. Operazioni su tipi strutturati e invocazione di metodi. Il
modificatore static. Classi e oggetti standard. Package. Classi standard
per I/O utente.
Definizione di metodi.
Argomenti formali e attuali. Overloading. Argomento implicito. Passaggio
degli argomenti. Variabili locali. Ciclo di vita delle variabili e degli oggetti.
Regole di visibilita'.
Strutture di controllo.
Strutture di selezione: if-else, switch. Cicli for, while, do-while. Cicli
annidati.
Progetto di classi.
Identificazione delle classi. Astrazione sui dati e sui metodi. Composizione
di classi. Information hiding e modificatori di accesso. Ereditarieta'.
Overriding di metodi. Polimorfismo. La classe Object. Classi astratte. La
nozione di interface.
Gestione delle eccezioni.
Definizione di eccezione. Classificazione e gerarchia di eccezioni.
Struttura try-catch. Dichiarazione throws.
Input/Output con Stream.
Stream e loro classificazione. Classi filtro. Stream di byte, di testo e di
oggetti. Stream con compressione.
Ricorsione.
Strutture dati ricorsive. Metodi ricorsivi. Confronto tra ricorsione e
iterazione.
Programmazione generica.
Classi e metodi generici. Parametri di tipo.
Strutture dati.
Array e Collection. Java Collection Framework. Algoritmi operanti su array
e collection. Cenni a struture dati standard: linked list, stack, queue, trees, binary tree.