Il prossimo appello di Programmazione a oggetti è fissato per giovedì 18 settembre, ore 15:00 in aula seminari.
Si prega di prenotarsi sul blog, con un commento a questo post, con almeno una settimana di anticipo.
08 settembre 2008
Appello di settembre
Posted by Emanuele Panizzi at 10:08 9 comments
04 settembre 2008
Orario di ricevimento 2008/2009
A partire dal 5 settembre, il ricevimento studenti si tiene il venerdì dalle ore 10:00 alle ore 12:00 nel mio studio.
Posted by Emanuele Panizzi at 11:14 0 comments
22 luglio 2008
Valutazione del corso da parte degli studenti
Sono stati pubblicati i dati della valutazione del corso fatta dagli studenti.
Quanto è soddisfatto complessivamente di come è stato svolto questo insegnamento?
Posted by Emanuele Panizzi at 19:12 0 comments
17 luglio 2008
Formazione residua gruppi
Chi ancora non avesse trovato colleghi per formare un gruppo di progetto, può lasciare un commento a questo post.
Posted by Emanuele Panizzi at 12:47 0 comments
09 giugno 2008
Appello del 27 giugno 2008
Il prossimo appello di Programmazione a oggetti è fissato per venerdì 27 giugno, ore 9:30 in sala riunioni.
Si prega di prenotarsi sul blog, con un commento a questo post, con almeno una settimana di anticipo.
Posted by Emanuele Panizzi at 16:05 3 comments
11 aprile 2008
Appelli estivi
Ecco il calendario degli appelli estivi 2008 di Programmazione a Oggetti:
- 27 giugno, ore 9:30 sala riunioni
- 17 luglio, ore 9:30 aula alfa
- 18 settembre, ore 15 aula seminari
Posted by Emanuele Panizzi at 10:48 0 comments
11 febbraio 2008
Ricevimento studenti
Il ricevimento studenti di oggi, lunedì 11 febbraio, è annullato.
Posted by Emanuele Panizzi at 10:57 1 comments
24 gennaio 2008
Appello del 7 febbraio: iscrizioni
Si prega di iscriversi all'esame mediante un commento a questo post.
L'ISCRIZIONE VA FATTA ENTRO GIOVEDì SERA 1 FEBBRAIO.
Indicare i cognomi dei componenti del gruppo. Se dovete sostenere lo scritto, indicatelo.
L'esame si terrà giovedì 7 febbraio in aula riunioni alle 15:00.
QUESTO APPELLO E' APERTO SOLO AD ALCUNI STUDENTI (IMMATRICOLATI NEGLI ANNI PRECEDENTI). Vedi regole in un post precedente o sul sito del dipartimento www.di.uniroma1.it
Posted by Emanuele Panizzi at 19:22 11 comments
14 gennaio 2008
Iscrizione all'esame
Si prega di iscriversi all'esame mediante un commento a questo post o un'email diretta al mio indirizzo.
L'ISCRIZIONE VA FATTA ENTRO MERCOLEDì SERA 16 GENNAIO.
Indicare i cognomi dei componenti del gruppo. Se dovete sostenere lo scritto, indicatelo.
L'esame si terrà mercoledì 23 gennaio in aula riunioni alle 10:00.
Posted by Emanuele Panizzi at 19:32 18 comments
07 gennaio 2008
Aggiornamento incontri di gennaio
Gli incontri che potremo fare in questo mese sono al massimo 4, poiché il periodo di preparazione agli esami va dall'8 gennaio al 18 compresi.
Quindi le uniche date utili per il nostro corso sono il 10, il 14 e il 17. Più l'incontro di oggi (che abbiamo fatto considerando erroneamente l'inizio del periodo il 7 anziché l'8) fanno 4.
Ho pertanto rimosso il post relativo al 21 gennaio.
Posted by Emanuele Panizzi at 22:49 1 comments
31 dicembre 2007
Buon 2008!
Cari studenti,
auguri di buon anno a tutti!
Emanuele Panizzi
Posted by Emanuele Panizzi at 18:28 14 comments
30 dicembre 2007
Specifiche dell'esercizio per il progetto di Programmazione a oggetti
L'esercizio consiste nella progettazione di una serie di classi per modellare un sito web che ospita diversi blog e che avverta gli utenti della pubblicazione di nuovi post nei blog ai quali sono abbonati.
La progettazione deve seguire il design pattern Observer spiegato a lezione.
Durante l'esecuzione del programma saranno rappresentati da opportuni oggetti:
- i blog
- i post
- gli utenti abbonati (subscriber)
L'esercizio deve essere svolto in C++ e nel secondo linguaggio ad oggetti scelto dal gruppo; le specifiche indicate nel seguito devono essere seguite esattamente nella versione C++ e il più fedelmente possibile nel secondo linguaggio, adattandole dove le caratteristiche del linguaggio non permettano di seguirle alla lettera.
Specifiche
1) la classe Blog sarà derivata dalla classe subject descritta nel design pattern. Ogni oggetto della classe Blog sarà caratterizzato da un nome e da un elenco di post; per la versione C++ utilizzare un contenitore della standard library per l'elenco dei post.
2) la classe Blog metterà a disposizione un metodo pubblico NewPost() che permetterà di pubblicare un nuovo post specificandone autore, titolo e testo. Ogni volta che viene pubblicato un nuovo post, sarà invocato il metodo Notify() per permettere agli observer di aggiornare il proprio stato corrispondentemente alla variazione dello stato del blog.
3) lo stato del blog, costituito sostanzialmente dall'elenco dei post pubblicati, sarà rappresentato opportunamente nell'oggetto e sarà osservabile dagli observer invocando uno o più dei seguenti metodi pubblici della classe Blog:
GetName() che restituisce il nome del blog
GetTitle() che restituisce il titolo dell'ultimo post pubblicato
GetText() che restituisce il testo integrale dell'ultimo post pubblicato
GetLine() che restituisce i primi 10 caratteri del testo dell'ultimo post pubblicato
GetAuthor() che restituisce il nome dell'autore dell'ultimo post pubblicato
4) la classe Post sarà caratterizzata da tutti i dati relativi a un post, cioè: autore, titolo, testo. Si tratta di stringhe in tutti e tre i casi.
5) la classe Subscriber è una classe derivata dalla classe observer descritta nel design pattern; ogni oggetto della classe rappresenta un utente che si abbona ad uno o più blog per essere avvisato della pubblicazione di nuovi post; il subscriber è caratterizzato dall'indirizzo di posta elettronica; per effettuare l'abbonamento, si userà il metodo Attach() come descritto nel design pattern
6) poiché esistono subscriber generici e subscriber specifici, è opportuno derivare altre due classi dalla classe Subscriber: le chiamiamo SubsriberG e SubscriberS rispettivamente. Un subscriberG è interessato a tutti i post dei blog ai quali è abbonato, mentre un subscriberS è interessato solamente ai post scritti da un particolare autore;
6a) quando viene invocata la funzione Update() per un SubscriberG è necessario recuperare dal blog:
- il nome del blog stesso
- il titolo del post
- i primi 10 caratteri del testo
- il nome dell'autore
e stampare a schermo il subject e il body di una ipotetica email nella quale si informa l'utente della nuova pubblicazione, riportandone i dati sopra indicati;
6b) quando viene invocata la Update() per un SubscriberS è necessario:
- recuperare dal blog l'autore del post, e, se coincidente con l'autore scelto alla creazione del subscriber:
-recuperare nome blog, titolo post, testo integrale e mostrare a schermo il subject e body della mail ipotetica con questi tre dati
7) Nel main() vanno dichiarati un certo numero di blog e di subscriber generici e specifici, indicando per questi ultimi il nome dell'autore al quale sono interessati; vanno poi abbonati i subscriber ai vari blog; vanno infine creati alcuni post per verificare che i subscriber siano avvisati con le email opportune.
Note:
- la pubblicazione effettiva delle pagine web dei blog non va trattata
- sfruttare il polimorfismo per differenziare il comportamento del subscriber generico da quello del subscriber specifico.
- nomi degli autori, titoli e testi dei post sono da scegliere arbitrariamente ai soli fini dell'esecuzione del programma
Eventuali dettagli non specificati qui possono essere proposti in commenti a questo post. Inserire altresì nei commenti eventuali domande di chiarimento. Risponderò direttamente, ma invito anche gli studenti a rispondere ai commenti dei loro colleghi.
Posted by Emanuele Panizzi at 18:17 20 comments
28 dicembre 2007
Riferimenti volume GoF
Ecco i riferimenti del volume sui design pattern:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Design Patterns
Elements of Reusable Object-Oriented Software
ADDISON-WESLEY, 1995 (19-ma ristampa, Gennaio 2000)
ISBN: 0201633612
Nota: GoF
Posted by Emanuele Panizzi at 20:21 0 comments
Lezione di giovedì 17 gennaio
Lasciare un commento specificando se si è interessati a partecipare a questa lezione o a presentare il lavoro del proprio gruppo.
Posted by Emanuele Panizzi at 20:15 6 comments