Fondamenti di Programmazione
B Docente: Prof. Gianfranco Rossi
Programma del corso Anno accademico 2011-12
Costrutti e meccanismi
Il costrutto class: dichiarazione, creazione di oggetti, funzioni proprie
ed invocazione di funzioni, inizializzazione di oggetti (costruttori), es.
classe data semplificata. Nozioni di "information hiding" e
"incapsulamento".
Overloading di funzioni ed operatori. Ridefinizione operatori >>
e <<.
Parametri "const reference" e "reference return". Parametri di default.
Gestione delle eccezioni. Motivazioni, meccanismi.
Classi e funzioni template: dichiarazione, istanziazione.
Tipi di dato astratti (ADT) [2,
p. 224, par. 10.1, 12.2]
La nozione di tipo di dato astratto.
Esempi di tipi di dato astratti realizzati in C++.
Classe razionale.
Classe intLista.
Classe predefinita string.
Classe intPila e pila<t>: con allocazione statica e
con allocazione dinamica; definizione e uso distruttore.
Classe vett<t>: ridefinizione operatori [] e =
(assegnamento); definizione e uso costruttore di copia.
Standard Template Library (STL). Cenni ai "contenitori" della STL,
in particolare vector.
Nozione di oggetto, classe (attributi, metodi), istanza, sistema
ad oggetti.
Ereditarietà: dichiarazione, ridefinizione funzioni e dati. Campi
protected. Ereditarieta' multipla (cenni). Esempio
classe persona e classe studente.
Progettazione e programmazione modulare
Ciclo di sviluppo dei programmi (cenni) [2,
par. 1.2, 2.1.1]. "Programming-in-the-large" vs. "Programming-in-the-small"
[3, cap. 7 fino a p. 206].
La nozione di modulo. La modularizzazione nella fase di progettazione e
di realizzazione [2,
par. 9.1, 9.3, 9.4, 9.5]. Classi e modularizzazione in C++. Programmi divisi
in piu' file [2, par. 4.11]. Funzioni e campi di classi
static.
Progettazione ed implementazione di un'applicazione in C++.
Cenni all'evoluzione di Java. Caratteristiche e componenti. Modalita'
di esecuzione: compilazione vs. interpretazione. La Java Virtual Machine.
Struttura di un programma Java. Tipi semplici primitivi. I/O di base.
Costrutti di controllo. Tipi strutturati: array. Reference e oggetti.
Garbage collection. Stringhe (cenni). Metodi statici e non. Passaggio
parametri.
Il costrutto class. Dichiarazione e istanziazione. Esempio
classe Razionale. Ereditarieta'. Esempio classi Rettangolo
e Quadrato. Reference this e super. Polimorfismo.
Principio di sostituibilita' tra classe base e sottoclasse e "down-casting".
Gerarchia di classi (classe java.lang.Object). Tipi "wrapper".
Interfacce e implementazioni. Interfacce ed ereditarieta'. Realizzazione
ereditarieta' multipla in Java (cenni).
Interfacce Grafiche (GUI) in Java. AWT e Swing.
Tipi di oggetti di una GUI in Java. Finestre (classe JFrame).
Layout Manager. Pannelli (classe JPanel). Eventi e Listener.
Interfaccia ActionListener.
Materiale didattico
Testo consigliato (vedi sotto) + materiale
vario per parti non coperte dal precedente (vedi riferimenti nel programma
del corso).
[2] M.Cadoli,
M.Lenzerini, P.Naggar, A.Schaerf. Fondamenti della progettazione di
programmi. Principi, tecniche e loro applicazioni in C++, CittaStudiEdizioni
di UTET Libreria, 1997.
[3] C.Ghezzi, M.Jazayeri.
Programming Language Concepts. J.Wiley & Sons, 1987.