Metodologie di Programmazione - Canale P-Z
Corso di Laurea in Informatica
Anno Accademico 2008/09
Diario delle lezioni
ven 27 feb
Presentazione del corso. Il primo progamma Java (Hello, World) e come lo avremmo scritto in C. Il main. La piattaforma Java. Comilazione ed esecuzione di programmi Java: la JVM.
Trasparenti:
IJ1. Introduzione a Java 1 (
pdf
)
Sorgenti:
S00. Hello0 (
tgz
)
Sorgenti:
S01. Hello (
tgz
)
lun 2 mar
Gli oggetti. I costruttori. Metodi e messaggi. Lo stato di un oggetto: campi o attributi di istanza. Le classi. Esempio: Ticket Machine. Accesso indiretto allo stato degli oggetti: setter e getter.
Trasparenti:
IJ1. Introduzione a Java 1 (
pdf
)
Sorgenti:
S02. Greeter (
tgz
)
Sorgenti:
S03. Ticket Machine (
tgz
)
ven 6 mar
Semplice Input/Output: System.in e System.out; le classi
PrintStream e Scanner. Tipi primitivi. Char. Cast. Operatori. Controllo del flusso.
Trasparenti:
IJ2. Introduzione a Java 2 (
pdf
)
Sorgenti:
S04. Prodotto (
tgz
)
lun 9 mar
References. Passaggio di parametri. Attributi e emtodi static. Overloading. I package: spazi di nomi, struttura, uso (import) e crezione. Alcuni package nella Java API.
Trasparenti:
IJ2. Introduzione a Java 2 (
pdf
)
ven 13 mar
Liste collegate in Java: definizione di lista collegata; implementazione in Java; inserimento di elementi in testa; prime funzioni su liste.
Sorgenti:
S05. Liste (
tgz
)
lun 16 mar
Liste collegate in Java: iterazione e ricorsione su liste; differente implementazione delle funzioni base su liste come metodi di istanza o metodi di classe.
Sorgenti:
S05. Liste (
tgz
)
ven 20 mar
La classe String. Le eccezioni. Eccezioni checked e unchecked. Gestione delle eccezioni. Passare le eccezioni. Cattuarer le eccezioni (try/catch/finally).
Trasparenti:
IJ3. Introduzione a Java 3 (
pdf
)
lun 23 mar
Esempi di gestione delle eccezioni. Array, ArrayList e LinkedList. Iteratori.
Trasparenti:
IJ3. Introduzione a Java 3 (
pdf
)
Sorgenti:
S06. Eccezioni (
tgz
)
ven 27 mar
Interfaccia e implementazione di una classe. Definizione di interfacce Java. Interfacce e polimorfismo.
Trasparenti:
HBJ211. Interfacce e polimorfismo
(Sino a "Using Interfaces for Callbacks",
zip
)
Sorgenti:
S07. Interfacce (
tgz
)
lun 30 mar
Esempio di un piccolo progetto Java: asta di più lotti. Introduzione alle sottoclassi.
Sorgenti:
S08. Auction (
tgz
)
ven 3 apr
Estensioni delle classi. Sottoclassi ed ereditarietà.
Metodi ed attributi ereditati.
Sovrascrittura di metodi ed oscuramento di attributi. Chiamare i costruttori della superclasse: catena dei costruttori.
Trasparenti:
HBJ213. Ereditarietà
(Sino a "Object: The Cosmic Superclass",
zip
)
Sorgenti:
S09. Banca (
tgz
)
lun 6 apr
Ripasso e approfondimento delle nozioni di sottoclasse ed ereditarietà. Costruzione di gerarchie di classi: generalizzazione di classi con attributi e comportamenti comuni; specificazione di una classe. Polimorfismo ed esempi di utilizzo della sovrascrittura dei metodi. Introduzione al problema dell'ereditarietà multipla.
ven 17 apr
Ripasso con esercizi di preparazione alla prova intermedia.
Esercizi svolti in classe:
Testo
Soluzioni
Altri esercizi:
Testo
NB. Gli esercizi proposti non esauriscono completmante i temi che potranno essere coperti nella prova intermedia, che potrà prevedere anche esercizi su altri argomenti trattati a lezione (ad esempio, le eccezioni). La soluzione dell'esercizio sulla gestione dei c/c usa un array, ma una soluzione più semplice prevede l'uso di una lista (ad esempio, un
ArrayList
). L'esercizio è stato dato in comune con il canale e-o, che non ha ancora visto
ArrayList
o
LinkedList
.
lun 20 apr
Sospensione della didattica per le prove intermedie.
mer 22 apr - ore 14.00 - aula 5 mat.
PROVA INTERMEDIA
ven 24 apr
Sospensione della didattica per le prove intermedie.
lun 27 apr
Modificatori di visibilità. Richiami sulle interfacce. Classi astratte. Differenza tra interfacce e classi astratte. La classe Object e i suoi metodi:
clone e l'interfaccia Cloneable (copia superficiale e copia profonda); equals; getClass; hashCode (con cenni alla definizione di funzione hash).
Trasparenti:
HBJ213. Ereditarietà
(Da "Object: The Cosmic Superclass",
zip
)
URL:
JT1. Controllare l'accesso ai membri di una classe (
url
)
URL:
JT2. La classe Object (
url
)
URL:
JT3. Classi e metodi astratti (
url
)
mer 29 apr
Esercitazione su ereditarietà e classi astratte.
Il package Figure2D
.
mer 6 mag
Esercitazione su uguaglianza profonda (overriding del metodo
boolean Object.equals(Object)
).
Il package Figure2D
aggiornato (attenzione: codice da completare per esercizio).
ven 8 mag
Esempio di uso di interfarcce e eridatarietà. Costruzione di una gerachia di classi per insiemi di stringhe.
Per una descrizione del progetto vedere le note del Prof. Silvestri (il codice presentato a lezione e qui distribuito è però leggermente diverso rispetto a quello descritto da Silvestri).
URL:
Nota Silvestri
(
hmtl
) (
pdf
)
Sorgenti:
S10. Insiemi di stringhe (
tgz
)
lun 11 mag
Introduzione al disegno delle classi. Responsabilità. Dipendenza e accoppiamento di classi. Aggregazioni. Casi d'uso. Introduzione ai diagrammi UML: diagrammi delle classi, diagrammi di stato, diagramma di sequenza. Schede CRC.
Trasparenti:
HOODP02. The Object-Oriented Design Process (
zip
)
ven 15 mag
Semplici linee guida per il disegno delle classi. Qualità dell'interfaccia di una classe. Programmazione per contratti. Precodizioni e postcondizioni. Pile e code implementate con array.
Trasparenti:
HOODP03. Guidelines for Class Design (
zip
)
lun 18 mag
Applicazione delle linee guida per il disegno delle classi al caso dell pile. Introduzione alla definizione di classi generiche: pile generiche.
Sorgenti:
S11. Pile e code (
tgz
)
Trasparenti:
HOODP03. Guidelines for Class Design (
zip
)
mer 20 mag
Esercitazione: "Battaglia Navale".
Versione --incompleta-- sviluppata in aula (attenzione: codice da completare e migliorare per esercizio).
ven 22 mag
Gerarchia delle eccezioni. Definire proprie eccezioni. Catena di eccezioni. Approfondimenti sui tipi generici. Classi e emtodi generici. Completamento dell'esempio delle pile e code generiche.
URL:
JT4. Le eccezioni (
url
)
URL:
JT5. Tipi generici (argomenti base) (
url
)
URL:
JT6. Tipi generici (argomenti avanzati) (
url
)
Sorgenti:
S11. Pile e code (
tgz
)
lun 25 mag
Java Collections Framework. Interfacce, implementazioni e algoritmi. Insiemi, liste e code. Oggetti comparabali (interfacce Comparable e Comparator). Collezioni ordinabili.
URL:
JT7. Java Collections Framework (
url
)
ven 29 mag
Lezione cancellata
lun 1 giugno
Cenni sui design patterns.
Trasparenti:
HOODP05. Patterns and GUI Programming (
zip
)
--
StefanoGuerrini - 11 Mar 2009