Si vuole realizzare un’applicazione desktop per la gestione di attività sportive di jogging.
L’applicazione è rivolta ad atleti che si registrano preliminarmente inserendo alcuni dati personali, precisamente
nome (obbligatorio), sesso (M o F), altezza in cm, peso in kg ed e-mail (tutti facoltativi).
Un atleta può registrare, attraverso l’applicazione, le proprie attività sportive svolte. Ogni attività sportiva è
caratterizzata da una data di svolgimento (giorno, mese, anno) e un percorso, inteso come sequenza ordinata di
punti geografici (caratterizzati da latitudine, longitudine e altitudine, espressi come numeri reali). L’applicazione
tiene memoria anche del tempo migliore realizzato su ogni percorso ricordando il tempo ottenuto e l’atleta che lo
ha realizzato. Il tempo di percorrenza di un percorso è espresso in ore, minuti, e secondi.
L’applicazione gestisce due tipologie di attività sportive: gli allenamenti, svolti da un singolo atleta, che percorre
un percorso di sua scelta (eventualmente il percorso può essere definito dall’atleta stesso) e le partecipazioni
alle gare.
Una gara è una competizione alla quale possono iscriversi un numero imprecisato di atleti e che si tiene in una
data ed ora fissata. Un’atleta può iscriversi alla gara entro due giorni dalla data della gara stessa. La gara
termina quando tutti gli atleti iscritti hanno terminato il percorso (e, di conseguenza, hanno dichiarato il tempo
ottenuto). Un direttore di gara definisce il percorso della gara nel momento in cui propone la gara stessa. Se il
giorno successivo alla gara vi sono ancora atleti che non hanno dichiarato il proprio tempo, la gara viene
considerata come terminata e questi atleti sono eliminati dalla lista dei partecipanti. Al termine della gara,
l’applicazione calcola e visualizza la classifica e assegna un premio al vincitore.
Per semplicità, si ipotizzi che tutti gli atleti accedano ad una stessa istanza dell’applicazione, installata su di una
macchina locale, e che il database sia memorizzato sulla stessa macchina.
Si tracci il diagramma dei casi d’uso e quello delle classi concettuali (System Domain Model) per tale
sistema, tenendo conto anche delle responsabilità da attribuire alle classi.
2. Si progetti una soluzione basata sul modello architetturale Boundary- Control- Entity- Database per
la realizzazione del sistema descritto al punto 1.
Si ipotizzi di usare un database MySQL per implementare la persistenza dei dati.
Si definiscano pertanto:
- il Package diagram dell’architettura del sistema;
- il Class diagram di dettaglio per l’implementazione del sistema;
- i Sequence diagram per la realizzazione delle seguenti funzionalità:
. inserimento di un allenamento;
. iscrizione ad una gara.
. calcolo della classifica di una gara ed assegnazione del premio al vincitore.

