PROGRAMMAZIONE JAVA AVANZATA

Luca GRECO PROGRAMMAZIONE JAVA AVANZATA

0612700128
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA INFORMATICA
2024/2025



ANNO CORSO 3
ANNO ORDINAMENTO 2022
SECONDO SEMESTRE
CFUOREATTIVITÀ
324LEZIONE
216LABORATORIO
18ESERCITAZIONE
Obiettivi
L’INSEGNAMENTO INTENDE APPROFONDIRE ASPETTI AVANZATI ED INNOVATIVI DEL LINGUAGGIO JAVA. ESSO È PERTANTO FINALIZZATO A SVILUPPARE NEGLI STUDENTI LE COMPETENZE DI PROGRAMMAZIONE NECESSARIE ALLA REALIZZAZIONE DI APPLICAZIONI JAVA CON COSTRUTTI AVANZATI E CHE PREVEDONO USO DI ANNOTAZIONI, INTROSPEZIONE DEL CODICE, APPROCCI FUNZIONALI.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE
COMPLEMENTI AI COSTRUTTI BASE DEL LINGUAGGIO JAVA. EREDITARIETÀ LIMITATA. TIPI SEALED E RECORD. GENERICS. REFLECTION E TIPI ANNOTAZIONE. ESPRESSIONI LAMBDA E REFERENCE A METODI. STREAM API. CONCURRENCY API. ORGANIZZAZIONE MODULARE.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE
IMPLEMENTARE IN JAVA UN’APPLICAZIONE CHE PREVEDA L’USO DI ANNOTAZIONI, TIPI SEALED E RECORD. SVILUPPARE SEMPLICI PROCESSORI DI ANNOTAZIONE. SAPER USARE ESPRESSIONI LAMBDA E REFERENCE A METODI. SAPER OPERARE SU COLLEZIONI IN MANIERA SEMPLICE ED EFFICIENTE GRAZIE ALL’API STREAM. SAPER IMPLEMENTARE APPLICAZIONI JAVA MULTITHREADED CHE USANO CONCURRENCY API.
Prerequisiti
PREREQUISITI: PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI È RICHIESTA UNA BUONA PRATICA DI PROGRAMMAZIONE IN JAVA.
Contenuti
UNITÀ DIDATTICA 1: COMPLEMENTI ALLE BASI DEL LINGUAGGIO
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2)

1. ( 2 ORE LEZIONE ): RICHIAMI SULLE BASI DELLA PROGRAMMAZIONE OBJECT ORIENTED IN LINGUAGGIO JAVA. APPROFONDIMENTO DEI COSTRUTTI DI PROGRAMMAZIONE SPECIFICI DEL LINGUAGGIO. DEDUZIONE DEL TIPO PER LE VARIABILI LOCALI. NUOVO COSTRUTTO SWITCH E POLY-EXPRESSION.
2. ( 2 ORE LEZIONE ): RICHIAMI SU EREDITARIETÀ ED INTERFACCE. CLASSI ED INTERFACCE SEALED.
3. ( 2 ORE ESERCITAZIONE ): ESEMPI ED ESERCIZI GUIDATI SU COSTRUTTI AVANZATI, SWITCH POLY-EXPRESSION, CLASSI ED INTERFACCE SEALED.
4. ( 2 ORE LABORATORIO ): ESERCITAZIONE SU COSTRUTTI AVANZATI, SWITCH POLY-EXPRESSION, CLASSI ED INTERFACCE SEALED.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: CONOSCERE LE REGOLE E LE CONVENZIONI PER DICHIARARE IDENTIFICATORI E DEDURRE IL TIPO DI DATO IN JAVA. CONOSCERE I COSTRUTTI DI PROGRAMMAZIONE AVANZATI E IL NUOVO SWITCH. COMPRENDERE IL CONCETTO DI EREDITARIETÀ LIMITATA.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SAPER APPLICARE LA DEDUZIONE DEL TIPO PER LE VARIABILI LOCALI TRAMITE LA PAROLA CHIAVE VAR. SAPER UTILIZZARE IL NUOVO COSTRUTTO SWITCH. SAPER UTILIZZARE CLASSI ED INTERFACCE SEALED.


UNITÀ DIDATTICA 2: TIPI ENUM, RECORD E GENERICI
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2)

1. ( 2 ORE LEZIONE ): CARATTERISTICHE AVANZATE DEL LINGUAGGIO JAVA.I TIPI ENUMERAZIONE. EREDITARIETÀ E POLIMORFISMO SU TIPI ENUMERAZIONE. I TIPI RECORD. RECORD E CLASSI. POLIMORFISMO E RECORD. METODI, VARIABILI E COSTRUTTORI IN UN RECORD. COSTRUTTORI CANONICI.
2. ( 2 ORE LEZIONE ): RICHIAMI SUI TIPI GENERICI. EREDITARIETÀ E TIPO PARAMETRO. TYPE ERASURE. WILDCARD. METODI GENERICI. TIPI BOUNDED.
3. ( 2 ORE ESERCITAZIONE): ESEMPI ED ESERCIZI GUIDATI SU TIPI ENUMERAZIONE, TIPI RECORD E TIPI GENERICI.
3. ( 2 ORE LABORATORIO): ESERCITAZIONI SU TIPI ENUMERAZIONE, TIPI RECORD E TIPI GENERICI.


CONOSCENZE E CAPACITÀ DI COMPRENSIONE: COMPRENDERE L’UTILITÀ E L’UTILIZZO DEI TIPI ENUMERAZIONE. COMPRENDERE L’IMPIEGO DELLE ENUMERAZIONI CON IL COSTRUTTO SWITCH. COMPRENDERE L’UTILITÀ DEI TIPI RECORD. COMPRENDERE L’EREDITARIETÀ E IL POLIMORFISMO APPLICATI AI TIPI RECORD. COMPRENDERE L’ERASURE E COME SI APPLICA L’EREDITARIETÀ CON I TIPI GENERICI.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SAPER SFRUTTARE L’EREDITARIETÀ E IL POLIMORFISMO CON LE ENUMERAZIONI. SAPER DEFINIRE METODI, VARIABILI E COSTRUTTORI NELLE ENUMERAZIONI. SAPER USARE I TIPI RECORD. SAPER DICHIARARE COSTRUTTORI CANONICI, CANONICI COMPATTI E NON CANONICI NEI RECORD. SAPER USARE LE WILDCARD NEI TIPI GENERICI. SAPER CREARE METODI GENERICI. SAPER GESTIRE WILDCARD CAPTURE CON METODI HELPER.

UNITÀ DIDATTICA 3: TIPI ANNOTAZIONE E REFLECTION
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2)

1. ( 2 ORE LEZIONE ): INTRODUZIONE ALLA REFLECTION ED INTROSPEZIONE DEL CODICE. ISTANZIARE UN OGGETTO CLASS. REFLECTION SU CLASSI, METODI E NOMI PARAMETRI.
2. ( 2 ORE LEZIONE ): INTRODUZIONE ALLA META-PROGRAMMAZIONE. I TIPI ANNOTAZIONE: DEFINIZIONE, USO E PROCESSAMENTO. META-ANNOTAZIONI. ANNOTAZIONI ORDINARIE, A VALORE SINGOLO E ANNOTAZIONI MARCATRICI. ANNOTAZIONI STANDARD.
3. ( 2 ORE ESERCITAZIONE ): ESEMPI ED ESERCIZI GUIDATI SU REFLECTION E TIPI ANNOTAZIONE.
4. ( 2 ORE LABORATORIO ): ESERCITAZIONE SU REFLECTION E TIPI ANNOTAZIONE.


CONOSCENZE E CAPACITÀ DI COMPRENSIONE: COMPRENDERE IL CONCETTO DI REFLECTION ED INTROSPEZIONE DI TIPI, METODI E PARAMETRI. COMPRENDERE COSA SONO I METADATI E LA LORO UTILITÀ. COMPRENDERE L’UTILITÀ DELLE ANNOTAZIONI.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SAPER DEFINIRE NUOVI TIPI ANNOTAZIONE. SAPER CREARE UN PROCESSORE DI ANNOTAZIONI. SAPER USARE LE ANNOTAZIONI STANDARD.

UNITÀ DIDATTICA 4: LAMBDA EXPRESSION E REFERENCE A METODI
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2)

