Операции
Общий синтаксис представления операции имеет вид
Видимость Имя (Список Параметров): ВозвращаемыйТип {Характеристики}
Примеры объявления операций:
записать
+ записать зарегистрировать) и: Имя, ф: Фамилия) балансСчета ( ) : Integer нагревать ( ) (guarded) | Только имя
Видимость и имя Имя и параметры Имя и возвращаемый тип Имя и характеристика |
|
В сигнатуре операции можно указать ноль или более параметров, форма представления параметра имеет следующий синтаксис:
Направление Имя : Тип = ЗначениеПоУмолчанию
Элемент Направление может принимать одно из следующих значений:
in
out inout | Входной параметр, не может модифицироваться
Выходной параметр, может модифицироваться для передачи информации в вызывающий объект Входной параметр, может модифицироваться |
Допустимо применение следующих характеристик операций:
leaf
isQuery sequential guarded concurrent | Конечная операция, операция не может быть полиморфной и не может переопределяться (в цепочке наследования)
Выполнение операции не изменяет состояния объекта В каждый момент времени в объект поступает только один вызов операций. Как следствие, в каждый момент времени выполняется только одна операция объекта. Другими словами, допустим только один поток вызовов (поток управления) Допускается одновременное поступление в объект нескольких вызовов, но в каждый момент времени обрабатывается только один вызов охраняемой операции. Иначе говоря, параллельные потоки управления исполняются последовательно (за счет постановки вызовов в очередь) В объект поступает несколько потоков вызовов операций (из параллельных потоков управления). Разрешается параллельное (и множественное) выполнение операции. Подразумевается, что такие операции являются атомарными |