Определение выражений
Для определения обозначений необходимо использовать выражения. Агент разрешает эти выражения, чтобы назначить обозначениям значения.
Использование данных в выражении
Выражение может использовать следующие данные:- Входные обозначения данных для типа требования
- Другие обозначения, описанные в том же определении средства отображения требований
- Числовые константы
- Строковые константы (разграниченные с помощью
", например,"строка") - Логические константы (
true,TRUE,false,FALSE) - Константа
null
Если значение обозначения - это реализация класса Java™, выражения могут содержать ссылки на поля и методы, определенные внутри класса. Для ссылки на поле используйте формат обозначение.имя_поля. Для ссылки на метод используйте формат обозначение.имя_метода(параметры).
Вызов метода должен возвращать значение. Например, можно использовать строковые методы Java с обозначением, в котором есть строковое значение.
Чтобы сослаться на статическое поле или метод класса, можно использовать имя_класса.имя_поля и имя_класса.имя_метода(параметры).
Если обозначение относится к объекту массива, выражение может выбрать элемент (обозначение[селектор]) и определить длину массива (обозначение.length)
Операторы
- Логические операторы:
AND,&,OR,|,NOT,! - Сравнение:
==,!=,GT,>,LT,<,GE,>=,LE,<= - Числовые операторы:
+,-,*,/ - Скобки для принудительного определения порядка вычислений:
(,)
<, > и &. Вместо них можно использовать операторы GT (больше), GE (больше или равно), LT (меньше), LE (меньше или равно) и AND.instanceof:выражение instanceof java.class.имяЭтот оператор, аналогично оператору Java instanceof, порождает логическое значение. В данном примере это значение - true, если класс, к которому принадлежит значение выражение, удовлетворяет одному из следующих условий:- Называется
java.класс.имя - Представляет из себя непосредственный или косвенный подкласс класса, определенного как
java.класс.имя. - Реализует непосредственно или косвенно интерфейс, определенный классом
java.класс.имя.
new. Этот оператор аналогичен оператору Java new:new java.класс.имя(выражение1, выражение2, ... выражениеN)Приоритет операторов
Операторы могут разрешаться в порядке приоритета. Операторы одинакового уровня приоритета разрешаются слева направо. Порядок разрешения можно изменить с помощью скобок( и )..оператор (вызов метода или ссылка на поле)[ ](селектор элемента массива)new!,NOT*,/+,-GT,>,LT,<,GE,>=,LE,<=,instanceof==,!=AND,&OR,|
Пример
$s1 >= ( 2 * ($s2.sampMethod($s3, true) + 1))
- Вычисляется обозначение
$s1. Должно создаваться числовое значение. - Вычисляется обозначение
$s2. Должен создаваться объект Java. - Вычисляется обозначение
$s3. - Вызывается метод
sampMethodдля объекта, получаемого при разрешении$s2. Результат разрешения$s3передается как первый параметр, а логическое значениеtrue- как второй. ВызовsampMethodдолжен возвращать числовое значение. - 1 добавлен к результату шага 4.
- Результат шага 5 умножается на 2.
- Результат шага 1 сравнивается с результатом шага 6. Если результат шага 1 не меньше результата шага
6, возвращается значение
true. В ином случае возвращаетсяfalse.