 |
     |
Programmazione a Oggetti
dott. Ivano Salvo anno accademico 2007/08
|
Object
Subject Luca Cardelli, 1995
|
Ultima modifica: 1 dicembre 2008
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
- Tipi Generici
- 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. 2007/08)
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
(.pdf)
8. Astrazioni sui Dati e Iteratori
(.pdf)
9. Tipi Generici
(.pdf)
Esempi e Programmi visti a Lezione
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 .
Esonero
C'è stata una prova intermedia, mercoledì 26 novembre
2008.
Ecco il testo e le soluzioni commentate.
La prova ha attribuito i seguenti bonus riportati nella tabella dei
risultati.
Spero che ognuno di voi, aldilà dei bonus, abbia
fatto una serena autovalutazione della propria
preparazione.
A breve la pubblicazione delle soluzioni commentate
Ecco i test degli anni precedenti: i curiosi potranno concedersi un
piacevole detour nel mondo dei
Reality TV,
o in quello dei Fumetti.
Abbastanza istruttive, a mio modo di vedere, le soluzioni commentate,
che vi sveleranno i segreti di
Pupe e Secchioni
e di Paperi e Xman.
Progetto
Ecco finalmente il testo del progetto: Telefonia Mobile in Java
La discussione avverrà in concomitanza con l'orale, e la consegna
sarà entro tre giorni prima della data stabilita per l'orale.
Per facilitare la discussione, chi è in possesso di un portatile,
può portarlo all'esame. Altrimenti verificate che il vostro
progetto sia compilabile da riga di comando con l'istruzione javac.
(qualche IDE organizza i package in modo particolare).
Orario
-
Lezioni: mercoledì 16-18 e giovedì 16-17;
Aula 1, Dip. Fisica, Istituto Fermi.
-
Ricevimento studenti (Via Salaria, stanza 310): giovedì,
ore 11:30 - 12:30.
Modalità d'esame
La prova orale, consisterà nella discussione del progetto.
Nel corso del colloquio saranno poste domande sui contenuti del
corso (quindi studiate!)
Consegna
Progetti
I progetti andranno consegnati nelle seguenti date:
- il 22 gennaio per sostenere l'esame il 23 gennaio
2009 (ore 9, aula Seminari)
- il 28 gennaio per sostenere l'esame il 30 gennaio
2009 (ore 9, aula Seminari)
- il 4 febbraio per sostenere l'esame il 6 febbraio
2009 (ore 9, aula Seminari)
- il 18 febbraio per sostenere l'esame il 20 febbraio
2009 (ore 9, aula Riunioni)
Per la consegna spedire un file (in formato tar.gz o .zip, non rar!) al
docente (salvo[_at_]di.uniroma1.it).
La consegna del progetto funge automaticamente da prenotazione.