back to top

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

Continuando nella lettura troveremo inoltre la classe custode. In questo caso non possiamo più utilizzare un attributo per identificare il custode dei recinti di terra e il sub che si occupa dell’area degli animali acquatici in quanto per i sub è richiesto un ulteriore attributo che sono le ore di immersioni totali (rappresentano l’esperienza di un sub). In questo caso dunque è sufficiente creare una classe custode e derivare la classe sub. Per evitare fraintendimenti nel diagramma UML sottostante le due classi vengono rappresentate, da subito, corredate della relazione di derivazione:

Esempio di rappresentazione di un diagramma delle classi 3 in UML

Si noti che nella modellazione manca l’attributo che identifica il recinto di cui si occupa il guardiano. Ciò è corretto infatti tale attributo sarà inserito successivamento con un’associazione tra recinto e costude. A questo momento abbiamo tutti i componenti del nostro progetto e adesso, rileggendo con attenzione il testo, bisogna capire come effettuare le varie relazioni con la relativa molteplicità. Inoltre cercheremo, dove non è necessario, di tradurre associazioni monodirezionali per evitare la presenza di attributi ridondanti o inutili. Dunque iniziamo prima di tutto collegando le varie aree allo zoo: la relazione più corretta è una composizione infatti le tre aree, insieme, formano il composito che nel nostro caso è lo zoo, possonono appartenere ad un solo composito ed inoltre non possono sussistere senza il composito stesso rispettando così le principali proprietà della composizione. Questo è il risultato in UML:

Esempio di rappresentazione di un diagramma delle classi 4 in UML

La molteplicità della composizione è di ovvia comprensione.

Adesso dobbiamo sistemare le relazioni che intercorrono tra recinti e vasche e le relative aree. Per entrambe le relazione sceglieremo un’associazione monodirezionale in quanto i recinti possono essere collegati all’area di animali di terra e le vasche solo all’area degli animali acquatici. E’ inutile memorizzare, nella classe recinti, a quale area appartengono perchè tale informazione è implicita e se inserita risulterebbe perfettamente inutile. Per quanto riguarda le molteplicità avremo che un area è formata da uno o più recinti/vasche e un recinto/vasca appartiene ad una sola area. In UML:

Esempio di rappresentazione di un diagramma delle classi 5 in UML

Per quanto riguarda la relazione relativa ad animale e specie possiamo dire che un animele appartiene ad una sola specie e ci possono essere più animali della stessa specie nello zoo. Sarebbe sufficente fare una relazione unidirezionale per inserire le informazioni contenute in specie nella classe animale, ma dato che sarebbe utile, per lo zoo, fare un censimento di animali per ogni specie inseriremo un’associazione bidirezionale. Inoltre aggiungeremo una relazione monodirezione dalla classe zoo alla classe specie per permettere la funzione di censimento. Per quanto riguarda l’associazione presente tra animale e il recinto/vasca possiamo utilizzare un’associazione bidirezionale con la seguente molteplicità: un animale può stare in una sola vasca/recinto e in un recinto/vasca ci possono essere uno o più animali. Resta da sistemare le relazioni che intercorrono tra i guardiani/sub e i recinti/vasche. Dato che un recinto/vasca è pulito da un solo guardiano/sub e un guardiano/sub può pulire solo un recinto/vasca inseriremo una semplice associazione uno ad uno bidirezionale. Anche in questo caso si opta per un’associazione bidirezionale in quanto effettueremo anche un’associazione tra custode/sub e la classe principale zoo per avere, direttamente, il numero di dipendenti. Il risultato finale del diagramma delle classi del nostro progetto è il seguente:

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