Linguaggio di programmazione Java Standard Edition 60 ore
Prerequisiti: conoscenze base di informatica, saper usare il PC. Obiettivi: conoscere i componenti principali di JavaSE (Standard Edition), capire le tecniche fondamentali della programmazione orientata agli oggetti, imparare a programmare in Java. 1. Tre componenti di Java:
- OOPL (Object Oriented Programming Language),
- JVM (Java Virtual Machine), JRE (Java Runtime Environment);
- Java2 Platform - librerie di classi (packages).
3. Scrittura, compilazione ed esecuzione del primo programma in Java: sequenza di esecuzione di un programma in Java, funzionamento di class loader, bytecode verifier, security manager, garbage collector.
4. Costanti e variabili in Java; rappresentazione dei numeri interi (binary fixed point) e a virgola mobile (binary floating point); rappresentazione dei numeri negativi in complemento a due; rappresentazione (codifica) dei dati numerici ed alfanumerici, codice ASCII. Operatore di assegnazione, r-value ed l-value.
5. Tipi di dato semplici in Java: interi (byte, short, int, long), a virgola mobile (float, double), carattere (char, codifica UNICODE), booleano (boolean). Conversione implicita (promotion) ed esplicita (cast) dei tipi semplici, operatore di cast.
6. Operatori aritmetici, di incremento e di decremento, relazionali (di confronto), logici (booleani), tavole di verità; operatore condizionale (ternario); operatori di assegnazione composti; uso degli operatori + e += con la classe String; precedenza degli operatori ed uso delle parentesi; utilizzo delle sequenze di escape (escape sequences); operatori bitwise e corrispondenti operatori di assegnazione composti.
7. Istruzioni di selezione condizionale:if, if-else, switch, istruzioni break e continue.
8. Cicli: while, for, do-while, istruzione continue.
9. Classi: definizione di una classe, accesso ai membri (campi e metodi).
10. Arrays, dichiarazione ed inizializzazione degli arrays monodimensionali. Array implementati come oggetti, variabile d'istanza (campo) length. Utilizzo dei metodi statici della classe java.util.Arrays.
11. Dichiarazione ed inizializzazione delle stringhe. Utilizzo dei metodi della classe java.lang.String.
12. Array numerici multidimensionali, array di stringhe; classi Wrapper dei tipi semplici;
13. Nozioni sui campi e metodi delle classi java.lang.Math.
14. Flussi (streams) standard in Java, classe java.lang.System, campi (oggetti) in, out, err; metodi println() e print() della classe PrintStream. Classe java.lang.Runtime.
15. Oggetti e riferimenti a oggetti; differenza fra il metodo equals() della classe Object e l'operatore = = .
16. Passaggio dei parametri posizionali dalla linea di comando ad un'applicazione Java.
17. Eccezioni, gestione delle eccezioni, clausola throws; blocchi try e clausole catch e finally; istruzione throw.
18. Classi principali del pacchetto java.io, metodi read() e write(); input da tastiera, bufferizzazione.
19. Utilizzo di sottoclassi della classe Reader per organizzare l'input da tastiera bufferizzato.
20. Files come flussi, scrittura/lettura dei files, gestione delle eccezioni di input/output.
21. Struttura di una classe, campi e metodi; classi e oggetti, lo stato (state) di un oggetto; operatore instanceof; definizione di una classe semplice; membri statici (static) di una classe; durata di memorizzazione (storage duration) delle variabili ed ambito di visibilità (scope) degli identificatori.
22. Passaggio degli argomenti ai metodi: per valore nel caso di tipi semplici e per riferimento nel caso di oggetti.
23. Invocazione dei metodi statici di un'altra classe. Invocazione dei metodi per superare l'assenza dell'operatore goto in Java.
24. Classi astratte e concrete (istanziabili), metodi costruttori ed operatore new, costruttore di default.
25. Overriding (ridefinizione) dei metodi della superclasse; esempio - overriding del metodo toString() ereditato dalla classe Object; utilizzo della parola chiave super per invocare i membri della superclasse.
26. Polimorfismo e overloading (sovraccarico) dei metodi.
27. Incapsulazione (protezione) dei campi, specificatori d'accesso ai membri di classe private, public, protected, accesso default; accesso ai campi protetti con i metodi get() e set().
28. Ereditarietà delle classi, classi derivate e gerarchia delle classi; utilizzo delle parole chiave extends , super e final.
29. Interfacce (interfaces), ereditarietà multipla, polimorfismo e binding dinamico; cast (conversione esplicita) di oggetti; clonazione di oggetti.
30. Definizione ed importazione dei pacchetti (package); lo scopo principale di utilizzo dei pacchetti - mantenere lo spazio dei nomi delle classi suddiviso in comparti. Specificatori di accesso alle classi public e default.
31. Introduzione alle applets Java, i metodi principali della classe java.applet.Applet (lo scheletro delle applets): init(), start(), paint(), stop(), destroy(); il ciclo di vita (lifecycle) di un'applet.
32. Ruolo dei documenti HTML nelle comunicazioni via Internet; nozioni sulla struttura di un documento HTML. Passaggio dei parametri ad un'applet dal documento HTML.
33. Pacchetti java.applet e java.awt; sovraccarico dei metodi principali di un'applet.
34. Classi Color, Font e Image del pacchetto java.awt; metodi della classe Component.
35. Pacchetto AWT: gestione degli eventi in core Java (old-style), Delegation Event Model di Java2; controlli (elementi grafici di GUI); gestori del layout.
1. Networking in Java (pacchetto java.net):
- nozioni generali:
- reti di elaboratori: nodi e risorse, canali di comunicazione, host computers, configurazione (architettura, topologia) di una rete;
- tipi di reti: LAN (Local Area Network) - reti locali; MAN (Metropolitan Area Network) - reti per aree metropolitane, reti universitarie; WAN (Wide Area Network) - reti per aree estese, reti geografiche;
- architettura client/server;
- interconnessione (interfacciamento) delle reti; le componenti di una rete estesa: bridge, switch, router, brouter, gateway;
- indirizzi IP e DNS, porte, socket;
- protocollo di linea (di comunicazione), cenni sui protocolli UDP e TCP/IP.
- pachetto java.net: classi InetAddress, URL, URLConnection, Socket, ServerSocket; DatagramSocket e DatagramPacket; realizzazione di un server multi-threaded.
2. Multi-threading in Java:
- il modello di thread in Java, gli stati di un thread, priorità dei thread; creare nuovi thread ed avviarli con il metodo run() dell'interfaccia Runnable; i metodi della classe Thread; daemon threads, sincronizzazione fra threads, comunicazione fra threads.
3. JDBC (Java Database Connectivity), pacchetto java.sql:
- caratterizzazione generale di RDBMS (Relational Data Base Management Systems, sistemi di gestione delle base di dati relazionali); tabelle e le loro proprietà; chiave primaria (primary key) di una tabella e chiavi esterne (foreign keys); integrità di entità ed integrità referenziale;
- nozioni base su SQL (Structured Query Language - il linguaggio delle interrogazioni strutturate):
- istruzione SELECT … FROM, clausola WHERE;
- operatori aritmetici, di confronto, logici, di insieme, di caratteri, altri;
- valore NULL, logica a tre livelli in SQL;
- espressioni e condizioni;
- funzioni di SQL: aggregate (su insiemi), aritmetiche, temporali, di conversione, funzioni varie.
- clausole ORDER BY, GROUP BY, HAVING; combinazioni di clausole;
- combinazioni (join) di tabelle;
- istruzioni CREATE/DROP/ALTER TABLE,
- gestione e ripristino dei dati, istruzioni INSERT, DELETE, UPDATE.
- pachetto java.sql ; accesso ai dati dalle applicazioni Java in architettura 2 -tier;
- concetto di Internet Application Server; accesso ai dati dalle applet in architettura 3-tier.