Le classi e le relazioni tra le classi si possono descrivere in un diagramma di classi con la notazione UML (Unified Modeling Language – linguaggio unificato di modellazione).
Si possono usare strumenti automatici di modellazione che partendo da codice esistente disegnano i diagrammi e viceversa.
Rappresentazione di una classe
Il simbolo di una classe è un rettangolo diviso in tre sezioni orizzontali:
-
la prima contiene il nome in grassetto (il nome per convenzione inizia con una lettera maiuscola);
-
quella centrale elenca gli attributi;
-
la terza elenca i metodi.
Si possono aggiungere altre sezioni con nomi che ne definiscono la finalità (come l’elenco delle eccezioni).
Notazione UML per una classe
In certi casi, per semplificare, si può usare solo un rettangolo con il nome, oppure, invece di elencare tutti i metodi, si possono elencare solo quelli utili per il diagramma che si sta realizzando.
Ogni nome di attributo è seguito da :Classe
.
Spesso in pratica per le classi Java si usa la notazione Classe attributo
corrispondente alla dichiarazione degli attributi.
Gli attributi di sola lettura si possono far precedere da /
(il significato preciso di questo simbolo però è attributo derivato).
Un esempio di attributo derivato è il volume di un parallelepipedo derivato da larghezza, lunghezza e altezza.
Nella terza sezione per ogni metodo vanno elencati anche i parametri.
Se il metodo restituisce un valore è seguito da :Classe
per indicare la classe del valore di ritorno.
Spesso in pratica per le classi Java si usa la notazione Classe metodo(parametri)
corrispondente alla dichiarazione dei metodi.
I metodi get()
e set()
per gli attributi possono essere lasciati impliciti.
I metodi sovraccarichi appaiono più volte.
Ad ogni attributo e metodo si premette un prefisso di visibilità:
+ | pubblici (si può omettere perché il diagramma di solito descrive solo attributi e operazioni pubblici) |
– | privati |
# | protetti |
Attributi e metodi di classe (statici) vanno sottolineati (oppure preceduti dal simbolo $
).
Se una classe è astratta il nome va indicato in corsivo e seguito dalla proprietà {abstract}.
Anche i metodi astratti vanno in corsivo seguiti da {abstract}
.
Notazione UML per una classe astratta
Rappresentazione di un oggetto
Il simbolo di un oggetto è un rettangolo diviso in due sezioni orizzontali:
-
la prima contiene il nome dell’oggetto nella forma
nomeOggetto: Classe
, sottolineato (e non in grassetto); il nome dell’oggetto in realtà è il nome di un riferimento e può essere omesso, lasciando soltanto:Classe
; -
la seconda elenca gli attributi e i valori corrispondenti.
Notazione UML per un oggetto
A volte il rettangolo di rappresentazione di un oggetto viene disegnato con gli angoli arrotondati per distinguerlo ulteriormente dalla rappresentazione di una classe.