
5. ТЕХНОЛОГИЯ MDA
5.2. Язык объектных ограничений OCL
Технологии разработки программного обеспечения. Учеб. пособие -173-
5
5
.
.
2
2
.
.
1
1
.
.
Т
Т
и
и
п
п
ы
ы
д
д
а
а
н
н
н
н
ы
ы
х
х
и
и
о
о
п
п
е
е
р
р
а
а
ц
ц
и
и
и
и
O
O
C
C
L
L
В языке OCL используется четыре основных типа данных – значения
могут быть целыми, вещественными (с плавающей запятой), логическими и
строковыми. Над числами определены стандартные ар
ифметические опера-
ции: сложение (знак +), вычитание (–), умножение (*), деление (/). Над значе-
ниями всех типов допускаются операции сравнения: меньше (<), больше (>),
меньше или равно (<=), больше или равно (>=), не равно (<>), равно (=). Зна-
чения логических типов можно обрабатывать с помощью логических опера-
ций or (ИЛИ), and (И), not (HE), хоr (исключающее ИЛИ), а также операции
im
plies. Операция implies представляет собой особую форму логической опе-
рации И, результат которой зависит от порядка операндов: X implies Y – это
не всегда то же самое, что Y implies X.
5
5
.
.
2
2
.
.
2
2
.
.
И
И
н
н
ф
ф
и
и
к
к
с
с
н
н
а
а
я
я
ф
ф
о
о
р
р
м
м
а
а
з
з
а
а
п
п
и
и
с
с
и
и
в
в
ы
ы
р
р
а
а
ж
ж
е
е
н
н
и
и
й
й
O
O
C
C
L
L
В язык OCL входит ряд операций, которые являются своеобразными
аналогами стандар
тных функций языка Delphi. Только записываются они не
как функции Delphi (имя идентификатора и параметры в круглых скобках), а
в так называемой инфиксной записи, которая напоминает форму записи
обычных арифметических выражений.
Инфиксная запись выражения подразумевает размещение операндов по
обе стороны знака операции и вычисление выражения слева направо без уче-
та приоритетов операций.
Типичное выражен
ие OCL представляет собой цепочку элементов,
ссылок и вызовов операций, которые последовательно начиная с левого края
выражения и до его правого края обрабатывают значение, полученное к мо-
менту их вызова. Функциональные элементы и операции языка OCL приме-
няются к аргументу, расположенному левее. Они записываются справа от не-
го через точку. Вто
рым аргументом операции или вторым параметром функ-
ции OCL считается элемент, расположенный правее, его заключают в круг-
лые скобки.
Так, для действительных чисел можно использовать операцию abs для
определения модуля числа или операцию round для округления. Однако эта
операция записывается не слева, как принято в языках программирования, а
справа от обрабатываемого значения и через точку. Само значени
е, соответ-
ственно, указывается слева от имени функции и считается ее первым аргу-
ментом. Так как второй параметр для данной операции не нужен, результат
ее работы можно передать далее, поставив еще одну точку, вслед за которой
можно записать очередную функцию.
Пусть, например, требуется округлить число 123,45 с помощью функ-
ции round. Соответствующее выражен
ие OCL записывается следующим об-
разом:
123.45.round