Diario delle lezioni

  1. 9/3/16. Presentazione del corso. Richiami di aritmetica floating-point. Il diagramma del memory layout. Distinzione tra eccezioni verificate e non. Assegnato esercizio 27/3/08, #4.
  2. 11/3/16. Il sistema dei tipi Java. Relazioni di sottotipo e di assegnabilità. Conversioni forzate (cast). Regole dell'overriding. I tipi wrapper. Svolto esercizio assegnato.
  3. 16/3/16. Risoluzione dell'overloading e dell'overriding. Svolto esercizio 8/9/09, #2. Assegnato esercizio 27/11/09, #2.
  4. 18/3/16. La classe Class. Uguaglianza tra oggetti: il metodo equals. Svolto esercizio assegnato. Assegnato esercizio 22/3/13, #3.
  5. 23/3/16. Il metodo equals e il polimorfismo. Svolto esercizio assegnato. Visibilità protected. Copia superficiale e profonda di oggetti.
  6. 1/4/16. Il metodo clone e il polimorfismo. Classi interne. Assegnato esercizio 21/4/08, #1 (Triangolo).
  7. 6/4/16. Classi locali e anonime. Progettare e realizzare una lista concatenata in Java. Svolto esercizio assegnato.
  8. 8/4/16. Gli iteratori e il pattern ITERATOR. Le interfacce Iterator e Iterable. Programmazione tramite contratti. Assegnato esercizio BinaryTreePreIterator (2006).
  9. 13/4/16. Svolto esercizio CrazyIterator. Ordinamento tra oggetti: le interfacce Comparable e Comparator. I metodi per ordinare array e liste. Proprietà dei criteri di ordinamento.
  10. 15/4/16. Svolto esercizio Point. Il Typesafe Enum Pattern e le classi enumerate.
  11. 20/4/16. Valori enumerati che specializzano l'enumerazione. Discussione esercitazione CrowdGrader (BinaryTreePreIterator). Introduzione alle GUI con Swing/AWT. Il pattern MVC. I pattern OBSERVER e STRATEGY.
  12. 21/4/16. Prova intercorso alle ore 15:45 in A6.
  13. 22/4/16. I pattern DECORATOR e COMPOSITE e il loro uso in Swing/AWT. Introduzione ai generics: classi e metodi parametrici.
  14. 27/4/16. Introduzione al Java Collection Framework: Collection, List, Set, LinkedList, ArrayList, RandomAccess e HashSet. Implementare hashCode. Coerenza tra hashCode e equals.
  15. 29/4/16. SortedSet e TreeSet. Coerenza tra equals e relazione d'ordine. Classi parametriche e sottotipi, confronto con gli array. Parametri di tipo con limiti superiori. Assegnato esercizio 19/2/09, #1 (Container).
  16. 4/5/16. Il parametro di tipo jolly. Limiti superiori e inferiori per il jolly. Svolto esercizio assegnato.
  17. 6/5/16. Assegnati esercizi 3/9/12 (Bijection) e 24/6/15 (Controller). Svolto esercizio 22/1/13 (MyString). Le mappe: interfacce Map e SortedMap; classi HashMap e TreeMap.
  18. 18/5/16. Scelta dell'intestazione migliore per un metodo.
  19. 20/5/16. Implementazione dei tipi parametrici: la cancellazione. Limitazioni dei generics. Riflessione e la versione parametrica di Class. Svolto esercizio Bijection. Assegnato esercizio 31/1/14, #4 (scelta firma).
  20. 25/5/16. Introduzione al multi-threading. La classe Thread e l'interfaccia Runnable. Svolto esercizio assegnato. Assegnato esercizio 8/9/08, #3 (RunOnSet).
  21. 27/5/16. Comunicazione e sincronizzazione tra thread. La parola chiave synchronized. Svolto esercizio assegnato.
  22. Assegnato esercizio 11/2/13, #3 (concurrentFilter).
  23. 1/6/16. Le variabili di condizione in Java (metodi wait, notify, notifyAll). Il problema produttori-consumatori. Le code bloccanti del Java Collection Framework: BlockingQueue e sue implementazioni. Svolto esercizio assegnato. Svolto esercizio 7/2/11, #1 (VoteBox).
  24. 8/6/16. Svolto esercizio 9/7/12, #1 (MysteryThread). Il Java Memory Model: regole di atomicità e visibilità. Il modificatore volatile.
  25. 10/6/16. Il Java Memory Model: regole di ordinamento. Il pattern FACTORY METHOD. Riepilogo ed esercitazione. Svolto esercizio 14/9/10, #4 (executeInParallel). Svolto esercizio 25/6/13, #4 (concatenazione iteratori).