1. ( 2 ORE LEZIONE ): RICHIAMI SU LAMBDA EXPRESSION ED INTERFACCE FUNZIONALI. ESPRESSIONI LAMBDA E CLASSI ANONIME. GESTIONE DELLE ECCEZIONI. DEDUZIONE DEI TIPI PER LE ESPRESSIONI LAMBDA LOCALI.
2. ( 2 ORE LEZIONE ): REFERENCE A METODI: DEFINIZIONE. REFERENCE A METODI STATICI E DI ISTANZA. REFERENCE A COSTRUTTORE. INTERFACCE FUNZIONALI DI USO COMUNE.
3. ( 2 ORE ESERCITAZIONE ): ESEMPI ED ESERCIZI GUIDATI SU LAMBDA EXPRESSION E REFERENCE A METODI.
4. ( 2 ORE LABORATORIO ): ESERCITAZIONI SU LAMBDA EXPRESSION E REFERENCE A METODI.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: COMPRENDERE LA SINTASSI E LE MODALITÀ D’USO DELLE ESPRESSIONI LAMBDA. COMPRENDERE COME FUNZIONANO I REFERENCE A METODI.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SAPER DEFINIRE GESTIRE LE ESPRESSIONI LAMBDA. SAPER GESTIRE EVENTUALI ECCEZIONI ASSOCIATE AD ESPRESSIONI LAMBDA. SAPER UTILIZZARE I REFERENCE A METODI. SAPER USARE INTERFACCE FUNZIONALI DI USO COMUNE.



UNITÀ DIDATTICA 5: STREAM API
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2)

1. ( 2 ORE LEZIONE ): STREAM E PIPELINE. CLASSI OPTIONAL. SORGENTI STREAM. STREAM DA VALORI. STREAM DA ARRAY E COLLECTION.
2. ( 2 ORE LEZIONE ): OPERAZIONI AGGREGATE. FILTRARE E TRASFORMARE STREAM. OPERAZIONI TERMINALI: RICERCA E RIDUZIONE.
3. ( 2 ORE ESERCITAZIONE ): ESEMPI ED ESERCIZI GUIDATI SU STREAM API.
4. ( 2 ORE LABORATORIO ): ESERCITAZIONE SU STREAM API.


CONOSCENZE E CAPACITÀ DI COMPRENSIONE: COMPRENDERE L'UTILITÀ DELLA LIBRERIA STREAM API. COMPRENDERE LE PIPELINE. CONOSCERE I METODI PRINCIPALI PER OTTENERE OGGETTI STREAM DA SORGENTI.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SAPER UTILIZZARE LE PIPELINE. SAPER UTILIZZARE I PIÙ IMPORTANTI METODI DI AGGREGAZIONE E I METODI TERMINALI.


UNITÀ DIDATTICA 6: CONCURRENCY API E MODULI
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2)

1. ( 2 ORE LEZIONE ): RICHIAMI SU MULTITHREADING. JAVA API SU CONCORRENZA. OGGETTI IMMUTABILI. LOCKS, EXECUTORS.SEMAFORI.
2. ( 2 ORE LEZIONE ): ORGANIZZAZIONE MODULARE. DIRETTIVE PRINCIPALI. SERVIZI CON SERVICE LOADER. JAR MODULARE.
3. ( 2 ORE ESERCITAZIONE): ESEMPI ED ESERCIZI GUIDATI SU CONCURRENCY API E MODULI.
4. ( 2 ORE LABORATORIO): ESERCITAZIONE SU CONCURRENCY API E MODULI.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: CONOSCERE IL NUCLEO DELLA LIBRERIA SULLA CONCORRENZA.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SAPER UTILIZZARE CLASSI E METODI PRINCIPALI MESSI A DISPOSIZIONE DALLA LIBRERIA JAVA SULLA CONCORRENZA.


TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO 24/12/12
Metodi Didattici
CONSIDERATA LA NECESSITÀ PER GLI STUDENTI DI ACQUISIRE CONOSCENZE TEORICO-METODOLOGICHE E PROGETTUALI, L’ATTIVITÀ FORMATIVA SARÀ ARTICOLATA IN LEZIONI FRONTALI, ESERCITAZIONI INTERATTIVE.
LE LEZIONI IN AULA RIGUARDERANNO TUTTI GLI ARGOMENTI DEL CORSO.
LE ESERCITAZIONI INTERATTIVE SERVIRANNO A SVILUPPARE LE CAPACITÀ APPLICATE.
PER POTER SOSTENERE LA VERIFICA FINALE DEL PROFITTO E CONSEGUIRE I CFU RELATIVI ALL’ATTIVITÀ FORMATIVA, LO STUDENTE DOVRÀ AVERE FREQUENTATO ALMENO IL 70% DELLE ORE PREVISTE DI ATTIVITÀ DIDATTICA ASSISTITA.
Verifica dell'apprendimento
LA PROVA DI ESAME È FINALIZZATA A VALUTARE NEL SUO COMPLESSO: LA CONOSCENZA E LA CAPACITÀ DI COMPRENSIONE DEI CONCETTI PRESENTATI AL CORSO; LA CAPACITÀ DI APPLICARE TALI CONOSCENZE PER LA RISOLUZIONE DI PROBLEMI MEDIANTE L’ADOZIONE DEL PARADIGMA DELLA PROGRAMMAZIONE AD OGGETTI, I COSTRUTTI E LE CARATTERISTICHE AVANZATE DEL LINGUAGGIO JAVA; L’AUTONOMIA DI GIUDIZIO, LE ABILITÀ COMUNICATIVE E LA CAPACITÀ DI APPRENDERE. ESSA CONSISTE DI UNA PROVA PRATICA E DI UN COLLOQUIO ORALE.
LA PROVA PRATICA È TESA AD ACCERTARE LE COMPETENZE NEL REALIZZARE PROGRAMMI IN LINGUAGGIO JAVA, ED È REALIZZATA DIRETTAMENTE SUL SISTEMA DI ELABORAZIONE PERSONALE. SONO CONSIDERATE CAPACITÀ MINIME QUELLE DI RISOLVERE IL PROBLEMA PROPOSTO, SENZA ERRORI SINTATTICI RILEVANTI; VICEVERSA SONO RITENUTE CAPACITÀ MASSIME QUELLA DI PERVENIRE A SOLUZIONI ALGORITMICHE CHE SIANO EFFICIENTI E CHE FACCIANO USO DELLE STRUTTURE DATI E DEGLI ALGORITMI PIÙ ADEGUATI, SFRUTTANDO OPPORTUNAMENTE LE LIBRERIE MESSE A DISPOSIZIONE DAL LINGUAGGIO.LA PROVA ORALE VERTE SU TUTTI GLI ARGOMENTI DEL CORSO E LA VALUTAZIONE TERRÀ CONTO DELLE CONOSCENZE DIMOSTRATE DALLO STUDENTE E DEL GRADO DEL LORO APPROFONDIMENTO, DELLA CAPACITÀ DI APPRENDERE DIMOSTRATA, DELLA QUALITÀ DELL’ESPOSIZIONE.
AI FINI DEL VOTO FINALE LA PROVA PRATICA CONTRIBUISCE AL 50% E LA PROVA ORALE AL 50%. LA LODE E' ATTRIBUITA A QUEGLI STUDENTI CHE DIMOSTRANO LA CAPACITA' DI APPLICARE LE CONOSCENZE ACQUISITE ANCHE IN CONTESTI DIFFERENTI DA QUELLI PROPOSTI DURANTE IL CORSO.
Testi
CLAUDIO DE SIO CESARI, “IL NUOVO JAVA. GUIDA COMPLETA ALLA PROGRAMMAZIONE MODERNA”, HOEPLI INFORMATICA

TESTI ED URL DI CONSULTAZIONE ED APPROFONDIMENTO
- JAVA TUTORIALS - HTTP://DOCS.ORACLE.COM/JAVASE/TUTORIAL/

MATERIALE DIDATTICO INTEGRATIVO SARA' DISPONIBILE NELLA SEZIONE DEDICATA DELL'INSEGNAMENTO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DI ATENEO (HTTP://ELEARNING.UNISA.IT) ACCESSIBILE AGLI STUDENTI DEL CORSO TRAMITE LE CREDENZIALI UNICHE DI ATENEO.
Altre Informazioni
L'INSEGNAMENTO E' EROGATO IN ITALIANO
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-12-13]