Ingegneria del Software - Esercitazione 5
Prima parte
Partendo dalla soluzione della esercitazione precedente, si vuole realizzare una libreria dinamica chiamata
ClockTimerLibrary[.dll] per gestire più orologi in maniera sincronizzata.
In particolare la libreria sarà realizzata come un progetto contenente la classe ClockTimer,
creata nell'ultima versione della esercitazione precedente, e la classe TimeSpanEventArgs, usata per
comunicare l'ora attraverso gli eventi NotifyTick del soggetto ClockTimer.
Le due classi ClockTimer e TimeSpanEventArgs dovranno essere pubbliche ed
appartenere al namespace Clocks.
Le classi rimanenti sono AnalogClock e DigitalClock che rappresentano gli
osservatori del timer definito in libreria, e la classe Program che contiene la funzione di avvio
Main().
Tali classi dovranno invece rimanere all'interno di un progetto di tipo console, che potrebbe anche essere il
progetto originale della soluzione precedente, dal quale verranno rimosse le classi ClockTimer e
TimeSpanEventArgs, e che verrà rinominato ClockShell.
Al progetto ClockShell dovrà chiaramente essere collegata la libreria
ClockTimerLibrary, per poter continuare ad avere un riferimento alle suddette classi.
Seconda parte
Nella stessa soluzione in cui sono presenti la libreria e il progetto console, si vuole aggiungere un terzo
progetto di tipo Windows Form chiamato ClockGUI.
La finestra principale di tale progetto dovrà contenere una casella di testo ed un bottone per inserire ed
impostare l'ora di partenza oltre ad un bottone Start e un bottone Stop utili ad avviare/arrestare
un oggetto di classe ClockTimer, ove la classe sarà sempre referenziata attraverso
un collegamento alla libreria ClockTimerLibrary.
All'interno di tale progetto, inoltre, dovranno essere ridefinite due classi chiamate AnalogClock e
DigitalClock, come nel progetto per console, ma dovranno essere implementate in maniera tale
da rappresentare l'ora corrente su componenti visuali presenti nella stessa form principale.
Per quanto riguarda DigitalClock, l'ora potrà essere scritta su una etichetta di testo.
La rappresentazione delle lancette di ore, minuti e secondi di AnalogClock, invece, è
piuttosto complessa, quindi possiamo decidere di usare una rappresentazione alternativa semplificata. Ad esempio la stessa
rappresentazione che usiamo per DigitalClock.
Ai due clock saranno infine associate due checkbox attraverso le quali sarà possibile agganciarsi e
sganciarsi dagli eventi notificati da ClockTimer.
Finalità dell'esercizio
Implementazione librerie dinamiche
Implementazione applicazioni visuali
Separazione logica funzionale (libreria) da presentazione (console e GUI)