Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

OCL (Object Constraint Language, Объектный язык ограничений)

Объектный язык ограничений (Object Constraint Language) - эта текстовый язык, который служит для определения ограничений и запросов. Он не предназначен для написания действий или выполнимого кода. Подробное изложение этого языка смотрите в книге Йоса Вармера.

Семантика

Объектный язык ограничений (OCL) представляет собой текстовый язык для создания навигационных выражений, логических и прочих запросов. Его можно использовать для описания ограничений, сторожевых условий, действий, пред- и постусловий, формальных утверждений и прочих выражений, принятых в языке UML. Полное описание синтаксиса языка OCL вы найдете в книге Йоса Вермера . Мы же приводим здесь наиболее популярные варианты синтаксиса этого языка, служащие для создания навигационных и логических выражений. В полном варианте языка содержится большое количество предопределенных операторов для коллекций и примитивных типов.

Нотация

Ниже мы приводим синтаксис некоторых общих навигационных выражений. Эти формы можно соединять в цепочки. Элементы, стоящие слева, представляют собой выражения, которые должны описывать объект или множество объектов. Предполагается, что эти выражения будут работать для множества значений. Более подробное описание самого языка ограничений и его синтаксиса смотрите в книге, на которую мы ссылались выше.
элемент. селектор
селектор - это имя атрибута в элементе или имя роли целевого конца "связи, который прикреплен к этому элементу. Результатом является значение атрибута или объекта у противоположного конца сеяли. В зависимости от множественности элемента и ассоциации результатом может быть одно значение пли множество значений.
элемент. селектор (аргументсписок)
селектор - это имя операции для данного элемента. Результатом является возвращаемое значение операции, применяемой к элементу.
элемент. селектор [значение-квалифнкатора]
селектор обозначает квалифицированную ассоциацию, которая выбирает необходимый элемент; значение квалификатора - это значение квалификатора атрибута. Результатом является связанный объект, выбранный квалификатором. Обратите внимание, что этот вид синтаксиса применяется при индексировании массивов и качестве формы квалификации.
множество -> свойство-множества
свойство-множества - это имя встроенной OCL-функции для множества. Результатом является свойство множества, свойство-множества может быть только предопределенной OCL-функцией. Некоторые свойства перечислены ниже.
множество -> select (логическое-выражение)
логическое-выражение - записывается в терминах объектов, находящихся во множестве. Результатом является подмножество объектов множества, для которых логическое выражение будет истинным.
множество -> size
Количество элементов во множестве.
self
Указывает на текущий объект (если on очевиден по контексту, может опускаться).
знак операции
Обычные знаки арифметических или логических операций: = <><=>=<> + - * / not

Пример

flight.pilot.traning_hours >= flight.plane.minimurn_hours

Множество пилотов, которые имеют достаточное количество часов тренировочных полетов.
company.employees->select (title = "Boss" and self.reports ->size > 10)
Подмножество начальников, которые сделали более 10 отчетов.

Алфавитный указатель