PROGRAMMAZIONE AD OGGETTI
cod. 1009653

Anno accademico 2023/24
1° anno di corso - Secondo semestre
Docente
Luca VELTRI
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
Ingegneria informatica
Tipologia attività formativa
Caratterizzante
72 ore
di attività frontali
9 crediti
sede: PARMA
insegnamento
in ITALIANO

Obiettivi formativi

Gli obiettivi sono di fornire allo studente competenze che riguardano:
- Programmazione orientata agli oggetti, con particolare riferimento al linguaggio C++
- Programmazione generica in C++
- Principali strutture dati e librerie standard del C++
- Design Pattern
- Programmazione di interfacce grafiche
- Programmazione multithread
- Accenno ad altri linguaggi orientati agli oggetti (Java e Python)

Prerequisiti

Conoscenza di base di un linguaggio di programmazione.

Contenuti dell'insegnamento

Il corso fornisce una introduzione alla programmazione orientata agli oggetti, utilizzando come riferimento il linuaggio C++.

Programma esteso

Lezione 1: introduzione OOP, primo esempio
Lezione 2: differenze col C, passaggio di parametri come riferimento
Laboratorio 1: compilazione a riga di comando, passaggio parametri, struct SafeIntArray
Lezione 3: ADT, classi e oggetti, classi in C++, livelli di accesso, sovraccaricamento dlle funzioni e metodi, sovraccaricamento degli operatori
Lezione 4: sovraccaricamento degli operatori, costruttori, sovraccaricamento dei costruttori, costruttore default
Laboratorio 2: costruttori, sovraccarico
Lezione 5: costruttori, lista di inizializzazione, inizializzazione uniforme, costruttori con delega, distruttore, membri statici
Lezione 6: friend, classi annidate, costanza
Laboratorio 3: friend, costanza, operatori
Lezione 7: copia superficiale e copia profonda, esempi
Lezione 8: string, iterator, auto, decltype, range-for
Laboratorio 4: copia profonda, fstream
Lezione 9: iteratori, iostream, fstream; ereditarietà
Lezione 10: tipi di ereditarietà, costruttori, distruttori, UML
Laboratorio 5: ereditarietà
Lezione 11: late binding, virtual, override, final, classi astratte
Lezione 12: conversioni di tipi, ereditarietà multipla
Laboratorio 6: classi astratte
Lezione 13: programmazione generica, funzioni template, specializzazione di funzioni template, classi template, specializzazione di classi template
Lezione 14: ADT, tipo di dato concreto basato, ADT pila, implementazione basata su array e su lista collegata, ADT coda, implementazione basata su array
Laboratorio 7: classi template
Lezione 15: implementazione di coda basata lista collegata, ADT lista, ADT albero
Laboratorio 8: classi template
Lezione 16: albero binario, algoritmi di visita, ADT insieme, implementazione, ADT multiinsieme
Lezione 17: ADT mappa, implementazione con hashtable e con albero, ADT multimappa
Laboratorio 9: STL set e map
Lezione 18: STL, iteratori, vector, list, deque, set, map, pair, array, namespace, eccezioni
Lezione 19: gestione risorse e puntatori intelligenti, functor e espressioni lambda, GUI
Laboratorio 10: eccezioni, funzioni come parametri
Lezione 20: puntatori intelligenti, oggetti funzione, espressioni lambda
Lezione 21: compilazione, memoria programma, assembly, chiamata a funzione, gdb
Laboratorio 11: puntatori intelligenti, oggetti funzione, espressioni lambda
Lezione 22: introduzione al linguaggio Java; programmazione ad oggetti in Java
Lezione 23: introduzione al linguaggio Python
Laboratorio 12: programmazione in Python
Lezione 24: programmazione ad oggetti in Python

Bibliografia

Marco Bertini, Programmazione Object-Oriented in C++. Società Editrice Esculapio.

Luis Joyanes Aguilar, Fondamenti di programmazione in C++. Algoritmi, strutture dati e oggetti, McGraw-Hill.

Metodi didattici

Lezioni in aula (40 ore).
Esercitazioni in aula (8 ore).
Esercitazioni di laboratorio (24 ore).
Il materiale delle lezioni è presente sulla piattaforma Elly.
Per accedere al materiale è necessaria l’iscrizione al corso on line.

Modalità verifica apprendimento

Una prova di laboratorio (3 ore) comprendente un esercizio da svolgere al calcolatore e alcuni quiz.

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -

Referenti e contatti

Numero verde

800 904 084

Segreteria studenti

E. segreteria.ingarc@unipr.it

Servizio per la qualità della didattica

Manager della didattica:
Elena Roncai
T. +39 0521033663
E. servizio dia.didattica@unipr.it 
E. del manager elena.roncai@unipr.it

Presidente del corso di studio

Gianluigi Ferrari
E. gianluigi.ferrari@unipr.it

Delegato orientamento in ingresso

Giovanna Sozzi
E. giovanna.sozzi@unipr.it

Delegato orientamento in uscita

Guido Matrella
E. guido.matrella@unipr.it

Docenti tutor

Boni Andrea
E. andrea.boni@unipr.it
Caselli Stefano
E. stefano.caselli@unipr.it
Cucinotta Annamaria
E. annamaria.cucinotta@unipr.it
Nicola Delmonte
E. nicola.delmonte@unipr.it
Mucci Domenico
E. domenico.mucci@unipr.it
Saracco Alberto
E. alberto.saracco@unipr.it
Ugolini Alessandro
E. alessandro.ugolini@unipr.it
Vannucci Armando
E. armando.vannucci@unipr.it

Delegati Erasmus

Paolo Cova
E. paolo.cova@unipr.it
Corrado Guarino
E. corrado.guarinolobianco@unipr.it
Walter Belardi
E. walter.belardi@unipr.it

Referente assicurazione qualità

Massimo Bertozzi
E. massimo.bertozzi@unipr.it

Studenti tutor

SPAGGIARI Davide E. davide.spaggiari@unipr.it
MUSETTI Alex E. alex.musetti@unipr.it
BERNUZZI Vittorio E. vittorio.bernuzzi1@studenti.unipr.it
NKEMBI Armel Asongu E. armelasongu.nkembi@unipr.it
BASSANI Marco E. marco.bassani@unipr.it
ZANIBONI Thomas E. thomas.zaniboni@unipr.it
BOCCACCINI Riccardo E. riccardo.boccaccini@unipr.it
MORINI Marco E. marco.morini@unipr.it
SHOZIB Md Sazzadul Islam E. mdsazzadulislam.shozib@studenti.unipr.it