Programmazione ad Oggetti

Corso di Studio in Informatica
Anno accademico 2012/2013
Docente: Prof. Giovanni Manzini

Scopo del corso: Il corso ha l'obiettivo di insegnare il paradigma della programmazione ad oggetti utilizzando i linguaggi Ruby e Java.

Materiale bibliografico: I testi sulla programmazione ad oggetti, e su Ruby e Java in particolare, non mancano, ma ricordate che si impara di più scrivendo molti programmi piuttosto che leggendo molti libri.

Copertina Dave Thomas, Programming Ruby 3rd Ed. The Pragmatic Programmers.
Manuale quasi ufficiale di Ruby: tratta tutti gli aspetti del linguaggio.
Copertina Marco Ceresa Ruby (guida pocket). Apogeo.
Se seguite il corso questa guida a Ruby è probabilmente tutto ciò che vi serve: descrive il linguaggio senza fronzoli o considerazioni filosofiche.
Copertina Jeremy McAnally, Mr. Neighborly's Humble Little Ruby Book. InfoQ.
Testo su Ruby abbastanza chiaro e completo disponibile gratuitamente in pdf. L'esposizione è caratterizzata da uno stile umoristico, ma è necessario conoscere un po' l'inglese per apprezzarlo.
Copertina R. Bruni, A. Corradini, V. Gervasi, Programmazione in Java, 2a edizione. Apogeo.
Libro completo e ben fatto. C'è molto di più quanto facciamo, ma è utile averlo come manuale di riferimento del linguaggio.

Modalità d'esame. L'esame consiste nella realizzazione di un mini-progetto in Ruby e/o Java. L'esame ha la durata di quattro ore e viene svolto in laboratorio. Le esercitazioni svolte in laboratorio e i compiti assegnati in passato danno una buona idea del tipo di esercizi che dovranno essere affrontati. Chi ottiene la sufficienza nella prova di laboratorio può registrare il voto ottenuto o chiedere di sostenere l'orale.

Registro elettronico delle lezioni. Il corso prevede 48 ore di lezione di cui circa un terzo saranno svolte in laboratorio.


Argomenti della lezione Riferimenti
Lezione 1
2/10/12
Introduzione a Ruby. Istruzioni def, if/else, while, for. Variabili semplici, stringhe, array.
Lezione 2
3/10/12
Hash. Esempi di uso di array e hash. Introduzione alle classi. campionato.rb
Lezione 3
9/10/12
Classi: attributi e metodi. Esempio: la classe Frazione. I metodi initialize, to_s, == +, <=>. Sorgente classe Frazione.
Lezione 4
10/10/12
Esercitazione in laboratorio (squadre). Testo esercizio.
Lezione 5
17/10/12
Accesso agli attributi di una classe: attr_reader, attr_writer. Gli operatori di confronto (<, , etc.) e l'operatore astronave (<=>). Variabili e metodi di classe.
Lezione 6
18/10/12
Esercitazione in laboratorio (lettore MP3). Testo esercizio.
Lezione 7
23/10/12
Ereditarietà. I metodi della classe object ==, to_s, dup.
Lezione 8
24/10/12
Moduli e Mixin. Introduzione ai blocchi.
Lezione 9
30/10/12
File I/O. Definizione e uso di eccezioni.
Lezione 10
31/10/12
Esercitazione in laboratorio Testo esercizio.
Lezione 11
13/11/12
Uso di hash in Ruby: i metodi hash, eql? e rehash.Metodi che prendono un blocco come argomento: le istruzioni yield, call, lambda, e method.
Lezione 12
14/11/12
Esercitazione in laboratorio (zaino) Testo esercizio.
Lezione 13
15/11/12
Esercitazione in laboratorio (piano di studi) Testo esercizio.
Lezione 14
20/11/12
Introduzione a Java: differenze e punti in comune con Ruby.
Lezione 15
21/11/12
Esercitazione in laboratorio (amazon) Testo esercizio.
Lezione 16
28/11/12
Ereditarietà, overloading, overriding. Modificatori di visibilità. Metodi della classe Object. Uso delle liste.
Lezione 17
29/11/12
Esercitazione in laboratorio (jobs) Testo esercizio.
Lezione 18
4/12/12
Keyword final. Classi astratte e interfaccie. L'interfaccia List.
Lezione 19
5/12/12
Esercitazione in laboratorio (mappa) Testo esercizio.
Lezione 20
6/12/12
Esercitazione in laboratorio
Lezione 21
11/12/12
Le interfaccie Comparable, Set e Collection . Le classi TreeSet, HashSet e il metodo hashCode. Le classi TreeMap, HashMap.
Lezione 22
12/12/12
Esercitazione in laboratorio Testo esercizio.
Lezione 23
18/12/12
Eccezioni. L'interfaccia Comparator.
Lezione 24
19/12/12
Esercitazione in laboratorio Testo esercizio.

Viewable With Any Browser Valid HTML 4.01! Valid CSS!
Questa pagina è stata composta secondo lo standard HTML4.01 e può essere letta usando un qualsiasi browser.