Questo testo
raccoglie gran parte delle lezioni del corso di Programmazione
Orientata agli Oggetti (POO) che il prof. Libero Nigro svolge da diversi anni
presso il corso di laurea in Ingegneria Informatica dell'Universit�
della Calabria. Le lezioni assumono che l'allievo abbia gi� seguito
un primo corso di Fondamenti di Informatica e dunque abbia gi�
familiarizzato con i concetti fondamentali di algoritmo, calcolatore e
risoluzione algoritmica di problemi secondo lo stile procedurale. I
primi due capitoli del testo, comunque, richiamano gli argomenti di
base della programmazione procedurale in Java, cio� i tipi primitivi,
le strutture di controllo e la gestione di strutture dati array
unitamente allo sviluppo di diversi programmi dimostrativi. Dal terzo
capitolo in poi si approfondisce la programmazione orientata agli
oggetti in Java e la messa a punto di classi "tagliate su
misura" delle applicazioni, organizzate in biblioteche di moduli
riutilizzabili, robuste rispetto al verificarsi di eccezioni, ed
eventualmente dotate di interfaccia grafica di interazione (GUI). Lo
studio della POO include i meccanismi di programmazione mediante tipi
generici, e approfondisce classi proprie della libreria di Java ed in
particolare il collection framework (liste, set e mappe) considerato
il suo ruolo strategico ai fini delle applicazioni. Successivamente si
forniscono elementi di conoscenza riguardanti l'implementazione di
collezioni custom lineari (liste concatenate) e non lineari (alberi e
grafi), le tecniche di programmazione ricorsiva, si introducono i
concetti di complessit� degli algoritmi, si presentano algoritmi
efficienti di ordinamento, si discutono alcune strutture di dati e le
nozioni dello unit testing. I meccanismi della POO vengono messi in
pratica attraverso il progetto e lo sviluppo di applicazioni non
banali. In particolare, si mostra una realizzazione ad oggetti di un
sistema software che emula un calcolatore didattico (RASP) utilizzato
per la programmazione in assembler, ed una libreria di classi a
supporto di programmi basati sui grafi. Un capitolo a parte �
dedicato ad un'introduzione alla programmazione multi-thread e al
progetto di classi thread-safe, con diversi esempi di programmi
concorrenti. Chiudono il testo due appendici nelle quali
rispettivamente vengono studiati (a) la rappresentazione in bit delle
informazioni, (b) il calcolatore didattico RASP. Il testo si
caratterizza per uno stile di presentazione "essenziale" ma
rigoroso, e per la "prevalenza del codice", ossia la
scrittura dettagliata di programmi completi sui vari argomenti
affrontati. Si ritiene che il testo possa essere utile nel biennio di
ingegneria informatica o dei corsi di studio in informatica.
E' possibile
scaricare il codice aggiornato e una Errata Corrige accedendo alla
pagina http://www.lis.dimes.unical.it
Teaching -> Programmazione Orientata agli Oggetti
Christian Nigro � un professionista che opera nell'ambito dell'ingegneria del software. I suoi interessi sono centrati sulle metodologie di sviluppo di sistemi software lato server, basati su Java o su tecnologie affini, e sullo sviluppo di software per dispositivi mobili. Particolare attenzione � rivolta alla specificazione, progetto e implementazione di sistemi concorrenti e distribuiti.
Libero Nigro (www.lis.deis.unical.it/~nigro) � un professore ordinario di Ingegneria Informatica presso la facolt� di Ingegneria dell'Universit� della Calabria (UNICAL). E' titolare dei corsi di Programmazione Orientata agli Oggetti, erogato al primo anno degli studi in Ingegneria Informatica, e di Ingegneria del Software per Sistemi in Tempo Reale e ad Agenti, rivolto agli studenti della laurea specialistica in Ingegneria Informatica. E' responsabile del Laboratorio di Ingegneria del Software (www.lis.deis.unical.it) presso il DIMES/UNICAL. I suoi interessi di ricerca riguardano la modellazione (mediante strumenti formali come reti di Petri, automi temporizzati etc.), l'analisi (basata su simulazione o verifica esaustiva), il progetto e l'implementazione di sistemi software concorrenti, tempo dipendenti, multi-agente o basati su servizi, in ambiente centralizzato o distribuito/parallelo.