Il diagramma delle classi rappresenta gli elementi del sistema, le entità logiche, (dette anche classi) e le eventuali relazioni fra di loro. Ogni classe è corredata da un insieme di attributi (che ne descrivono le caratteristiche) e operazioni (che ne descrivono il comportamento della classe).
Il simbolo grafico che rappresenta le classi UML è un rettangolo suddiviso in tre scomparti, rispettivamente dedicati al nome della classe, agli attributi e alle operazioni.
Esempio:
La classe “Reclamo” è composta dagli attributi Id, Titolo,Descrizione e contiene le operazioni di Crea, Modifica, Chiudi.
Due classi possono essere legate da relazioni che rappresentano i legami (i link) che possono sussistere fra gli oggetti delle classi associate.
Le principali relazioni fra classi sono associazione, generalizzazione e dipendenza.
RELAZIONE DI ASSOCIAZIONE
La relazione di associazione è una relazione semantica tra due o più classi. Ogni associazione è indicata con un nome. Oltre il nome, per ogni relazione si ha la molteplicità. La molteplicità indica quanti oggetti di una classe possono far riferimento ad ogni oggetto dell’altra.
Le molteplicità sono della forma:
• 0..1 -> Zero o 1
• 1 -> Esattamente 1
• 0..* -> Zero o più
• * -> Zero o più
• 1..* -> 1 o più
• 1..6 -> da 1 a 6
• 1..3,7 -> da 1 a 3, oppure 7
L’associazione è rappresentata da una linea che collega due classi. Agli estremi di questa linea si indicano le molteplicità della relazione, mentre nel centro della linea viene indicato cosa indica la relazione.
Esempio
Un cliente può avere più ordini. Un ordine può avere 1 cliente
Esempio
Abbiamo un’azienda e una persona, due classi con propri attributi e metodi. La relazione che posso avere tra queste due classi è che la persona lavora nell’azienda e l’azienda dà lavoro alla persona. L’azienda dà lavoro a una o più persone, la persona è impiegata in 0 o 1 aziende.
RELAZIONE DI AGGREGAZIONE E COMPOSIZIONE
A volte una classe è composta da altre classi. Questo tipo di relazione è detta aggregazione. Le classi che la costituiscono sono detti componenti, mentre la classe finale intero: parte – intero (part-whole)
L’ “intero” è posto in cima e i componenti (“parte”) sotto. Delle linee, con dei rombi, unisce “l’intero” ai vari componenti.
Esempio:
Un Museo può essere composto da uno o più quadri, e da uno o più statue. Viceversa, un quadro può avere, al massimo, solo un Museo. Stessa cosa per la Statua.
Una relazione di composizione è un tipo più forte di aggregazione. Ogni componente in una composizione può appartenere soltanto ad un “intero”, non può esistere da sola. Il simbolo utilizzato per una il rombo è colorato di nero.
Esempio
Una persona ha (tra le altre cose): una testa, un corpo, due braccia. e due gambe.
La classe Testa non può esistere da sola, ma solo all’interno della classe Uomo. Stessa cosa per le altre classe.
RELAZIONE DI GENERALIZZAZIONE
Una classe derivata ( o classe figlia) è una classe che eredita tutti gli attributi e i metodi di un’altra classe (detta classe padre o superclasse). Le classi figlie, oltre ad ereditare le proprietà della superclasse, possono contenere nuovi attributi. In UML il concetto di ereditarietà è rappresentato da una linea con una freccia che punta in direzione della classe padre.
Esempio
La classe animale è la superclasse, ed è più generica rispetto ai suoi figli, mentre vertebrati, invertebrati e così via sono tutte sottoclassi con una propria specializzazione.
RELAZIONE DI DIPENDENZA
La relazione di dipendenza è una relazione nella quale un elemento, il client, utilizza o dipende da un altro elemento, il fornitore. Quindi una modifica del fornitore influisce anche sul client. Non hanno nomi e vengono visualizzate con una linea tratteggiata e una freccia aperta dal client al fornitore.
Esempio