Описание тега ocl
Язык объектных ограничений ( OCL) может использоваться для определения инвариантов, запросов, предварительных и постусловий для метамоделей MOF (включая модели UML). Это позволяет пользователю указывать ограничения для моделей, которые не могут быть указаны в графической нотации UML.
Сам OCL - это типизированный язык без побочных эффектов, основанный на логике первого порядка.
Инварианты определяются для контекста, обычно для класса. Следующий инвариант утверждает, что все имена людей должны быть уникальными:
context Person inv namesUnique:
Person.allInstances->forAll(p|self.name=p2.name implies self=p2)
Обратите внимание, что OCL предоставляет встроенную функцию allInstances()
для доступа ко всем экземплярам класса.
Пред- и постусловия указываются в контексте операции. В почтовом состоянии специальный оператор@pre
может использоваться для доступа к значениям переменных, атрибутов и т. д. до вызова операции. Также специальная переменнаяresult
может использоваться для доступа к результату вызова операции.
Следующие условия могут быть указаны для операции pop():OclAny
стека:
pop():OclAny
pre self.size > 0
post self.size = self.size@pre - 1
post result = self.elements@pre->last()
Помимо определения ограничений, OCL используется в качестве языка запросов в подходах к преобразованию моделей, таких как QVT.
Дополнительную информацию о OCL можно найти на веб-сайтах семинара OCL или на портале OCL.