Programma
Prerequisiti
Fondamenti di Informatica
Algoritmi e Strutture Dati
In particolare è richiesto che lo studente abbia confidenza con i costrutti tipici della programmazione procedurale, con la rappresentazione di strutture dati fondamentali, e che sappia scrivere algoritmi polinomiali non banali. Inoltre, si assume che lo studente sappia usare un editor di testo, e che sappia utilizzare un ambiente di sviluppo moderno (IDE).
Obiettivi
Il corso mira ad esporre principi, tecniche e metodologie per la programmazione secondo il paradigma orientato agli oggetti, anche da parte di più esecutori concorrenti. Superato il corso, lo studente sarà in grado di: apprezzare e valutare la qualità del codice, realizzare applicazioni OO e partecipare al progetto e alla realizzazione di applicazioni OO di media complessità, apprezzare le prime problematiche e le più importanti opportunità offerte dalla programmazione concorrente.
Programma
Parte 1: Il Paradigma Orientato agli Oggetti
Il linguaggio di programmazione Java
Classi e Oggetti
Costruttori
Information Hiding
Parte 2: Qualità del codice
Coesione e accoppiamento
Testing
Parte 3: Polimorfismo
Interfacce
Principio di sostituzione, polimorfismo
Ereditarietà
Parte 4: Collezioni
Generics
Mappe, insiemi, liste
Iteratori
Parte 5: Riuso del codice
Ereditarietà: approfondimenti
Classi astratte
Tipi enumerati
Classi nidificate
Parte 6: stream, eccezioni, riflessione, annotazioni
Gestione delle Eccezioni
Stream
Riflessione
Annotazioni
Parte 7: Introduzione alla programmazione concorrente
Java Thread, definizione, creazione, terminazione
Interferenza
Speed-up e problemi di decomposizione parallela
Un modello multi-thread per le applicazioni grafiche