На этом шаге рассмотрим полный синтаксис операции в UML.
На самом высоком уровне абстракции при моделировании поведенческих свойств класса, то есть операций и сигналов, вы просто указываете имя каждой операции. Обычно этой информации достаточно, чтобы пользователь понял назначение модели. Однако можно также специфицировать видимость и область действия каждой операции, а кроме того, ее параметры, тип возвращаемого значения, семантику параллелизма и прочие свойства. Имя операции вместе с ее параметрами, включая тип возвращаемого значения, если оно есть, называется сигнатурой операции.
Понятия "операция" и "метод" в UML различаются. Операция – это сервис, который может быть запрошен у любого объекта класса для реализации поведения, а метод – реализация операции. Каждой неабстрактной операции класса должен быть сопоставлен метод, который содержит исполняемый алгоритм в виде тела класса (обычно реализованного на некотором языке программирования или в виде структурированного текста). В структуре наследования допускается множество методов для одной и той же операции, и полиморфизм позволяет указать, какой метод из иерархии вызывается во время исполнения.
Полный синтаксис операции в UML выглядит так:
[видимость] имя [‘(‘ список параметров ‘)’] [‘:’ тип возвращаемого значения] [строка свойств {, строка свойств}]
Приведем в качестве примера несколько корректных объявлений операции:
В сигнатуре операции вы можете указать ноль, один или несколько параметров, каждый из которых выражается следующим синтаксисом:
[direction] name : type [=default-value]
Направление (direction) может принимать одно из следующих значений:
Параметры out и inout эквивалентны соответственно возвращаемому параметру и параметру in. Значения out и inout предусмотрены для совместимости с более старыми языками программирования. Используйте вместо них явные возвращаемые параметры.
В дополнение к свойствам leaf и abstract, есть другой ряд свойств, характеризующих операции:
Свойства параллелизма (sequential, guarded и concurrent) предназначены для поддержки семантики параллелизма операций. Эти свойства существенны только в присутствии активных объектов, процессов или потоков.
На следующем шаге рассмотрим типичные приемы моделирования семантики класса в UML.