FONDAMENTI DI PROGRAMMAZIONE B ( cod. 1000749)
Insegnamento di INFORMATICA (Corsi di Laurea)
Facoltà di Corsi di Laurea triennale (D.M. 270/04)
TIPOLOGIA DELL'INSEGNAMENTO: ATTIVITÀ FORMATIVE DI BASE
Lingua Insegnamento:
Italiano
FREQUENZA FACOLTATIVA
Obiettivi
Il corso si propone di fornire le basi sia teoriche che pratiche
della programmazione "orientata agli oggetti", utilizzando come linguaggio
di riferimento il linguaggio di programmazione C++.
Prerequisiti
I concetti e le tecniche di base della
programmazione imperativa forniti nel
corso di Fondamenti di Programmazione A
Contenuti dell'insegnamento
Fondamenti di programmazione. Programmazione object-oriented. Linguaggio di programmazione C++
Programma esteso
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 di inserimento ed estrazione.
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)
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: con allocazione statica e con allocazione dinamica; definizione e uso distruttore. Classe vett: ridefinizione operatori [] e = (assegnamento); definizione e uso costruttore di copia.
Standard Template Library (STL). Cenni ai "contenitori" della STL, in particolare vector.
PROGRAMMAZIONE "OBJECT-ORIENTED" (O-O)
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). "Programming-in-the-large" vs. "Programming-in-the-small".
La nozione di modulo. La modularizzazione nella fase di progettazione e di realizzazione. Classi e modularizzazione in C++. Programmi divisi in piu' file. Funzioni e campi di classi static.
Progettazione ed implementazione di un'applicazione in C++.
LINGUAGGIO JAVA
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).
Bibliografia Consigliata
L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.
Docenti
Anno accademico:
2012
Anno di corso:
1
Semestre:
1
Numero CFU:
6
SSD:
INFORMATICA (INF/01)
Ambito:
Formazione informatica di base
Ore di attivita frontale:
48 






