Laboratorio di tecnologie dell'informazione

Registro lezioni a.a. 2013-2014

Registro esercitazioni a.a. 2013-2014


5 Marzo 2014 - 3 ore:

Introduzione al corso

Rivisitazione di "Hello world"

Differenze tra C e C++:

Lucidi:

1-presentazione.pdf
2-introduction.pdf
2b-hello world.pdf
2c-compiling-debugging hello world.pdf

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:
programma suddiviso in più unità di compilazione


10 Marzo 2014 - 3 ore:

Classi ed oggetti

Lucidi:

3-classes and objects.pdf

Esercizi:

Soluzioni:


12 Marzo 2014 - 3 ore:

Classi ed oggetti
- attributi
- metodo e passaggio parametri per riferimento
- overloading dei metodi
- overloading di operatori
- creazione di oggetti
- costruttori
- distruttori
- self reference (this)

Lucidi:

3-classes and objects.pdf

Esercizi:

Si scriva una classe "Character" con 4 attributi:

hp - intero
x, y - interi
category - stringa

Si scrivano i costruttori:
senza argomenti, con inizializzazione a valori di default con uso di lista di inizializzazione (hp 10, coordinate 0,0 e category "knight")
con 4 argomenti, di cui il primo (hp) non ha valori di default, gli altri valori di default sono quelli del costruttore precedente.
Si scriva un metodo move(int x, int y) che modifica il valore degli attributi. Si consideri l'uso di "this", dato l'uso dello stesso nome per gli argomenti che per gli attributi.

Si scriva una funzione test(Character c) che muove il personaggio alle coordinate 3, 4.
Si invochi la funzione passando sia un oggetto di tipo Character allocato staticamente che con "test(4)". Modificare il codice della classe Character per evitare la conversione implicita che accade nella chiamata "test(4)".
Modificare il passaggio degli argomenti della funzione test per poter modificare la posizione del personaggio allocato in main.

Soluzione:


17 Marzo 2014 - 3 ore:

Classi ed oggetti
- membri statici
- friends
- SRP

Linee guida di stile per la programmazione

Lucidi:
3-classes and objects.pdf
3b-coding style guidelines.pdf


19 Marzo 2014 - 3 ore:

Sistemi di test e validazione del software
- Unit test

Funzionamento del compilatore e linker
- la compilazione e linking
- librerie statiche
- librerie dinamiche

Lucidi:
2d-compiler_libraries.pdf
3c-testing techniques.pdf


24 Marzo 2014 - laboratorio 3 ore:

Esercizi:

completare il codice scritto in laboratorio (file .zip):

Soluzione:


26 Marzo 2014 - 3 ore:

Ereditarietà

Lucidi:

4-inheritance.pdf


31 Marzo 2014 - 3 ore laboratorio

Esercizi:


2 Aprile 2014 - 3 ore:

Ereditarietà:

Const-correctness

Lucidi:

4-inheritance.pdf

4c-const and cast.pdf


7 Aprile 2014 - 3 ore laboratorio:

Ereditarietà:

Esercizi:

Materiale:


9 Aprile 2014 - 3 ore:

Ereditarietà:

Tecniche di ingegneria del software

Cast

Lucidi:

4-inheritance.pdf

4c-const and cast.pdf

4b-classes and objects-software engineering methods


14 Aprile 2014 - 3 ore laboratorio:

Materiale:


16 Aprile 2014 - 3 ore:

Lucidi:

5-templates


28 Aprile 2014 - 3 ore laboratorio:

Materiale: classe template per lista linkata e classe template per hash table (non fatta a lezione)

esercizio_140428


30 Aprile - 3 ore:

Lucidi:

6-stl


5 Maggio 2014 - 3 ore laboratorio:

Materiale:

Esercizi:


7 Maggio 2014 - 2 ore:

Materiale:

7-exceptions


12 Maggio 2014 - 3 ore laboratorio

Esercizio:

Materiale:

esercizio_exception


14 Maggio 2014 - 2 ore:

Materiale:

8-resource management

9-design_patterns-adapter


19 Maggio 2014 - 2 ore laboratorio


21 Maggio 2014 - 3 ore:

Lucidi:
8-resource management
10-design_patterns-observer


26 Maggio 2014 - 3 ore laboratorio:

Esercizio: estendere le classi Observer (astratte e concrete) fornite nel materiale per fare in modo di potersi attaccare e scollegare dall'observer a piacimento (e.g. implementare due metodi: void attach() e void detach()).

Materiale:

esercizio_ObserverPull

esercizio_ObserverPush


28 Maggio 2014 - 3 ore:

Lucidi:

11-design_pattern-factory-singleton


4 Giugno 2014 - 3 ore:

Ripasso del programma da ADT a eccezioni


9 Giugno 2014 - 2 ore: laboratorio

Esercizio: estendere il Factory Method del programma D&D per creare vari tipi di armi per Knight. Aggiungere metodo per creare mostri.
Estendere le classi dell'esercizio su Abstract Factory per aggiungere argomenti a finestra e bottoni.

Materiale:

esercizio_AbstractFactory

DandD_140609