Object Constraint Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m wklink |
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti. |
||
(3 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1:
L''''Object Constraint Language''' o '''OCL''' è un [[Linguaggio formale|linguaggio di specifica formale]] inizialmente proposto come estensione per il linguaggio di modellazione [[Paradigma object-oriented|object-oriented]] [[Unified Modeling Language|UML]] e successivamente ([[2003]]) entrato a far parte del nuovo standard del linguaggio (UML 2.0). OCL può essere impiegato insieme a qualunque [[metamodello]] basato su [[Meta-Object Facility|MOF]]. Inoltre, OCL è un elemento chiave del nuovo standard per la trasformazione di modelli di OMG, [[QVT]], e fa parte della famiglia di standard che compongono la [[Model Driven Architecture]]. I principali ideatori di OCL sono [[Jos Warmer]] e [[Anneke Kleppe]].
OCL deriva da un linguaggio precedente noto come [[Syntropy]]. Il nucleo di OCL può essere descritto come un linguaggio mutuato dal
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).
Riga 74:
:<code>figli.coniuge->asSet().genitori->asSet()</code>
Estremamente simile a un attributo derivato è una ''query'', ovvero un'operazione senza effetti collaterali che fornisce un'informazione sull'oggetto a cui viene applicata. (Da un punto di vista implementativo potrebbe non esistere ''alcuna'' distinzione). La sintassi OCL per descrivere la semantica di un'operazione ''query'' è dunque molto simile a quella per le regole di derivazione. Se <code>suoceri</code> fosse stata espressa come [[query]], la si sarebbe specificata in OCL come segue:
:<code>'''context''' Persona::suoceri():Set(Persona) '''body:'''<br /></code>
Riga 234:
| a'''.substring('''n, m''')'''
| String
|-
| esistenza carattere all'interno della stringa (da A a Z)
| a'''.exists('''c ┃ c = [A, ..., Z]''')'''
| Boolean
|-
| uguaglianza
Line 249 ⟶ 253:
* [[Model Run]] ([[Borland]], {{collegamento interrotto|1=[http://www.borland.com/company/boldsoft.html/products/modelrun/modelrun.html] |data=marzo 2018 |bot=InternetArchiveBot }}), attualmente incluso in [[Borland Delphi 7 Studio Architect]]
* [[OCL Compiler]] ([[Cybernetic Intelligence GMBH]], [https://web.archive.org/web/20191227145653/http://www.cybernetic.org/]), un analizzatore di espressioni OCL, con diversi front-end per l'integrazione in ambienti UML come [[Rational Rose]]
* [[OCLCUD]] ([[Università tecnica di Dresda|Università di Dresda]]), [http://dresden-ocl.sourceforge.net]), integrato con [[ArgoUML]]
* [[Octopus]] ([[Klasse Objecten]], [http://www.klasse.nl/ocl/octopus-intro.html] {{Webarchive|url=https://web.archive.org/web/20050208013427/http://www.klasse.nl/ocl/octopus-intro.html |data=8 febbraio 2005 }}). Supporta completamente l'ultima versione di OCL, 2.0. Creato dagli autori di OCL.
|