 |
     |
Programmazione a Oggetti
dott. Ivano Salvo - anno accademico 2005/06
|
Ultima modifica: 15 dicembre 2005
Introduzione
Il corso di
Programmazione ad Oggetti vengono introdotti i
concetti chiave della programmazione ad oggetti, poi applicati a specifici
linguaggi di programmazione (Smalltalk, Java, C++). Sarà dato ampio
spazio alle nozioni di classe, oggetto,
ereditarietà,
incapsulamento e scambio messaggi
Scopo del corso è quello di analizzare i principi base
della programmazione ad oggetti, inseriti nel contesto dell'evoluzione
dei linguaggi di programmazione, e quindi analizzare quali obiettivi
persegue e come li raggiunge.
Si cercherà di stimolare non solo l'apprendimento di linguaggi e
concetti, ma di stimolare la concettualizzazione dei problemi
seguendo la metodologia Object-Oriented.
Programma del corso
- Concetti Generali della Programmazione a Oggetti
Cenni all'evoluzione dei linguaggi di programmazione: astrazione sul
controllo e astrazione sui dati. Classi e oggetti. Sottoclassi.
Metodi e dynamic lookup. Classi astratte.
- L'ambiente di sviluppo SmallTalk
Cenni all'ambiente grafico di sviluppo.
Sintassi: messaggi unari, binari e keyword messages; ordine di
valutazione. Blocchi e iterazione. Costruttori. Metodi di classe e
metodi istanza. Le Collection Classes.
- Il linguaggio Java
Definizioni di classi e creazioni di oggetti. Costruttori e
inizializzazione degli oggetti. Definizione di sottoclassi.
Il sistema dei tipi e sottotipaggio. Polimorfismo indotto dal
sottotipaggio. Interfacce.
Type Soundness. Confronto tra linguaggi tipati staticamente e
dinamicamente (o non tipati). Eccezioni.
Cenni alla definizione e uso di packages. Cenni ai thread e alla
programmazzione concorrente in Java. Cenni alla progettazione di applet e
interfacce grafiche.
Materiale e testi di consultazione
-
Lucidi (a.a. 2003/04)
1. Evoluzione dei Linguaggi di Programmazione, astrazione
(.pdf)
2. Concetti generali Programmazione a Oggetti
(.pdf)
3. Linguaggio Smalltalk: formato messaggi, definizione di classi, late
binding
(.pdf)
4. Ancora su Smalltalk: blocchi, iterazione, collection classes, classi
astratte
(.pdf)
5. Inside Collection Classes
(.pdf)
6. Smalltalk: interfaccia grafica e ricorsione
(.pdf)
7. Il linguaggio Java: Aspetti Generali
(.pdf)
8. Definizioni di Classi in Java
(.pdf)
9. Interfacce e Sottotipi
(.pdf)
10. Ereditarietà
(.pdf)
11. Eccezioni e Packages;
(.pdf)
Libri
-
Smalltalk
Esistono numerosi testi scaricabili in formato pdf in rete
su
Smalltalk
di ottima
qualità. Personalmente seguo prevalentemente il testo di John Hunt:
Smalltalk and Object Orientation: an Introduction.
In particolare i primi capitoli generali sulla programmazione ad oggetti e
i capitoli da 4 a 15 per quanto riguarda Smalltalk.
Il libro di Ted Kaehler e Dave Patterson
A Taste of Smalltalk è molto simpatico, di piacevole lettura,
tutto concentrato attorno al problema della Torre di Hanoi. E contiene
eccellenti citazioni all'inizio di ogni capitolo!
Informazioni interessanti si trovano anche nel libro di Alex Sharp
SmallTalk by Example: the Developer's Guide"
-
Java
Il libro di Bruce Eckel,
Thinking in Java, liberamente scaricabile dalla rete, contiene tutte
le informazioni necessarie per il corso. E' un po' prolisso (piu' di mille
pagine), ma non c'e' di che spaventarsi: e' di facile lettura.
Esistono numerosi tutorial in rete: vivamente consigliato e' il
Java Sun
Tutorial, che tra l'altro contiene nell'ipertesto anche le specifiche
di molte classi e librerie standard.
Sul sito della Sun si puo' anche
scaricare il compilatore ed essere aggiornati sulle ultimi sviluppi di
Java.
Letture consigliate:
-
Design Principles behind SmallTalk
Daniel H. H. Ingalls, 1981
Interessante articolo sull'idea di costruire un linguaggio attorno ad
alcune (poche!) metafore ben scelte. Da leggere assolutamente.
-
Go To Statement Considered Harmful
Edsger W. Dijkstra, 1968
Un grande classico sempre attuale per la freschezza espositiva di un
grande "padre fondatore" degli algoritmi e dei linguaggi di
programmazione. Da leggere assolutamente.
Compilatori e tool software
Un buon compilatore Smalltalk da scaricare può essere la versione
non commerciale di Visual Works, reperibile sul sito della
Cincom .
Basta scaricare la virtual machine per la vostra architettura e il
pacchetto base di classi.
Se siete utenti Linux o Windows, potete anche scaricare il compilatore
exept .
Esoneri
Verrà fatto un esonero
in classe il 1/12/2005. Si tratta di un test con 24 domande a scelta
multipla. Con 24 punti si otterrà un bonus di 3 punti.
Con 22 e 23 un bonus di 2 punti. Tra 18 e 21 punti si avrà un bonus
di 1 punto.
Progetto
Ecco il testo del progetto da
fare in Java. Prevede un po' di scelte da parte vostra.
Faremo in dicembre una lezione interattiva di discussione del
progetto.
Specifiche Progetto
Orario
-
Lezioni: martedì 17-19 e giovedì 14-16;
Aula 3, Dip. Fisica, Istituto Fermi.
-
Laboratorio: mercoledì, giovedì e venerdì
8.30 - 13.30,
Gabbie, Via Salaria.
-
Ricevimento studenti (Via Salaria, stanza 310): mercoledì,
ore 11:30 - 12:30.
Modalità d'esame
L'esame consiste nella presentazione e discussione di un progetto.
Nel corso del colloquio saranno poste domande sui contenuti del
corso.
Consegna
Progetti
I progetti andranno consegnati qualche giorno prima della data
dell'esame.
Più precisamente:
entro il 5/6/2006 per sostenere l'esame il 8/6/2006
entro il 3/7/2006 per sostenere l'esame l'6/7/2006
entro il 11/9/2006 per sostenere l'esame il 14/9/2006
Per la consegna spedire un file (in formato tar.gz o .zip, non rar!) al
docente (salvo[_at_]di.uniroma1.it).
Chi fosse un possesso di un portatile, puo' discutere il progetto mostrando il suo funzionamento
proprio portatile [in ogni caso effettuare la consegna via mail].