PROGRAMMING 2

Obiettivi formativi

Obiettivi generali: Apprendimento dei concetti della programmazione orientata agli oggetti mediante il linguaggio di programmazione Java. Obiettivi specifici: I concetti fondamentali della programmazione orientata agli oggetti: classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico e dinamico, i design pattern. La programmazione funzionale. Gli strumenti e le metodologie di base della progettazione software tramite un linguaggio orientato agli oggetti. Il linguaggio Java. Conoscenza e comprensione: Conoscenza dei costrutti dei linguaggi di programmazione orientata agli oggetti, con particolare riferimento al linguaggio Java. Comprensione di un programma Java. Capacità di scrittura di un programma Java di piccole e medie dimensioni. Applicazione di conoscenza e comprensione: Essere in grado di applicare le metodologie di base per affrontare la progettazione di sistemi software di grandezza medio-piccola. Saper usare i principali strumenti di sviluppo per realizzare tali sistemi in Java. Autonomia di giudizio: Capacità di identificare istruzioni, costrutti o pattern errati o inefficienti così come corretti o efficienti in Java. Abilità comunicative: Illustrazione del progetto sviluppato. Capacità di apprendimento: Capacità di apprendere e applicare nuove tecniche di programmazione a partire da quelle apprese durante il corso.

Canale 1
PIETRO CENCIARELLI Scheda docente

Programmi - Frequenza - Esami

Programma
Introduzione al paradigma di programmazione object oriented. Il linguaggio Java. Algebra e tipi di dato astratto. Classi e oggetti. L'incapsulamento. Il polimorfismo (parte prima): Estensione di una classe ed ereditarietà. Classi astratte e interfacce. Package. Modificatori di accesso e regole di visibilità. Classi annidate. Classi anonime. Espressioni Lambda. Il polimorfismo (parte seconda): Tipi generici. Gerarchia Thread e sincronizzazione di processi. Deadlock e starvation. Reflection. Consistenza dei dati: annotazioni e asserzioni. Programmazione funzionale: funtori e monadi.
Prerequisiti
Conoscenza di base della programmazione
Testi di riferimento
Cay S. Horstmann, Core Java for the Impatient, Addison-Wesley Professional, 2015
Modalità insegnamento
Blended
Frequenza
Raccomandata
Modalità di esame
Prova orale e valutazione progetto
Bibliografia
Cay S. Horstmann, Core Java for the Impatient, Addison-Wesley Professional, 2015
  • Codice insegnamento10600241
  • Anno accademico2024/2025
  • CorsoApplied Computer Science and Artificial Intelligence – Informatica Applicata e Intelligenza Artificiale
  • CurriculumCurriculum unico
  • Anno1º anno
  • Semestre2º semestre
  • SSDINF/01
  • CFU6
  • Ambito disciplinareDiscipline Informatiche