Originariamente inviato da tmh21
Salve,
Ho un dubbio forse banale su come progettare una classe... il minimo indispensabile da sapere è che ho una classe Interventi che rappresenta degli interventi assistenziali svolti.
Stando ai requisiti funzionali, un intervento può avere diversi tipi di Anomalie, ne cito tre che sono emblematici:
[list=1][*]Ritardo: l'intervento è iniziato con più di n minuti di ritardo.[*]Allontanamento: chi ha effettuato l'intervento si è allontanato di oltre n metri dal luogo dell'intervento.[*]Inattività: chi ha effettuato l'intervento è restato inattivo per più di n minuti.[/list=1]
Non è importante capire a fondo la semantica di questi requisiti, ciò che mi interessa adesso è come strutturare la classe Intervento in merito alle Anomalie, sapendo che il DB è già stato progettato in questo modo:
- Interventi(id, altri_campi)
- Ritardi(id_intervento)
- Allontanamenti(id_intervento, distanza, ora_inizio, ora_fine)
- Inattivita(id_intervento, ora_inizio, ora_fine)
Per i ritardi sarebbe bastato anche mettere un campo booleano nella tabella interventi (tanto la corrispondenza è di tipo 1 a 1), ma tanto anche fatto in questo modo poco cambia.
Ora, il mio problema è il seguente:
Avevo pensato di mettere all'interno della classe interventi un attributo del genere
codice:
ArrayList<Anomalia> anomalie;
ma il problema è come progettare la classe Anomalia?
Il problema è che a seconda del tipo di anomalia, gli attributi della stessa variano... potrei fare diverse classi che estendono la classe Anomalia, ma poi come potrei capire di che tipo di anomalia si tratta iterando sull'ArrayList anomalie e quindi ad accedere ai relativi attributi?
Mettere diversi attributi per i diversi tipi di anomalia mi sembra brutto... alla fine sono tutte anomalie, anche se di diverso tipo e con diversi attributi.... ma non saprei proprio come fare.