Appello di aprile 2005

Domanda aperta [8/30]

Descrivere, utilizzando un diagramma di sequenza, le fasi operative della creazione di un programma eseguibile partendo da un file sorgente sintatticamente corretto (per esempio un programma scritto in C++). Si supponga di avere a disposizione le classi: User, Compiler, Linker e FileSystem e gli oggetti prodotto delle varie fasi.

Domanda aperta [12/30]

Si voglia progettare un sistema di Agende molto flessibile e sofisticato per singoli utenti che condividono lo stesso server, con le seguenti caratteristiche: in una agenda possono esistere entità singole che chiameremo Contatti, con tutte le loro caratteristiche (si prenda spunto dalla porzione di documento DTD più sotto e la tabella indicante il significato di certi simboli), possono esistere raggruppamenti di contatti con nome e descrizione (come ad esempio "Amici", "Lavoro", "Ditte", "Coro", "Artisti", ...) dove non si esclude l'appartenenza di un contatto a più Gruppi, e di sottogruppi all'interno di un gruppo con un livello qualsiasi di annidamento. L'agenda è inoltre collegata con un Calendario dove si possono fissare appuntamenti ed anniversari (con relativa persona da contattare) ed annotare ricorrenze varie.

Realizzare uno schema concettuale, utilizzando diagrammi di classi UML, di tutto il progetto, inserendo anche qualche metodo significativo come: void FissaAppuntamentoCon( Persona u, Data d ); o Persona ChiDevoContattareOggi( );

DTD agenda.dtd
<!ELEMENT agenda (contatto*)>
<!ELEMENT contatto (nome, indirizzo+, telefono*, email*, foto?)>
	<!ELEMENT nome (#PCDATA)>
	<!ELEMENT indirizzo (via, numero, citta, cap, provincia)>
	<!ELEMENT via (#PCDATA)>
...