Una classe ha un nome, degli attributi e delle operazioni, esse definiscono il comportamento della classe e differentemente dagli attributi non sono statici.
Un operazione è una proprietà il cui valore è calcolato a partire dai valori dell’oggetto che la invoca ad altri oggetti ad esso correlati, un operazione può anche cambiare lo stato di un oggetto. Quando un operazione modifica un oggetto, si dice che provoca degli effetti collaterali.
Come decidere se un operazione è di classe
L’operazioni di classe di base dovrebbero sempre ritornare un dato, che viene collegato dall’operazione. Solitamente possono essere viste come dei campi (dati) che però per essere ottenuti devono essere calcolati.
Ad esempio:
NumeroEsamiSostenuti() è un operazione di calasse.
PartecipaEsame() non è un operazione di classe, dato che non ritorna nessun dato.
Struttura
Una operazione della classe C indica che su ogni oggetto (istanza) della classe C si può eseguire un calcolo per:
calcolare un valore a partire da altri dati e operazioni.
effettuare cambiamenti di stato dell’oggetto (cioè per modificare le sue proprietà), dei link in cui è coinvolto e/o degli oggetti a questo collegati.
oss: Il diagramma delle classi non definisce cosa calcolano le operazioni, né se e come modificano i dati. Ogni classe del diagramma con operazioni andrà affiancata da un documento di specifica che entra nel dettaglio.
Sintassi
nome_operazione(argomenti) : tipo_ritorno
argomenti è una lista di elementi della forma nome_argomento : tipo_argomento
tipo_ritorno è il tipo del valore restituito dall’operazione
Una operazione di classe può essere invocata solo su un oggetto della classe.
Ereditarietà
Il meccanismo dell’ereditarietà si applica anche alle operazioni di classe, ad esempio:
In questo caso è possibile chiamare l’operazione madia_fino_A(...) anche su studente straniero.
Specifica
In UML quindi vengono definite le operazioni, parametri e tipo di ritorno, ma non viene esplicitato in maniera formale cosa queste operazioni devono calcolare.
La descrizione logica-formale di ciò che le operazioni devono fare (non come), viene data in un documento di specifica separato.