FONDAMENTI DI PROGRAMMAZIONE B
cod. 1000749

Anno accademico 2012/13
3° anno di corso - Secondo semestre
Docente
Gianfranco ROSSI
Settore scientifico disciplinare
Informatica (INF/01)
Ambito
A scelta dello studente
Tipologia attività formativa
A scelta dello studente
48 ore
di attività frontali
6 crediti
sede:
insegnamento
in - - -

Obiettivi formativi

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

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

L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.

Metodi didattici

Lezioni frontali in aula e esercitazioni assistite in
laboratorio informatico

Modalità verifica apprendimento

Esame orale, piu' sviluppo e dimostrazione di
un'applicazione pratica scrita in C++

Altre informazioni

Il corso prevede una sua pagina Web per tutte le informazioni generali, gestita direttamente dal docente (http://people.math.unipr.it/gianfranco.rossi/Teaching/FondProgr/index.html) e una pagina sul sistema di Web Learning dell'Ateneo per la gestione delle esercitazioni (http://lea.unipr.it/course/view.php?id=324).

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -

Contatti

Numero verde

800 904 084

Segreteria studenti

Numero verde: 800 904084

E-mail segreteria.scienze@unipr.it

 

Servizio per la qualità della didattica

Manager della didattica:
Dott. Marco Squarcia
Tel. +39 0521 906094
E-mail servizio smfi.didattica@unipr.it
E-mail del manager marco.squarcia@unipr.it

Presidente del corso di studio

Prof. Luigi Cristofolini
E-mail luigi.cristofolini@unipr.it
 

Presidente Vicario del corso di studio

Prof.ssa Eugenia Polverini
E-mail eugenia.polverini@unipr.it

Delegati orientamento in ingresso

Prof. Danilo Bersani
E-mail danilo.bersani@unipr.it

Prof.ssa Antonella Parisini
E-mail: antonella.parisini@unipr.it 

Prof. Francesco Cugini
E-mail: francesco.cugini@unipr.it 

Delegato orientamento in uscita

Prof. Alessio Bosio
E-mail alessio.bosio@unipr.it

Docenti tutor

Prof.ssa Stefania Abbruzzetti 
E-mail stefania.abbruzzetti@unipr.it

Prof. Andrea Baraldi
E-mail andrea.baraldi@unipr.it

Prof. Francesco Di Renzo
E-mail francesco.direnzo@unipr.it

Prof. Massimo Solzi
E-mail massimo.solzi@unipr.it

 

Delegati Erasmus

Prof. Bersani Danilo 
E-mail: bersani.danilo@unipr.it

Prof. Guido D'Amico
E-mail:guido.damico@unipr.it

Responsabile Assicurazione Qualità

Prof.ssa Stefania Abbruzzetti
E-mail stefania.abbruzzetti@unipr.it

Studenti tutor

Dott. Alessandro Testa
E-mail alessandro.testa@unipr.it

Delegato fasce deboli

Prof. Andrea Baraldi Tel: 0521.905234
E-mail: andrea.baraldi@unipr.it