Object Constraint Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
{{WIP|Moongateclimber}}
L'<b>Object Constraint Language</b> o '''OCL''' è un [[linguaggio formale|linguaggio di specifica formale]]
Gran parte delle informazioni che si possono descrivere in OCL non sono esprimibili in nessun altro modo ''formale'' nel contesto di UML (ovvero non possono essere rappresentate dai [[diagramma|diagrammi]] UML).
==Descrizione==
===Invarianti semplici===▼
In genere, in UML, un'espressione OCL è associata a una ''classe'', e descrive proprietà degli ''oggetti'' istanza di quella classe. Tali proprietà sono descritte come condizioni che legano i valori degli attributi, dei parametri e dei valori tornati delle operazioni, e così via. Di conseguenza, un'espressione OCL contiene in generale riferimenti a tali ''caratteristiche'' Si consideri il seguente esempio:
:<code><b>context</b> Persona <b>inv:</b><br></code>
:<code>età>=0</code>
La [[parola chiave]] <code>context</context> precede la dichiarazione della classe a cui questa regola OCL si applica. <code>inv:</code> specifica che questa particolare regola è una [[invariante]], ovvero deve essere interpretata come una condizione che è sempre vera, per tutti gli oggetti di classe <code>Persona</code>. L'espressione che segue dichiara che l'età di una persona è sempre non negativa.
▲===Invarianti===
Nel caso in cui un attributo di una classe sia a sua volta un oggetto, è possibile riferirsi ai suoi attributi o metodi utilizzando la ''[[dot notation]]'':
:<code><b>context</b> Persona <b>inv:</b><br></code>
:<code>età>=0
Questa regola arricchisce la precedente con un ulteriore vincolo (legato da un [[and]] booleano), che specifica che ogni persona è più giovane del proprio padre.
==Voci correlate==
Riga 50 ⟶ 33:
* [http://www.parlezuml.com/tutorials/umlforjava/java_ocl.pdf Tutorial su OCL per [[Java (linguaggio)|Java]]]
* [http://www.klasse.nl/ocl/index.html Varie risorse su OCL] nel sito di [[Jos Warmer]] e [[Anneke Kleppe]]
* [http://www.deepthought.com.au/it/ocl_review.html Una revisione critica di OCL]
[[Categoria:UML]]
|