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. 2017/18 sono quelle disponibili al seguente link.
- 4 Marzp 2010: Inizio delle lezioni!
Informazioni Generali
Docente: Michele Loreti
Link ESSE3
Orario delle Lezioni:
- Lunedì, dalle 14.00 ale 16.00 (Laboratorio LA1)
- Martedì, dalle 11.00 alle 13.00 (Laboratorio LA1)
- Mercoledì, dalle 11.00 alle 13.00 (Laboratorio LA1)
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
Calendario Lezioni
- Lezione 4/3/2019, 14-16 (Registrazione)
- Lezione 5/3/2019, 11-13 (Registrazione)
- Lezione 6/3/2019, 11-13 (Registrazione)
- Lezione 11/3/2019, 14-16 (Registrazione)
- Lezione 12/3/2019, 11-13 (Registrazione)
- Lezione 13/2/2019, 11-13 (Registrazione)
- Lezione 19/3/2019, 11-13 (Registrazione)
- Lezione 20/3/2019, 11-13 (Registrazione)
- Lezione 25/3/2019, 14-16 (Registrazione)
- Lezione 26/3/2019, 11-13 (Registrazione)
- Lezione 27/3/2019, 11-13 (Registrazione) (Codice)
- Lezione 1/4/2019, 14-16 (Registrazione)
- Lezione 2/4/2019, 11-13 (Registrazione)
- Lezione 3/4/2019, 11-13 (Registrazione)
- Lezione 9/4/2019, 11-13 (Registrazione)
- Lezione 15/4/2019, 14-16 (Registrazione)
- Lezione 30/4/2019, 11-13 (Registrazione)
- Lezione 6/5/2019, 14-16 (Registrazione non disponibile)
- Lezione 7/5/2019, 11-13 (Registrazione)
- Lezione 8/5/2019, 11-13 (Registrazione)
- Lezione 13/5/2019, 14-17 (Registrazione)
- Lezione 14/5/2019, 11-13 (Registrazione)
- Lezione 15/5/2019, 11-13 (Registrazione)
- Lezione 20/5/2019, 14-16 (Registrazione)
- Lezione 21/5/2019, 11-13 (Registrazione)
- Lezione 22/5/2019, 11-13 (Registrazione)
- Lezione 27/5/2019, 14-16 (Registrazione)
- Lezione 28/5/2019, 11-13 (Registrazione)
- Lezione 29/5/2019, 11-13 (Registrazione)
- Lezione 05/6/2019, 11-13 (Registrazione)
Esercizi
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 (che può essere svolto in gruppo) per valutare la capacità di applicare le metodologie presentate nel corso;
- Un colloquio orale per discutere il progetto e per valutare le competenze acquisite.
Per poter consegnare il progetto tutti i membri del gruppo devono aver superato con successo la prova scritta nella stessa sessione della consegna. Tutti i membri di un gruppo devono svolgere il colloquio orale nella stessa data.
Progetti
- Il progetto dovrà essere consegnato (solo dopo aver passato lo scritto) in un archivio
.tgz
contenente, oltre al codice, una relazione descrittiva del lavoro svolto; - Il progetto può essere svolto in gruppo composto da al più tre persone, i membri del gruppo devono essere comunicati al docente almeno 15 giorni prima della consegna utilizzando il seguente link;
- La valutazione del progetto terrà conto di (griglia di valutazione disponibile al seguente link) :
- Corretto funzionamento;
- Organizzazione e progettazione del codice;
- Conoscenza da parte di tutti i membri del gruppo.
Specifica L'obiettivo del progetto è quello di sviluppare un semplice gioco in Java. Ogni gruppo può liberamente scegliere tra i seguenti progetti:
Mastermind(Progetto non più disponibile)
Altri tipologie di giochi possono essere proposti al docente che potrà valutarne l'opportunità ed aggiungerli eventualmente alla lista.
All'interno del progetto dovranno essere sviluppate le classi/interfacce che consentano:
- La gestione della partita;
- La definizione di giocatori personalizzati (per definire avversari “automatici”);
- La gestione dell'interazione dell'utente.
La relazione dovrà descrivere:
- L'architettura delle classi sviluppate;
- Per ogni classe dovranno essere descritte le responsabilità;
- Come il codice presentato può essere esteso per integrare nuove funzionalità.
Modealità di Consegna Almeno 15 giorni prima della consegna ogni gruppo si deve registrare al seguente link. Il progetto dovrà essere caricato entro le 23.59 del giorno della scadenza attraverso il sito classroom, codice di iscrizione 14u2iy.
Esami
Date Prove Scritte A.A. 2018/2019 (Esempio Compito)
- 21/02/2020, Ore 10:00, Aula AB1 Polo Lodovici.
Date Consegna Progetti A.A. 2018/2019 (Possono consegnare solo gli studenti che hanno superato la prova scritta)
- 19/06/2019, discussioni a partire dal 24/06/2019 (Calendario Discussioni)
- 05/07/2019, discussioni a partire dal 09/07/2019 (Calendario Discussioni)
- 22/07/2019, discussioni a partire dal 25/07/2019 (Calendario Discussioni)
- 12/09/2019, discussioni a partire dal 16/09/2019 (Nessun progetto Consegnato)
27/09/20194/10/2019, discussioni a partire dal 8/10/2019 (Calendario Discussioni)- 14/02/2020, discussioni a partire dal 17/02/2020 (Calendario Discussioni)
- 24/02/2020, discussioni a partire dal 26/02/2020 (calendario definito dopo le consegne)