Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Операции и методы в языке UML.Свойства понятий и нотация. Примеры



Класс имеет уникальное имя, начинающееся с большой буквы, список операций, методов и атрибутов.

Операция (Operation) – это спецификация или описание результата преобразования или запроса, который должен выполнить вызываемый объект. Имеет имя и список параметров. Имя операции пишется с маленькой буквы.

Метод – это процедура, непосредственно реализующая операцию. Она имеет алгоритм и описание процедуры. Название метода совпадает с названием операции, перечень параметров может уточняться.

Кроме метода операцию можно реализовывать событием вызова (событие перехода из состояния в состояние), которое приводит к переходу в конечном автомате активного объекта – это другой способ реализации операции.

Операция – это некоторая последовательность действий. Совокупность операций характеризует функциональный аспект поведения класса.

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

Операцию объявляют в классе, после чего объявление наследуется потомками этого класса. Если у другой операции сопоставляемая сигнатура, значит, это одна и та же операция. Программная реализация может определять правило совпадения сигнатур, чтобы тестировать их на наличие конфликтов. По умолчанию в сигнатуру входят имя операции и классы (но не имена и не направление передачи) параметров, без учета возвращаемых параметров. Та же самая операция может появляться в классе-потомке. В этом случае ее считают повторением унаследованного объявления и игнорируют.

Если два объявления операции имеют одинаковые имена и упорядоченный список типов параметров (исключая возвращаемые параметры), а остальные свойства этих операций отличаются, (например, если параметр является входным параметром (in-parameter) в одной операции и выходным параметром (out-parameter) в другой), то между этими двумя объявлениями возникает конфликт и модель считается плохо согласованной.

Если у двух одинаковых объявлений операций нет общего объявления -предка, однако, при этом они наследуются одним классом, значит, модель плохо согласована - одинаковые объявления операций вызовут конфликт в классе, который их наследует.

Синтаксис общего определения операции:

[<стереотип>][<видимость>]<имя>(<список_параметров>):[<возващ.тип>][{строка свойств}]

Стереотип, видимость, выражение возвращаемого типа и строка свойств опциональны (равно как и отделяющие их знаки пунктуации). Список параметров может быть пустым.

Строка-свойство служит для указания значений свойств, которые могут быть применены к данному элементу. Строка-свойство может отсутствовать, если никакие свойства не специфицированы.

Операция с областью действия на весь класс показывается подчеркиванием имени и строки выражения типа. По умолчанию под областью операции понимается объект класса. В этом случае имя и строка выражения типа операции не подчеркиваются.

Пример:

+display (): ochtion

-hide ()

"constructor" + create ()

-atlachXWindow(x win:Xwindow')

В качестве примеров записи операций можно привести следующие обозначения отдельных операций:

Свойства операций:

1. Concurrency (параллелизм) - возможность выполнять операции параллельно с др. операциями данного экземпляра класса

изображается при помощи строки свойств concurrency=значение

a) Sequential – последовательное выполнение

b) Guarded (охраняемая операция) – все вызовы данной операции выстраиваются в очередь и упорядочиваются по времени.

c) Concurrent (параллельная)

По умолчанию принят последовательный способ.

a) Sequential. Во время ее выполнения может пройти только один вызов, осуществляется блокировка данной операции на время ее выполнения. (Вызывающие объекты должны быть скоординированы таким образом, чтобы одновременно осуществлялся только один вызов любой последовательной операции объекта. В случае если вызовы будут идти параллельно, гарантировать семантику и целостность системы невозможно).

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

c) Concurrent. Все вызовы данной операции обрабатываются параллельно в различных нитях управления. Все они могут происходить одновременно. Семантика при этом остается корректной. Параллельные операции можно проектировать таким образом, чтобы они осуществлялись корректно в случае наличия параллельной, последовательной или охраняемой onqtannw для одного и того же объекта.

2. Полиморфизм - возможность замещения этой реализации операции (метод или событие вызова) своим способом. IsPolymorphism= true |false. Если полиморфность есть, то реализация операции может быть подменена в классе-потомке, который предоставляет новое определение метода или другой переход в конечном автомате. Таким образом, реализация может принимать различные формы (иначе говоря, она полиморфна). Если же полиморфность отсутствует, то текущая реализация наследуется без изменений всеми потомками и имеет одну единственную форму.

