* il valore attuale dei parametri di un'operazione (o di un messaggio, ecc.) in un diagramma dinamico
===Espressioni OCL riferite a classi===
===Concetti generali===
Ogni espressione OCL è riferita a un determinato ''contesto'', ovvero esprime una proprietà di un particolare elemento di modello.; Ina generale,seconda questodella elementonatura èdel uncontesto, [[classificatore]]l'espressione (perpuò esempioessere unautilizzata classe)in odiversi appartienemodi. aNel uncaso classificatorein (percui esempioil un'operazionecontesto disia una classe)., Ille classificatoreespressioni inOCL questioneservono vienea dettospecificare ''tipoproprietà invarianti della classe, ovvero contestuale''proprietà dellche valgono sempre, per tutte le istanze della classe''espressione.
Si consideri il seguente esempio di espressione OCL:
Un classificatore UML è un ''tipo'', che descrive un insieme di potenziali ''istanze''. Le espressioni OCL si intendono come applicabili a ''ogni singola'' istanza del classificatore. Per valutare un'espressione OCL, dunque, occorre concettualmente fare riferimento a un'istanza, che viene detta ''istanza contestuale'' della valutazione. Si consideri il seguente esempio di espressione OCL:
<code>
:<b>context</b> Persona <b>inv:</b><br>
:età < padre.età and nonni->includes(padre.padre)
</code>
La parola chiave iniziale <code>context</code> indica che il contesto dell'espressione è <code>Persona</code>, (che intendiamo essere una ''classe'', edescritta chenel quindimodello rappresentaUML; anchevedi il[[diagramma tipodelle contestuale dell'espressioneclassi]]). La parola chiave <code>inv</code> dichiaraindica che quanto segue è una proprietà invariante della classe, ovvero che vale sempre, per tutte le istanze (tutte le persone). La parte rimanente dell'espressione descrive duela semplicisemplice verità [[genealogia|genealogichegenealogica]], che possono''(data essereuna tradottequalunque comepersona, in qualunque momento), l'età (di quella persona) è strettamente minore dell'età del padre (di quella persona).'' segue:
Si può osservare che OCL utilizza la tradizionale ''[[dot notation]]'' per riferirsi agli attributi degli oggetti: "l'età del padre" diventa <code>padre.età</code>.
:''(data una qualunque persona), l'età (di quella persona) è strettamente minore dell'età del padre (di quella persona). Inoltre, l'insieme dei nonni (di quella persona) comprende (''includes'') il padre del padre''
Scegliendo una qualsiasi persona (un'istanza contestuale), e fissando di conseguenza gli elementi variabili dell'espressione, si dovrebbe sempre ottenere un'affermazione vera.
==OCL e UML==
|