Fondamenti di Programmazione B
Docente: Prof. Gianfranco Rossi

Programma del corso
Anno accademico 2016-17



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.
  • Struttura e funzionamento di un compilatore [3, cap. 1 fino a p. 15]
  • 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).

  •  
    Progettazione e programmazione modulare
  • 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]. Preprocessing condizionale
  • Progettazione ed implementazione di un'applicazione in C++.

  •  
    Introduzione al linguaggio Java [4]
  • 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.

  •  
     

    Materiale didattico

    Testo consigliato (vedi sotto)  +  materiale vario per parti non coperte dal precedente (vedi riferimenti nel programma del corso).

    Testo consigliato:

    Altri riferimenti: