This is an old revision of the document!
Programmazione Avanzata
News
- 27 Settembre 2018: Il corso si terrà nel secondo semestre. Le informazioni per chi ha frequentato nell'a.a. 2018/10 sono quelle disponibili al seguente link.
Informazioni Generali
Docente: Michele Loreti
Link ESSE3
Orario delle Lezioni:
- L'orario delle lezioni non è ancora stato definito.
Canale Telegram: https://t.me/UniCamPA
Esercizi con soluzioni: https://github.com/michele-loreti/ap_examples
Ricevimento studenti:
- Mercoledì, dalle 16.00 alle 17.00
- Giovedì, dalle 10.00 alle 11.00
Obiettivi del Corso
Conoscenze:
- concetti basilari della metodologia orientata agli oggetti nella progettazione del software;
- caratteristiche principali dei linguaggi orientati agli oggetti, quali Java, e tecniche di programmazione;
- elementi base della programmazione funzionale;
- schemi di soluzioni avanzate a problemi ricorrenti nel design del software.
Competenze acquisite (al termine del corso) Gli studenti dovranno dimostrare di saper usare la metodologia orientata agli oggetti nella progettazione e implementazione di componenti software, che siano facilmente estendibili e riusabili.
Capacità acquisite (al termine del corso) Capacità di sviluppare software flessibile, utilizzando tecniche avanzate orientate agli oggetti.
Contenuti del Corso
Nel corso verrà introdotta, attraverso l'uso del linguaggio Java, la metodologia orientata agli oggetti per la costruzione del software:
- Paradigmi di programmazione: imperativo, funzionale e orientato agli oggetti.
- Principi di Programmazione funzionale.
- Principi di Programmazione Orientata agli Oggetti: Classe, Interfaccia e implementazione nascosta. Il linguaggio Java.
- UML (Unified Modeling Language): il “diagramma di classi” per l'analisi, la progettazione e la documentazione.
- Ereditarietà. Composizione di oggetti e delega di messaggi. Le classi astratte.
- Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico.
- Programmazione test-driven.
- Design Pattern: Singleton, Factory, Composite, Visitor, Decorator, Observer, Template, Strategy.
- Argomenti avanzati: Le lambda-expressions, La dependency-injection.
- Panoramica di altri linguaggi di programmazione: Python, GO, C#, Swift.
- Applicazioni.
Materiale
Slide del Corso (Slide usate nell'A.A. 18/19)
Calendario Lezioni
- Al momento non ci sono registrazioni.
Riferimenti
Testi di Riferimento
- Core Java SE 9 for the Impatient, Cay Horstmann, Second Edition, Addison-Wesley 2017
Modalità d'esame
L'esame consiste in:
- Una prova scritta per verificare le conoscenze base introdotte nel corso;
- Un progetto (da svolgere singolarmente) per valutare la capacità di applicare le metodologie presentate nel corso;
- Un colloquio orale per discutere il progetto e per valutare le competenze acquisite.
Progetti
I dettagli sui progetti verranno resi noti all'inizio delle lezioni.
Esami
Date Prove Scritte A.A. 2019/2020 (Esempio Compito)
- 11/06/2020, Ore 10:00, Aula AA1 Polo Lodovici;
- 30/06/2020, Ore 10:00, Aula AA1 Polo Lodovici;
- 16/07/2020, Ore 10:00, Aula AA1 Polo Lodovici;
- 08/09/2020, Ore 10:00, Aula AB1 Polo Lodovici;
- 24/09/2020, Ore 10:00, Aula AB1 Polo Lodovici;
- 04/02/2021, Ore 10:00, Aula AB1 Polo Lodovici;
- 25/02/2021, Ore 10:00, Aula AB1 Polo Lodovici.