Diario delle lezioni


Dettaglio degli argomenti svolti durante le lezioni.

  • Lezione del 28-09-2018
    Informazioni generali sul corso: obiettivi e motivazioni. Gli attori nella progettazione del SW. Classificazione delle applicazioni SW. Ciclo di vita del SW. Qualità interne ed esterne. Principi guida nello sviluppo del SW. La modularizzazione. I principi della modularizzzazione. Esempi di cattiva e buona modularizzazione.
    - Slide del corso (pdf e pdf).
  • Lezione del 29-09-2018
    Principi di base dell'orientazione agli oggetti. Classi, oggetti ed ereditarietà. Introduzione all'analisi. Introduzione ad UML. Oggetti. Classi. Attributi. Associazioni. Link. Ruoli.
    - Slide del corso (pdf e pdf).
  • Lezione del 04-10-2018
    Attributi di associazione. Esercitazione. La molteplicità delle associazioni ed attributi.
    - Slide del corso (pdf).
  • Lezione del 05-10-2018
    Le associazioni n-arie. I commenti. Le associazioni ordinate. Generalizzazione ed ereditarietà in UML. Ereditarietà multipla. Il problema delle classi disgiunte. La specializzazione di attributi ed associazioni. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 16-10-2018
    Ripasso su Generalizzazioni e Specializzazione di attributi e associazioni. Le Operazioni. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 17-10-2018
    Specializzazione di operazioni. Tipo di dato complessi. Semantica dei diagrammi delle classi: riassunto. Aspetti metodologici nella costruzione del diagramma delle classi. Controllo di qualità sul diagramma delle classi. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 23-10-2018
    Ripasso diagramma delle classi. Esercitazione con testi di esame. - Slide del corso (pdf) - testo esame (pdf).
  • Lezione del 24-10-2018
    Il diagramma degli use case. Cosa è uno Use Case. Gli Attori. Le associazioni. I Documenti di Specifica. La specifica di una Classe. La specifica di un Use Case. La specifica di una operazione. Precondizioni e Postcondizioni. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 08-11-2018
    Introduzione al linguaggio Java. La macchina virtuale di Java ed la compilazione di un programma Java. Tipi di dato in Java. Riferimenti ed oggetti. Allocazione della memoria. Campi dati static. Funzioni in Java. Comunicazione fra unità di programma. Il Side-effect.
    - Slide del corso (pdf).
  • Lezione del 09-11-2018
    Qualificatori dei campi dato. Overloading di funzioni. I construttori. Esercitazione. I package ed il loro uso. Livelli di accesso di una classe. Derivazione fra classi. Principi fondamentali della derivazione. Gerarchie di classi in Java.
    - Slide del corso (pdf, pdf).
  • Lezione del 15-11-2018
    Casting. Livelli di accesso dei campi di una classe. Regole di visibilità tra campi. Costruttori di classi derivate. Overloading e Overriding. Late binding. Classi e metodi final.
    - Slide del corso (pdf).
  • Lezione del 16-11-2018
    Qualificatori dei campi dato. Overloading di funzioni. I construttori. Esercitazione. I package ed il loro uso. Livelli di accesso di una classe. Derivazione fra classi. Principi fondamentali della derivazione. Gerarchie di classi in Java. Sovrascrittura dei campi dati. Le classi astratte. Le interfacce. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 22-11-2018
    La classe Object. Overriding della funzione toString(). La classe Java Class. La funzione isInstance(). L'operatore instanceof. La funzione getclass(). Uguaglianza superficiale e profonda tra oggetti. Overriding della funzione equals(). Uguaglianza profonda in classi derivate. Overriding della funzione hashCode(). Copia superficiale e profonda di oggetti. Overriding della funzione clone(). Copia profonda in classi derivate. Gli oggetti mutabili ed immutabili. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 23-11-2018
    Le eccezioni. Propagazione delle eccezioni. Le istruzioni try-catch-finally. La clausola throws. Eccezioni checked vs unchecked. Gerarchia delle eccezioni. Definire una propria classe di eccezioni. Come lanciare una eccezione. Introduzione al Java Collections Framework. Interfacce del Collections Framework. I Generics. Interfaccia Collection. Interfaccia Set. Gli iteratori ed il loro uso. Interfaccia List. Il ListIterator. Implementazioni di Collection.
    - Slide del corso (pdf, pdf).
  • Lezione del 29-11-2019
    Esercitazione su diagrammi delle classi UML, diagrammi dei casi d'uso UML e specifica delle operazioni.
    Input alla fase di progetto. Output della fase di progetto. Caso di studio. Progetto: algoritmi. Progetto: responsabilità sulle associazioni. Molteplicità e responsabilità. Tabella delle responsabilità. Responsabilità dei ruoli. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 30-11-2019
    Scelta delle strutture dati. Corrispondenza tra tipi UML e JAVA. Tabella di corrispondenza tipi UML e Java. Realizzazione di tipi UML. Gestione delle precondizioni: verifica lato server e verifica lato client. Gestione delle proprietà di classi UML ed assunzioni di default. Tabella di gestione delle proprietà di classi UML. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 06-12-2019
    La fase di realizzazione: input ed output. Traduzione in Java del diagramma degli use case. Traduzione in Java del diagramma delle classi. Realizzazione di classi UML con soli attributi: metodologia per i campi dati e per i campi funzione. Il problema dei valori non ammessi: verifica lato server e verifica lato client. Gestire la molteplicià degli attributi. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 07-12-2019
    Realizzare classi con attributi e operazioni. Realizzazione di associazioni. Associazione con molteplicità 0..1 a responsabilità singola e senza attributi. Associazioni che insistono più volte sulla stessa classe. Associazione con molteplicità 0..* a responsabilità singola e senza attributi. Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 13-12-2019
    La realizzazione di attributi di associazione. La realizzazione naive e non. Associazioni 0..1 con attributi e associazioni 0..* con attributi. Responsabilità doppia (caso con molteplicità 0..1). Esercitazione.
    - Slide del corso (pdf).
  • Lezione del 14-12-2019
    Responsabilità doppia. Come gestire vincoli di cardinalità massima e minima. Le associazioni n-arie. Realizzazione di generalizzazioni. Information hiding e generalizzazione. Generalizzazione e strutturazione in package. Esercitazione.
    - Slide del corso (pdf).