3. запрос (query). Указывает, оставляет ли операция состояние системы неизменным, иначе говоря, является ли она запросом. Если да, то операция возвращает значение и больше ничего не делает. Если нет, то она может изменить состояние системы. isQuery= true|false.

4. имя (name) – уникальное в пределах проекта. Если же встречаемся дублирование, то оно воспринимается как повторное объявление операции, которое должно полностью совпадать с предыдущим. Глагол или глагольная форма с (), со строчной буквы.

5. Возвращаемое значение. Список типов значений, которые возвращаются вызовом операции (если таковые имеются). Если операция не возвращает значений, значит, это свойство имеет нулевое значение (null).

Сначала идет список параметров операции, затем двоеточие и уже после него - строка возвращаемого типа. Если операция не возвращает никакого значения, то двоеточие и строка типа просто не указываются (в языке С++ соответствует типу void). Некоторые языки программирования поддерживают возможность возврата нескольких значений.

6. список параметров (parameter list) - Список объявлений параметров операции, разделенных запятыми. Каждый из них состоит направления, имени и типа. Весь список берется в круглые скобки - даже если этот список пустой.

7. область действия (scope) – может указываться. Указывает, применяется ли операция к отдельным объектам или ко всему классу. Возможны следующие значения:

a) экземпляр (instance) Операцию можно применять к отдельным объектам.

b) класс (class) Операция применяется к самому классу, - например, операция но созданию экземпляра класса.

8. видимость (visibility) - Видимость операции для классов, отличных от того, в котором она определяется.

a) + Public

b) - Protected

c) # Private

9. спецификация (specification) - Выражение, описывающее действия, производимые в результате выполнения операции (например, условия до-и-после). Язык UML не определяет формат спецификации, то есть она может принимать разнообразные формы. Его можно сформулировать по-разному, включая текст, условия до-после и интервалы. В любом случае спецификация должна быть выражена в терминах наблюдаемого воздействия операции на состояние системы, а не в терминах алгоритма выполнения. За алгоритм отвечает метод.

Операции делятся на абстрактные и конкретные.

Абстрактная (обобщение) операция не имеет определенного метода реализации. При спецификации абстрактных операций можно использовать <<abstract>>. Абстрактная операция записывается курсивом.

Если операция имеет определенный метод реализации, то это операция конкретная.

Если операция объявлена в классе, не имеющем абстрактных свойств, то для нее в этом классе задается метод. если метод наследуется, то она может быть конкретной.

Call Event – событие вызова. Событие вызова имеет те же составляющие, что и операция. Реализация операции должна определяться одним или несколькими переходами, которые активируются событием вызова.

Особым видом операции являются сигналы – signal. Сигнал - это одностороннее сообщение, не имеющее возвращаемое значения. Сигнал является фундаментальным видом коммуникации. Перед ней ставится стереотип «signal».

Реакция объекта на получение события изображается при помощи конечного автомата. Помимо всего прочего, эта нотация может отображать реакцию объектов этого класса на сбойные ситуации и на исключения, которые должны моделироваться в виде сигналов.

Методы

Метод имеет алгоритм и тело.

Метод является конкретной реализацией операции. Спецификации или сигнатуры методов и операций совпадают.

Метод обладает теми же составляющими, что и операция. Кроме того, у него может быть одно или несколько своих собственных свойств:

1) Поведение (behavior) - Необязательный конечный автомат, описывающий реализацию метода.

2) тело (body) - Выражение, описывающее процедуру (содержание) метода. Может быть представлено в виде фрагмента текста (находящегося в примечании, которое прикреплено к объявлению операции). Обычно тело метода записывается на языке программирования (нужно брать в фигурные скобки), однако для неформальных определений может подойти и естественный язык (комментарий). Вообще, это значение обычно не указывается вместе с конечным автоматом. Присутствует либо конечный автомат, либо текст метода.

Связь между объявлением метода и его конечным автоматом или кооперацией не имеет визуального представления, однако инструмент моделирования может создать в соответствующем месте гиперссылку.

3) кооперация (collaboration) - Множество коопераций, описывающих реализацию метода в виде упорядоченного множества сообщений, которыми обмениваются роли (при взаимодействии).

Метод имеет диаграмму активности. Эта диаграмма соответствует схеме алгоритма и схеме программы.





Дата публикования: 2015-02-18; Прочитано: 742 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...