Laboratorio di tecnologie dell'informazione
Registro lezioni a.a. 2010-2011
7 Marzo 2011 - 3 ore
- Introduzione al corso
- Structured vs. OO approach
- 3 Key OO concepts: ADT, inheritance, polymorphism
- objects and classes
- il linguaggio C++: storia e paradigmi di programmazione
- "Hello world" example
- Rivisitazione di "Hello world"
- differenze tra C e C++:
- namspace
- dichiarazione variabili locali
- parametri di default
Lucidi:
8 Marzo 2011 - 2 ore laboratorio
- compilazione di "hello world" con Eclipse
- linee guida di stile
Lucidi:
14 Marzo 2011 - 3 ore
Classi ed oggetti
- ADT
- Incapsulazione
- perché usare le classi
- Open-Closed Principle
- identificazione delle classi
- Single Responsibility Principle
- classi in C++
- definizione delle classi
- livelli di visibilità dei membri
- attributi
- metodo e passaggio parametri per riferimento
Lucidi:
15 Marzo 2011 - 2 ore laboratorio
- programma con diversi metodi di passaggio parametri (valore e riferimento)
- uso del debugger
21 Marzo 2011 - 3 ore
- overloading dei metodi
- creazione di oggetti
- costruttori e distruttori
- self reference (this)
- membri statici
- friends
- inner class
Lucidi:
3-classes and objects.pdf
22 Marzo 2011 - 2 ore laboratorio
Esercizio su:
- dichiarazione classe
- costruttore / distruttore
- metodi, getter/setter
- invocazione metodi
- membri statici
28 Marzo 2011 - 3 ore
Coding style guidelines
Metodi di ingegneria del software
- use case
- CRC
- UML class diagram
Ereditarietà
- perché usare l'ereditarietà
- ereditarietà in C++
- livelli di accesso in ereditarietà
- ereditarietà e inclusione
- ereditarietà pubblica
Lucidi:
- 3b-classes and objects-software engineering methods.pdf
- 3c-coding style guidelines.pdf
- 4-inheritance.pdf
4 Aprile 2011 - 3 ore
Ereditarietà
- ereditarietà pubblica e privata: relazioni
- ereditarietà: costruttori e distruttori
- polimorfismo
- metodi virtuali
- distruttori virtuali
- factory e polimorfismo
- name hiding
- fragile base class
- RTTI
11 aprile 2011 - 3 ore
Ereditarietà:
- ereditarietà multipla
- ereditarietà virtuale e "problema del diamante"
- classi astratte
- esempio di ereditarietà multiple e classi astratte: class adapter
Const-correctness
Cast:
- const_cast
- static_cast
- dynamic_cast
- reinterpret_cast
4-inheritance.pdf
4b-const and cast.pdf
12 aprile 2011 - 2 ore
- Esercitazioni su:
- ereditarietà multipla
- problema del diamante e ereditarietà virtuale
- classi astratte
2 Maggio 2011 - 3 ore
Template: funzioni e classi
3 Maggio 2011 - 2 ore
Esercitazione su classi e funzioni template
9 Maggio 2011 - 3 ore
- introduzione ad STL
- concetti base di STL: container, iteratori ed algoritmi
- tipi di container
- iteratori
- algoritmi
- container sequenziali: vector, deque, list
- container associative: map, set, multimap, multisite
- function objects
Lucidi:
6-stl.pdf
10 Maggio 2011 - 2 ore laboratorio
- esercitazione su STL
- esercitazione su veltro
- esercitazione su map
16 Maggio 2011 - 3 ore
- eccezioni
- gestione risorse:
- RAII
- auto_ptr
Lucidi:
7-exceptions.pdf
8-resource management.pdf
17 Maggio 2011 - 2 ore: laboratorio
- esercitazione su map
- purge di container di puntatori
- esercitazione su eccezioni
23 maggio 2011 - 3 ore:
- Design patterns
- idiomi
- Class Adapter
- Object Adapter
24 Maggio 2011 - 2 ore:
- Esercitazione su class e object adapter
30 Maggio 2011 - 3 ore:
- - Observer
31 maggio 2011 - 2 ore:
- Esercizi su observer
6 Giugno 2011 - 3 ore:
- Design pattern e idiomi creazionali
- Simple Factory
- Factory Method
- Abstract Factory
- Singleton
11-design_pattern-factory-singleton.pdf
7 Giugno 2011 - 2 ore:
- Esercitazione su Abstract Factory
- Esercitazione su Singleton