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''
:<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==
|