====== Programmazione Avanzata ====== ---- ===== News ===== Non ci sono notizie. ---- ===== Informazioni Generali ===== **Docente**: * [[https://didattica.unicam.it/Guide/PaginaDocente.do?docente_id=3858|Prof. Michele Loreti]] **Link ESSE3** * [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2021*N0*N0*S2*16612*9113&ANNO_ACCADEMICO=2021&mostra_percorsi=S|Programmazione Avanzata - AA 2021/22]] **Orario delle Lezioni**: * L'orario delle lezioni è disponibile al seguente [[:didattica:ay2122:orario_it|link]] **Corsi di Laurea**: * [[didattica:linf|Laurea in Informatica (L-31)]] **Link ClassRoom** * Il materiale didattico del corso è reso disponibile sul ClassRoom a cui è possibile iscriversi con il seguente [[https://classroom.google.com/c/NDU5OTQyNTMyNDg2?cjc=khqocxt|link]]. ---- ===== 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. ---- ===== Testi di riferimento ===== * Note fornite settimanalmente dal docente. ---- ===== Contenuti del Corso ===== Nel corso verrà introdotta, attraverso l'uso del linguaggio Java, la metodologia orientata agli oggetti per la costruzione del software: - Tipi di dato e rappresentazione dell'informazione. - Paradigmi di programmazione: imperativo, funzionale e orientato agli oggetti. - Principi di Programmazione funzionale. - Principi di Programmazione Orientata agli Oggetti. - Ereditarietà. Composizione di oggetti e delega di messaggi. Le classi astratte. - Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico. - UML (Unified Modeling Language): il "diagramma di classi" per l'analisi, la progettazione e la documentazione. - Programmazione test-driven. - Programmazione Concorrente. - Programmazione Orientata agli Eventi. - Programmazione di Interfacce. ---- ===== Modalità d'esame ===== L'esame consiste in: - Un progetto (da svolgere singolarmente) per valutare la capacità di applicare le metodologie presentate nel corso; - Una prova scritta per verificare le conoscenze base introdotte nel corso, possono partecipare allo scritto solo coloro che hanno consegnato il progetto; - Un colloquio orale (opzionale) per discutere il progetto e per valutare le competenze acquisite. ---- ==== Progetti ==== I progetti devono essere consegnati due giorni prima dello scritto utilizzando il corrispondente link sul Classroom del corso. Ogni sessione d'esame avrà una specifica distinta e disponibile al seguente link: * Specifica appelli Giugno/Luglio 2022 (Disponibile dal 25/4/2022) * Specifica appelli Settembre 2022 (Disponibile dal 25/7/2022) * Specifica appelli Febbraio/Marzo 2023 (Disponibile dal 31/10/2022) ---- ===== Esami ===== **Date Prove Scritte A.A. 2021/2022** *08/06/2022, Ore 10:00, Aula AA1 Polo Lodovici; *29/06/2022, Ore 10:00, Aula AA1 Polo Lodovici; *20/07/2022, Ore 10:00, Aula AA1 Polo Lodovici; *07/09/2022, Ore 10:00, Aula AB1 Polo Lodovici; *28/09/2022, Ore 10:00, Aula AB1 Polo Lodovici; *01/02/2023, Ore 10:00, Aula AB1 Polo Lodovici; *22/02/2023, Ore 10:00, Aula AB1 Polo Lodovici; *15/03/2023, Ore 10:00, Aula AB1 Polo Lodovici.