 |
     |
Programmazione a Oggetti
dott. Ivano Salvo - anno accademico 2006/07
|
Ultima modifica: 14 novembre 2006
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, scambio messaggi, polimorfismo e
come queste nozioni possano aiutare a produrre software elegante,
estensibile, riusabile.
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
- Evoluzione dei linguaggi di Programmazione
- Astrazione sul controllo:
- goto
- programmazione strutturata
- funzioni e procedure
- Astrazione sui dati:
- cella di memoria
- variabili con tipi
- costruttori di tipo
- tipi astratti di Dati
- Unendo astrazione sui dati e sul controllo: la Programmazione
a Oggetti.
- Il linguaggio Java
- Definizione di classi:
- regole di visibilità
- variabili di istanza e di classe;
- creazione degli oggetti; Costruttori.
- definizione di metodi; overloading.
- Definizione di interfacce:
- implementazione di interfacce
- Sottotipaggio.
- tipo statico e dinamico.
- Type Soundness
- polimorfismo indotto dal sottotipaggio.
- Definizione di sottoclassi
- costruttori
- overriding di metodi
- lookup dinamico dei metodi
- relazioni IS-A e IS-LIKE
- metodi, variabili, classi final.
- Eccezioni e 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. 2006/07)
1. Evoluzione dei Linguaggi di Programmazione, astrazione
(.pdf)
2. Concetti generali della Programmazione a Oggetti
(.pdf)
3. Il linguaggio Java: Aspetti Generali
(.pdf)
4. Definizioni di Classi in Java
(.pdf)
5. Interfacce e Sottotipi
(.pdf)
6. Ereditarietà
(.pdf)
7. Eccezioni e Packages;
(.pdf)
Per i lucidi relativi alle lezioni di C++, consultare la pagina
predisposta dal dott. Igor Melatti:
clicca qui!
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
C'è stata una prova intermedia il giovedì 9 novembre
2006
Ecco il test, e soprattutto le
soluzioni commentate.
Purtroppo i più saranno interessati solo ai punteggi attribuiti
Progetto
Ecco finalmente il testo del
progetto da implementare: Progetto
2006/07.
Chi volesse saperne di più sulle Collection Classes di
Smalltalk,
può consultare il capitolo 7 del libro di Ivan Tomek, The Joy of
SmallTalk,
oppure, per una introduzione sintetica,
vedere i lucidi su SmallTalk nelle pagine del
corso dello scorso anno.
Orario
-
Lezioni: martedì 16-17 e giovedì 16-18;
Aula 3, Dip. Fisica, Istituto Fermi.
-
Ricevimento studenti (Via Salaria, stanza 310): giovedì,
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 (quindi studiate!)
Consegna
Progetti
I progetti andranno consegnati qualche giorno prima della data
dell'esame.
Più precisamente:
entro il 4/2/2007 per sostenere l'esame il 6/2/2007
entro il 19/2/2007 per sostenere l'esame l'22/2/2007
entro il 11/6/2007 per sostenere l'esame il 13/6/2007
entro il 8/7/2007 per sostenere l'esame il 10/7/2007
entro il 16/9/2007 per sostenere l'esame il 18/9/2007
Per la consegna spedire un file (in formato tar.gz o .zip, non rar!) al
docente (salvo[_at_]di.uniroma1.it).