08 settembre 2008

Appello di settembre

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.

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.

22 luglio 2008

Valutazione del corso da parte degli studenti

Sono stati pubblicati i dati della valutazione del corso fatta dagli studenti.

Il risultato è molto positivo: alla domanda 31, che riassume il gradimento del corso, sono state date le seguenti risposte:
Quanto è soddisfatto complessivamente di come è stato svolto questo insegnamento?




Questo risultato è molto positivo in assoluto (il 93% degli studenti hanno dichiarato di essere soddisfatti del corso, e in particolare, sufficiente è il voto dato dal 33%, "molto" dal 44% e "del tutto" soddisfatti sono stati il 14% degli studenti).

Inoltre questo corso è uno di quelli che contribuiscono ad alzare la media delle valutazioni degli studenti per tutti i corsi del primo semestre, che vede un totale di soddisfatti dell'85% e uno shift dei voti verso "sufficiente", come mostrato nel grafico qui sotto:







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.

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.

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

11 febbraio 2008

Ricevimento studenti

Il ricevimento studenti di oggi, lunedì 11 febbraio, è annullato.

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

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.

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.

31 dicembre 2007

Buon 2008!

Cari studenti,
auguri di buon anno a tutti!
Emanuele Panizzi

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.

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

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.