Object Constraint Language: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 8:
==Descrizione==
===Invarianti semplici===
In genere, in UML, un'espressione OCL è associata a una ''classe'', e descrive proprietà degli ''oggetti'' istanzaistanze di quella classe. TaliQUeste proprietà sono descritteespresse comein forma di condizioni che legano i valori degli attributi, dei parametri e, dei valori tornati delle operazioni, e così via. DiNel conseguenza,seguente esempio compare un'espressione OCLche contienefa in generale riferimentiriferimento a taliun ''caratteristiche'' Si consideri il seguente esempioattributo:
 
:<code><b>context</b> Persona <b>inv:</b><br></code>
Riga 21:
 
Questa regola arricchisce la precedente con un ulteriore vincolo (legato da un [[and]] booleano), che specifica che ogni persona è più giovane del proprio padre.
 
===Invarianti su collezioni===
Gli attributi con molteplicità maggiore di 1 (ovvero che rappresentano [[insieme|insiemi]]), detti ''collezioni'', possono essere manipolati in OCL con un insieme di [[operatore|operatori]] specifici.
 
L'operatore <code>->size()</code> fornisce la numerosità di una collezione. La seguente regola indica che ogni persona ha due genitori:
 
:<code><b>context</b> Persona <b>inv:</b><br></code>
:<code>genitori->size()=2</code>
 
L'operatore <code>->forAll</code> corrisponde al [[quantificatore universale]] del calcolo dei predicati del primo ordine. La seguente regola rappresenta una sintesi delle precedenti, che specifica che ogni persona ha due genitori ed è più giovane di entrambi:
 
:<code><b>context</b> Persona <b>inv:</b><br></code>
:<code>genitori->size()=2 and forAll(genitore:Persona | età<genitore.età)</code>
 
==Voci correlate==