Diario delle lezioni


Dettaglio degli argomenti svolti durante le lezioni.

  • Lezione del 25-09-2017
    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.
  • Lezione del 26-09-2017
    Principi di base dell'orientazione agli oggetti. Classi, oggetti ed ereditarietà. Introduzione all'analisi. Introduzione ad UML. Oggetti. Classi. Attributi. Associazioni. Link. Ruoli.
  • Lezione del 02-10-2017
    Attributi di associazione. Esercitazione. La molteplicità delle associazioni ed attributi.
  • Lezione del 03-10-2017
    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.
  • Lezione del 09-10-2017
    Ripasso su Generalizzazioni e Specializzazione di attributi e associazioni. Le Operazioni. Esercitazione.
  • Lezione del 10-10-2017
    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.
  • Lezione del 16-10-2017
    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.
  • Lezione del 30-10-2017
    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.
  • Lezione del 31-10-2017
    Qualificatori dei campi dato. Overloading di funzioni. I construttori. Esercitazione.
  • Lezione del 06-11-2017
    I package ed il loro uso. Livelli di accesso di una classe. Derivazione fra classi. Principi fondamentali della derivazione. Gerarchie di classi in Java. Casting. Livelli di accesso dei campi di una classe. Regole di visibilità tra campi.
  • Lezione del 07-11-2017
    Costruttori di classi derivate. Overloading e Overriding. Late binding. Classi e metodi final.
  • Lezione del 13-11-2017
    Sovrascrittura dei campi dati. Le classi astratte. Le interfacce. Esercitazione. La classe Object. Overriding della funzione toString(). La classe Java Class. La funzione isInstance(). L'operatore instanceof. La funzione getclass().
  • Lezione del 14-11-2017
    Uguaglianza superficiale e profonda tra oggetti. Overriding della funzione equals(). Uguaglianza profonda in classi derivate. Overriding della funzione hashCode().
  • Lezione del 20-11-2017
    Copia superficiale e profonda di oggetti. Overriding della funzione clone(). Copia profonda in classi derivate. Gli oggetti mutabili ed immutabili. Esercitazione.
  • Lezione del 21-11-2017
    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.
  • Lezione del 27-11-2017
    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.
  • Lezione del 28-11-2017
    Esercitazione su diagrammi delle classi UML, diagrammi dei casi d'uso UML e specifica delle operazioni.
  • Lezione del 04-12-2017
    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.
  • Lezione del 05-12-2017
    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.
  • Lezione del 11-12-2017
    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.
  • Lezione del 12-12-2017
    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.
  • Lezione del 18-12-2017
    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.
  • Lezione del 19-12-2017
    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.