Fondamenti di Programmazione
B Docente: Prof. Gianfranco Rossi
Programma del corso Anno accademico 2015-16
Costrutti e meccanismi in C++
Il costrutto class: dichiarazione, creazione di oggetti, funzioni proprie
ed invocazione di funzioni proprie, inizializzazione di oggetti (costruttori). Esempio
classe data semplificata. Nozioni di "information hiding" e
"incapsulamento".
Funzioni proprie static.
Overloading di funzioni. Overloading di operatori. Ridefinizione operatori >>
e <<.
Parametri "const reference" e "reference return". Parametri di default.
Gestione delle eccezioni. Motivazioni, meccanismi.
Classi e funzioni template: dichiarazione, istanziazione.
Traduzione ed esecuzione programmi.
Descrizione della sintassi di un linguaggio
(cenni) [v. ad es. qui]).
Diagrammi sintattici [v. ad es. qui]
e BNF [v. ad es. qui].
Compilazione vs. interpretazione. La Java Virtual Machine
[v. ad es. qui].
Tipi di dato astratti in C++
La nozione di tipo di dato astratto (ADT): specifica ed implementazione. [2,
p. 224, par. 10.1, 12.2]
Esempi di tipi di dato astratti realizzati in C++.
Classe razionale.
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.
Implementazione di strutture dati dinamiche in C++. Liste semplici concatenate.
Alberi binari di ricerca rappresentazione,
ricerca, inserimento nodi, visite.
Programmazione "Object-Oriented" (O-O) in C++
Nozioni di oggetto, classe (attributi, metodi), istanza, sistema
ad oggetti, ereditarietà. [2,
par. 2.3.2]
Ereditarietà in C++: dichiarazione, ridefinizione funzioni e dati. Campi
protected. Esempio
classe persona e classe studente. Ereditarieta' multipla (cenni).
Java vs. C++. Struttura di un programma Java. Tipi semplici primitivi. I/O di base.
Costrutti di controllo. Metodi statici e non. Passaggio
parametri. Esempi di semplici programmi Java.
Tipi strutturati: array. Reference e oggetti.
Classe predefinita String. Garbage collection (cenni).
Il costrutto class. Dichiarazione e istanziazione. Esempio di ADT in Java: la
classe Razionale.
Il costrutto package. Visibilità classi e campi. package di libreria (cenni).
Gestione delle eccezioni in Java.
Programmazione "Object-Oriented" in Java
Ereditarieta'. Esempio classi Rettangolo
e Quadrato. Reference this e super.
Principio di sostituibilita' classe-sottoclasse e "down-casting".
Gerarchia di classi (classe java.lang.Object).
Tipi "wrapper".
Interfacce e implementazioni. Interfacce ed ereditarieta'.
Il "Collection Framework" di Java. Pricipali caratteristiche di Set, List e Vector
e relativa gerarchia di classi e interfacce.
Implementazione di strutture dati dinamiche in Java. Alberi binari di ricerca: rappresentazione,
ricerca, inserimento nodi, visite.
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.
Implementazione di strutture dati dinamiche.
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.