INFORMAZIONI SU

Programmazione orientata agli oggetti

Programma dell'insegnamento - Corso di laurea in Informatica

Docente

  • Prof. Vitaliano Milanese

Indirizzo e-mail
vitaliano.milanese@uniud.it

Indirizzo Pagina Web Personale
Sito Web http://www.dimi.uniud.it/milanese

Crediti

6 CFU

Finalità

Il corso di Programmazione Orientata agli Oggetti intende affrontare le problematiche più significative del paradigma ad oggetti inteso quale estensione del paradigma imperativo. Punti chiave saranno quindi le trattazioni delle diverse forme di astrazione (procedurale, formalizzazione dello stato, modellazione di strutture dati, interazione fra processi) che sono legate allo sviluppo di programmi. La discussione di tali aspetti verrà sviluppata mediante l’analisi di problemi e la delineazione di soluzioni. Al fine di disporre di un riscontro operativo, verrà utilizzato un linguaggio di programmazione ad oggetti, di cui saranno preventivamente analizzati gli aspetti basilari.

Programma

Concetti e metodologie di programmazione. Classi, oggetti, metodi, messaggi. Protocollo di specifica per le classi e loro realizzazione mediante incapsulamento di variabili e metodi. Istanzazione di classi su oggetti e definizione del loro stato. Analisi funzionale di progettazione: identificazione delle componenti di un problema, definizione delle loro responsabilità e funzionalità, individuazione delle interazioni fra componenti, specifica dei relativi protocolli. Eccezioni e loro gestione. Ereditarietà e polimorfismo: gerarchie di classi, classi astratte e interfacce, classi interne; riscrivibilità di metodi in gerarchie di classi e loro selezione dinamica. Specializzazione e sostituibilità di implementazione. Pattern di progettazione: singleton, factory, chain of responsability, decorator, observer.

Linguaggio Java. Caratteristiche e costrutti principali del linguaggio. Realizzazione di classi, interfacce e classi astratte. Tipi, variabili, metodi, messaggi; specifiche statiche e dinamiche, livelli di protezione per dati e metodi. Classi parametriche. Costruttori e istanzazione di oggetti. Ereditarietà: costruzione di sottoclassi e polimorfismo. Riconoscimento a run-time di tipi. Classi interne: tipologie e utilizzo. Eventi. Eccezioni e loro gestione. Clonazione di oggetti. Thread: definizione, uso, sincronizzazione. Impiego del package Swing per la realizzazione di interfacce grafiche. Classi di utilità per l’impiego di strutture dati.

Bibliografia

T.Budd
Understanding Object-Oriented Programmino with Java
Addison-Wesley (2000)

B.Eckel
Thinking in Java, voll. 1-3
Pearson - Prentice Hall (2006)

Modalità d'esame

Scritto + orale