Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.doc
Скачиваний:
436
Добавлен:
04.06.2015
Размер:
2.33 Mб
Скачать
      1. Типы данных и операцииOcl

В языке OCL используется четыре основных типа данных — значения могут быть целыми, вещественными (с плавающей запятой), логическими и строковыми. Над числами определены стандартные арифметические операции: сложение (знак +), вычитание (-), умножение (*), деление (/). Над значениями всех типов допускаются операции сравнения: меньше (<), больше (>), меньше или равно (<=), больше или равно (>=), не равно (<>), равно (=). Значения логических типов можно обрабатывать с помощью логических операций or (ИЛИ), and (И), not (HE), хоr (исключающее ИЛИ), а также операции implies. Операция implies представляет собой особую форму логической операции И, результат которой зависит от порядка операндов: X implies Y – это не всегда то же самое, что Y implies X.

      1. Инфиксная форма записи выраженийOcl

В язык OCL входит ряд операций, которые являются своеобразными аналогами стандартных функций языка Delphi. Только записываются они не как функции Delphi (имя идентификатора и параметры в круглых скобках), а в так называемой инфиксной записи, которая напоминает форму записи обычных арифметических выражений.

Инфиксная запись выражения подразумевает размещение операндов по обе стороны знака операции и вычисление выражения слева направо без учета приоритетов операций.

Типичное выражение OCL представляет собой цепочку элементов, ссылок и вызовов операций, которые последовательно, начиная с левого края выражения и до его правого края, обрабатывают значение, полученное к моменту их вызова. Функциональные элементы и операции языка OCL применяются к аргументу, расположенному левее. Они записываются справа от него, через точку. Вторым аргументом операции или вторым параметром функции OCL считается элемент, расположенный правее — его заключают в круглые скобки.

Так, для действительных чисел можно использовать операцию abs для определения модуля числа, или операцию round для округления. Однако эта операция записывается не слева, как принято в языках программирования, а справа от обрабатываемого значения и через точку. Само значение, соответственно, указывается слева от имени функции и считается ее первым аргументом. Так как второй параметр для данной операции не нужен, результат ее работы можно передать далее, поставив еще одну точку, вслед за которой можно записать очередную функцию.

Пусть, например, требуется округлить число 123,45 с помощью функции round. Соответствующее выражение OCL записывается следующим образом:

123 .45.round

Получить модуль отрицательного числа -123 с помощью функции abs можно так:

-123.abs

Если операция OCL использует два аргумента, второй из них заключается в круглые скобки, как обычный параметр. Например, операция max по выбору максимального из значений х и у запишется следующим образом:

х.mах(у)

Для логической обработки язык OCL предлагает несложную форму условного оператора. Такой оператор фактически представляет собой вычисляемое выражение и записывается следующим образом:

if условие then выражение-1 else выражение-2 endif

Если условие истинно, то вычисляется выражение-l, и результатом условного оператора считается его значение. В противном случае вычисляется выражение-2 и результатом считается уже его значение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]