PROGETTAZIONE DEL SOFTWARE

Obiettivi formativi

Obiettivi generali: Il corso propone un'introduzione alla programmazione orientata agli oggetti, usando il linguaggio Java come strumento per illustrare concetti fondamentali come oggetti, metodi, classi, interfacce, ereditarietà, polimorfismo, tipi generici, package, iteratori ed eccezioni. Particolare enfasi viene posta sull'uso e sul progetto di librerie software e su aspetti generali come modularità, robustezza, riusabilità e manutenibilità del codice illustrando concetti come astrazione, incapsulamento, mascheramento dell'informazione, generalizzazione e specializzazione che consentono di realizzare applicazioni complesse su larga scala. Obiettivi specifici: Conoscenza e comprensione: I principali standard della progettazione orientata agli oggetti. Le tecniche per la programmazione su larga scala orientata agli oggetti.Il linguaggio di progettazione del software UML. Il linguaggio di programmazione JAVA. Applicare conoscenza e comprensione: Essere in grado di progettare una applicazione costituita da diverse classi e associazioni, e da diverse attivita` anche concorrenti che insistono sulle stesse. Capacità critiche e di giudizio: Essere in grado di valutare la qualità di una applicazione distinguendo gli aspetti relativi alla modellazione dei dati da quelli relative alla modellazione dei processi. Capacità comunicative: Le attività progettuali e le esercitazioni del corso permettono allo studente di essere in grado di comunicare/condividere i requisiti di una applicazione software di media complessita', nonché le scelte progettuali e le metodologie di progettazione e sviluppo di tale applicazione. Capacità di apprendimento: Oltre alle classiche capacità di apprendimento fornite dallo studio teorico del materiale didattico, le modalità di svolgimento del corso, in particolare le attività progettuali, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Canale 1
PAOLO LIBERATORE Scheda docente

Programmi - Frequenza - Esami

Programma
Programmazione orientata agli oggetti. UML
Prerequisiti
Programmazione dei calcolatori
Testi di riferimento
Dispense del corso
Frequenza
Tre lezioni a settimana
Modalità di esame
Prova scritta e in laboratorio.
Modalità di erogazione
Lezioni e laboratorio
Canale 2
FRANCESCO LEOTTA Scheda docente

Programmi - Frequenza - Esami

Programma
0. Ciclo di vita e qualità del software Il contesto organizzativo. Il ciclo di sviluppo dei programmi: raccolta dei requisiti, analisi, progettazione & realizzazione, verifica & manutenzione. Le qualità del software: qualità esterne & interne. La modularizzazione. Criteri per la modularizzazione. Object-orientation. 1. Introduzione a Java Allocazione di variabili e di oggetti, passaggio di parametri, costruttori. Package, derivazione tra classi, ereditarietà, classi astratte, interfacce. Uso di librerie predefinite, collection framework, uso di classi del collection framework, iteratori. IO. Interfaccie grafiche (Java Swing). Socket. Concorrenza in Java. Debugging e JUnit. Saranno inoltre trattati per completezza Lambda expressions, thread pools ed asynchronous execution. 2. La fase di analisi Introduzione alla fase di analisi. Il linguaggio UML per l'analisi. Diagrammi strutturali e diagrammi comportamentali e d'interazione: Diagrammi delle Classi, Diagrammi degli oggetti, Diagrammi Stati e Transizioni, Diagrammi delle Attività. Specifica. La metodologia di analisi. Verifiche di qualità. 3. La fase di progetto Obiettivi e risultati attesi della fase di progetto. Specifica degli algoritmi. Responsabilità sulle associazioni. Uso di strutture di dati. Schemi realizzativi per oggetti e valori. Gestione degli eventi. Aspetti legati alla concorrenza. Pattern realizzativi. API delle classi Java progettate. 4. La fase di realizzazione Realizzazione in Java dei diagrammi strutturali, comportamentali e d'interazione. La realizzazione di classi. La realizzazione di associazioni. Uso dell'ereditarietà. Programmazione ad eventi e concorrente per realizzare comportamenti dinamici.
Prerequisiti
Non sono necessarie particolari conoscenze pregresse
Testi di riferimento
Slide fornite dai docenti e materiale per le esercitazioni. Un manuale Java (se non se ne possiede uno, viene suggerito Cay Horstmann, 2018: Java per impazienti. Pearson)
Frequenza
Non è prevista frequenza obbligatoria
Modalità di esame
L'esame consiste in due prove: (1) una prova al calcolatore che è una idoneità sulla programmazione in java; (2) uno scritto su tutti gli aspetti di analisi, progettazione e realizzazione secondo le modalità viste a lezione. La prova al calcolatore da accesso alla prova scritta. La prova scritta si svolge in aula attraverso la produzione di un elaborato cartaceo e da il voto all'intero esame. Non è possibile fare la prova scritta senza aver superato prima la prova al calcolatore. Tuttavia una volta superata la prova al calcolatore essa vale anche per gli appelli successivi (cioè non va ridata all'appello dove ci si presenta per la prova scritta).
Modalità di erogazione
Il corso si svolge in didattica frontale in aula ed in laboratorio. Durante il laboratorio, lo studente potrà mettere in pratica quanto appreso durante le lezioni in aula.
  • Codice insegnamento1018706
  • Anno accademico2024/2025
  • CorsoIngegneria Informatica e Automatica
  • CurriculumAutomatica
  • Anno2º anno
  • Semestre1º semestre
  • SSDING-INF/05
  • CFU9
  • Ambito disciplinareIngegneria informatica