Laboratorio di tecnologie dell'informazione
Registro lezioni a.a. 2014-2015
Registro esercitazioni a.a. 2014-2015
5 Marzo 2015 - 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++:
- namespace
- dichiarazione variabili locali
- parametri di default
- compilazione di "hello world" con Eclipse
- funzionamento del compilatore e linker
- linee guida di stile
Lucidi:
Esercizi:
- Scrivere un programma con una funzione che saluta una persona il cui nome è passato com std::string. Dare un valore di default al nome. Il codice deve essere diviso in un file .cpp contenente la funzione main ed un .h + .cpp che contiene la funzione di saluto.
Possibile soluzione:
11 Marzo 2015 - laboratorio 3 ore:
- Creazione di un progetto C++ in Eclipse
- Esempio di "Hello World" in C++:
- compilazione
- Programma suddiviso in più unità di compilazione
Lucidi:
Esercizio:
- modificare la funzione di saluto del programma della lezione precedente per aggiungere un argomento di tipo booleano che indica se il saluto è fatto in inglese (se true) o in italiano (se false)
Possibile soluzione:
12 Marzo 2015 - 3 ore:
Classi ed oggetti
- ADT
- Incapsulazione
- perché usare le classi
- Open-Closed Principle
- identificazione delle classi
- classi in C++
- definizione delle classi
- livelli di visibilità dei membri
- attributi
- metodo e passaggio parametri per riferimento
Lucidi:
3-classes and objects.pdf
18 Marzo 2015 - 3 ore laboratorio:
Uso di argomenti di default e non in funzione
Uso del debugger
Scrivere un programma procedurale in ottica OO
Codice laboratorio:
19 Marzo 2015 - 3 ore:
Classi ed oggetti
- attributi
- metodo e passaggio parametri per riferimento
- overloading dei metodi
- overloading di operatori
- creazione di oggetti
- costruttori
- distruttori
Codice:
25 Marzo 2015 - 3 ore laboratorio:
- creazione di classi
- costruttori non di default e con lista di inizializzazione
- composizione tra classi
- allocazione dinamica oggetti
- passaggio argomenti per riferimento
Codice laboratorio:
26 Marzo 2015 - 3 ore:
Classi ed oggetti
- self reference (this)
- membri statici
- friends
- SRP
Linee guida di stile per la programmazione
Lucidi:
3-classes and objects
3b-coding style guidelines
1 Aprile 2015 - 3 ore laboratorio:
- Costruttori explicit
- metodi e attributi statici
- funzione friend
9 Aprile 2015 - 3 ore:
Ereditarietà
- perché usare l'ereditarietà
- ereditarietà in C++
- livelli di accesso in ereditarietà
- ereditarietà e inclusione
- ereditarietà pubblica
- ereditarietà pubblica e privata: relazioni
- ereditarietà: costruttori e distruttori
- polimorfismo
- metodi virtuali
Lucidi:
4-inheritance.pdf
15 Aprile 2015 - 3 ore laboratorio:
- Creazione di gerarchie di classi
- Uso di puntatore a classe base
- Metodi virtuali
16 Aprile 2015 - 3 ore:
Ereditarietà
- distruttori virtuali
- Name hiding
- classi base astratte
Const-correctness
Cast
Lucidi:
4-inheritance.pdf
4c-const and cast.pdf
22 Aprile 2015 - 3 ore:
Ereditarietà:
- classi base astratte
23 Aprile 2015 - 3 ore:
Ereditarietà
- RTTI
- dynamic_cast
- typeid
- Ereditarietà multipla
- Problema del diamante
- Ereditarietà virtuale
Tecniche di ingegneria del software
- use case
- CRC
- diagrammi UML di classe
4-inheritance.pdf
4b-classes and objects-software engineering methods.pdf
6 Maggio 2015 - 3 ore laboratorio:
- Deep copy vs. shallow copy
- RTTI e dynamic_cast
7 Maggio 2015 - 3 ore:
- Sistemi di test e validazione del software
- Unit test
- Funzionamento del compilatore e linker
- la compilazione e linking
- librerie statiche
- librerie dinamiche
2d-compiler_libraries
3c-testing techniques
13 Maggio 2015 - 3 ore laboratorio:
- ereditarietà multipla
14 Maggio 2015 - 3 ore:
Programmazione generica:
- Motivazioni
- Template: funzioni e classi
20 Maggio 2015: 3 ore laboratorio:
Template:
- Funzione template
- Classe template
21 Maggio 2013 - 2 ore
STL
- concetti base di STL: container, iteratori ed algoritmi
- inizializzazione uniforme
- tipi di container
- iteratori
- algoritmi
- container sequenziali: vector, deque, list
- container associative: map, set, multimap, multiset
- function objects
- lambda expressions
Eccezioni
Lucidi:
27 Maggio 2015: 3 ore laboratorio:
esercitazione su eccezioni e string stream
- classi di eccezione derivate da classi di eccezione della libreria standard del C++
- uso delle eccezioni
28 Maggio 2015: 3 ore
Gestione risorse
- RAII
Design patterns
idiomi
Class Adapter
Object Adapter
Lucidi:
8-resource management.pdf
9-design_patterns-adapter.pdf
3 Giugno 2015: 3 ore laboratorio:
- Esercitazione su class adapter
- Esercitazione su object adapter
4 Giugno 2015: 3 ore
- gestione risorse:
- shared_ptr
- unique_ptr
- Observer
- push e pull
Lucidi:
8-resource management.pdf
10-design_patterns-observer.pdf
10 Giugno 2015: 3 ore laboratorio:
- Esercizi su observer
- push e pull
- Multimap e functor
- C++11 e STL
- C++11 e smart pointer
Materiale:
11 Giugno 2015: 3 ore
Design pattern e idiomi creazionali
- Simple Factory
- Factory Method
- Abstract Factory
- Singleton
Lucidi:
17 Giugno 2015 - 2 ore: laboratorio
Esercizi su pattern creazionali:
- Singleton
- Factory Method
- Abstract Factory
Uso di enum
Materiale: