Vai al contenuto principale

Università degli Studi di Parma, il mondo che ti aspetta

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.
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