back to top

Diagramma delle classi: esempio di modellazione (1a parte) – Guida UML

Arrivato a questo punto della trattazione il lettore ha tutti gli strumenti necessari per la realizzazione di qualsiasi diagramma delle classi, dal più banale al più complesso. Quello che però manca al lettore è una linea guida di come passare da una descrizione di un progetto, in maniera testuale, alla costruzione di un diagramma delle classi corretto e robusto. Adesso vedremo come fare ciò fornendo al lettore un esempio di costruzione di un diagramma delle classi spiegato passo passo. Iniziamo con la descrizione del progetto:

In questo progetto vogliamo rappresentera la struttura di uno zoo. Lo zoo è composto da più aree a seconda del tipo di animale ospitato ed abbiamo un’area felini, un’area grandi erbovori ed un’area animali acquatici. Per quanto riguarda tutte e tre le aree si deve tenere traccia dell’estensione totale dell’area e le informazioni relative ad ogni recinto o vasca. Per ogni recinto si deve conoscere l’estensione del recinto e il numero degli animali contenuti, mentre per le vasche si vuole sapere il numero di litri contenuti in ogni vasca e il numero di animali all’interno. Sia per i recinti che per ogni vasca si deve inoltre conoscere la specie dell’animale presente e il guardiano che pulisce il recinto (salvare per ogni guardiano nome, cognome e il recinto di cui si occupa). Il guardiano che pulisce le vasche ha una specializzazione in sub e si vuole tenere traccia dell’esperienza maturata come sub calcolate in ore totali di immersione. Per ogni animale si deve tenere traccia del nome dato dallo zoo, del peso, se è carnivoro o erbivoro e la specie di appartenenza. Per ogni specie si memorizzi il nome comune e il nome scientifico.

A prima vista la modellazione del diagramma delle classi potrebbe risultare complicato e il lettore si potrebbe chiedere: da che punto partire nella modellazione? Dunque, senza farsi prendere dal panico, basta analizzare attentamente il testo del problema per poter identificare classi, attributi ed eventuali metodi. Inizialmente cercheremo di modellare le varie classi con i relativi attributi come se fossero classi indipendenti per poi, in un secondo momento inserire nel diagramma le relative relazioni con le molteplicità corrette. Rileggendo attentamente il testo fornito vediamo che la nostra classe principale è ovviamente la classe zoo (nella quale memorizzeremo il nome dello zoo) la quale è composta da tre aree. Le aree saranno una classe che comporranno lo zoo, ma come si può vedere, le prime due aree hanno caratteristiche comuni, mentre la terza ha caratteristiche leggeremente diverse. Si potrebbe pensare di modellare una classe per ogni area, ma data l’uguaglianza delle caratteristiche delle prime due classi sarà sufficiente creare una sola classe (che rappresenti le prime due aree diversificate da un attributo tipo) ed un’altra per rappresentare l’area degli animali acquatici. La modellazzione così eseguita, oltre ad essere compatta, risulta anche corretta in quanto se avessimo creato due classi separate per le prime due aree avremo commesso un errore concettuale. Inoltre modelleremo con due classi diverse i recinti e le vasche. Vediamo il risultato in UML:

Esempio di rappresentazione di un diagramma delle classi 1 in UML

Continuando con la lettura del testo troviamo altre due parole chiave animale e specie che, nella nostra modellazione, diverranno due classi separate. Per quanto riguarda la classe animale è opportuno fare un piccolo appunto: dato che un animale può essere erbivoro o carnivoro si potrebbe pensare di creare una classe padre animale e poi derivare due classi figlie una per i carnivori e una per gli erbivori. Ciò non è propriamente corretto in quanto, nella derivazione, non aggiungeremo nessun attributo e quindi non otterremo nessuna specializzazione. Di fatto basta introdurre nella classe animale un attributo tipo nel quale inseriremo la tipologia dell’animale. Quindi quando il lettore si trova davanti ad una classe che presenta una catalogazione, come nel nostro caso, è sufficiente inserire nella classe un attributo per riconoscere il tipo di oggetto che andremo a creare. In UML avremo:

Esempio di rappresentazione di un diagramma delle classi 2 in UML
PubblicitÃ