А б
Операции класса
Операция (operation) класса служит для представления отдельной характеристики поведения, которая является общей для всех объектов данного класса.
Общий формат записи операции класса следующий:
< операция>::=
[<видимость >]
<имя операции> ‘(‘ [< список параметров >] ‘)’
[
‘:’ [< тип возвращаемого результата > ]
‘{‘ <свойство операции > [‘,’ <свойство операции >]* ‘}’
]
[<видимость >] Видимость операции определяется аналогично видимости аргумента (см. табл.14).
<имя операции> Требования к оформлению имени операции:
· имя операции параметр обязательный;
· имя операции начинается со строчной буквы;
· не рекомендуется иметь пробелы;
· обязательно после имени должны идти круглые скобки.
<список параметров> (parameter list) – перечень разделенных запятыми формальных параметров операции и имеет общие формы записи:
<список параметров>:: = <параметр> [‘,’<параметр >]*
:<тип возвращаемого результата > (return type) – определяет тип значения возвращаемой данной операцией (двоеточие могу быть опущены, если операция не возвращает никакого значения)
|
|
<свойство операции> (operation property) служит для указания дополнительных свойств.
Список свойств приведен в таблице 25
Формат записи свойства операций
< свойство операции >:: = ‘redefines’ < имя операции? > | ‘query’ |
‘ordered’ | ‘unique’ | <ограничение >
Таблица 25. Назначение свойств операций
Свойства операций | Назначение свойства операции |
redefines <имя операции> | Переопределяет наследуемую операцию с именем <имя операции> |
query | Не изменяет состояния моделируемой системы и, соответственно, не имеет побочного эффекта |
ordered | Значения возвращаемого параметра являются упорядоченными. (Предполагается, что кратность данного возвращаемого параметра должна быть больше 1) |
unique | Значения возвращаемого параметра не могут повторятся. (Предполагается, что кратность данного возвращаемого параметра должна быть больше 1) |
<ограничение > | Выражение, которое определяет некоторое ограничение, применяемое к данной операции |
Операции, область действия которой распространяется на все экземпляры класса, показывается подчеркиванием строки соответствующей операции.
В качестве клиентов операций могут выступать экземпляры различных классов, а не только того класса, к которому принадлежит данная операция.
2.4. Параметры Операции Класса
Параметр (parameter) является спецификацией аргумента, который используется при выполнении операции.
Формат записи параметров:
<параметр>::= [<направление > ] <имя параметра> ’: ’ <выражение типа>
|
|
[‘[‘ <кратность > ’]‘] [ ‘=’ <значение по умолчанию> ]
[ ‘{‘<свойство параметра> [ ‘,’ < свойство параметра >]* ‘ } ’ ]
Не за что
Таблица …. Семантика Параметров Операции Класса
Параметр | |||
<направление >::= | ‘in’ | Указывает на то, что значения этого параметра передаются в операцию вызывающим объектом | |
‘out’ | Указывает на то, что значения этого параметра передаются вызывающему объекту по окончании выполнения операции | ||
‘inout’ | Указывает на то, что значения этого параметра с начло передаются внутрь операции, а затем передаются наружу | ||
‘return’ | Работает подобно out | ||
<имя параметра> (parameter name) | Идентификатор формального параметра, при записи которого необходимо следовать правилам задания имен атрибутов | ||
:<выражение типа> (type expression) | Является спецификацией типа данных для возможных значений соответствующего формального параметра. Этот терм аналогичен рассмотренному выше терму <тип атрибута> для атрибутов классов | ||
<кратность> (multiplicity) | Характеризует общее количество конкретных параметров с данным именем, которые могут принадлежать тому или иному объекту данного класса. Кратность параметра записывается в форме строки текста в соответствии с правилами, рассмотренными ранее для атрибутов классов | ||
=<значение по умолчанию> (default) | Представляет собой некоторые выражение, которое специфицирует конкретное значение по умолчанию для данного формального параметра | ||
<свойство параметра> (parameter property) | Указывает дополнительные свойства значений данного формального параметра. В качестве значений свойств параметра могут быть использованы модификаторы атрибутов | ||
Предусловие (precondition) для операции определяет условия, которое должно быть истинным, когда эта операция вызывается.
Постусловие (postcondition) для операции определяет условие, которое должно быть истинным, когда вызов операции успешно завершился, в предположении, что все предусловия были удовлетворены.
Пример 1: запись операций для класса Сотрудник:
+ добавить(in номерТелефона: Integer [*] {unique})
Ключевой символ | Назначение |
+ | Указывает на “видимость” знак + указывает на то, что данный класс является общедоступным |
добавить | Название класса |
( | Открывающая скобка указывает на начало описания параметров операции класса |
in | Указывает на то, что значения этого параметра передаются в операцию вызывающим объектом |
номерТелефона | Имя входного параметра |
: Integer | Указывает на то, что у входного параметр тип данных целочисленный |
[*] | Многозначность |
{unique} | Значения возвращаемого параметра не могут повторяться |
) | Закрывающая скобка указывает на окончание описания параметров операции класса |
Пример 2:
–изменить (in заработнаяПлата: Currency)
Закрытая операция с единственным передаваемым параметром заработнаяПлата типа Currtnce
______________________________________________________
Пример 3:
+создать(): Boolean
Общедоступная операция по созданию отдельного класса Сотрудник, которая не содержит параметров. После вызова данной операции она должна возвратить логическое значение.
___________________________________________________________
3. Отношения между классами
Виды Отношений между Классами, используемые при построении диаграммы классов:
· ассоциация
o агрегация
o композиция
· обобщение
· зависимость
· реализация
3.1. Ассоциация
Ассоциация (association) – произвольное отношение или взаимосвязь между классами.
Бинарная ассоциация (binary association) обозначается сплошной линией со стрелкой или без нее (возможны дополнительные символы)
Дополнительные символы:
· имя ассоциации;
· символ навигации;
· видимость;
|
|
· полюс ассоциации.
Имя ассоциации Символ направления чтения
ассоциации
Имя полюса ассоциации Имя полюса ассоциации
+ работник Работает + работодатель
Сотрудник Компания
1.. * 1
Кратность полюсов
ассоциации
Имя ассоциации (association name):
· элемент необязательный;
· имя начинается с большой (прописной) буквы полужирным шрифтом;
Бинарная ассоциация – ассоциация, связывающая два класса
Рефлексивная ассоциация – ассоциация, которая связывает класс с самим собой (частный случай бинарной ассоциации).
Полюс (или Конец ассоциации) (association end) – точка соединения линии ассоциации с классом.
Полюс имеет следующие параметры.
o Имя (role), которое определяет роль класса, расположенного на соответствующем полюсе ассоциации.
o Имя полюса ассоциации является необязательным параметром.
o Имя полюса ассоциации начинается со строчной (маленькой) буквы, и все буквы обычные (нежирные).
Видимость полюса ассоциации устанавливает возможность доступа к соответствующему полюсу ассоциации с других полюсов.
Кратность полюса ассоциации определяет возможное количество экземпляров класса, которое может соотносится с одним экземпляром класса на другом полюсе ассоциации.
Кратность полюсов ассоциации обозначается в виде интервала целых чисел, аналогично кратности атрибутов, но без прямых скобок.
Символ наличия навигации (navigable) изображается с помощью стрелки в форме буквы ”V” на полюсе ассоциации. Наличие стрелки указывает, что класс является доступным для навигации со стороны классов на других полюсах ассоциации
Символ отсутствия навигации (non navigable) изображается с помощью буквы «X” на линии у полюса ассоциации. Наличие этого символа указывает на то, что класс является недоступным для навигации со стороны классов на других полюсах ассоциации.
Строка свойств (property string) записывается в фигурных скобках и служит для указания на наличие дополнительных свойств полюса ассоциации. Список свойств приведен в табл. №
|
|
Таблица … Назначение свойств полюсов ассоциаций в UML
№ | Свойство полюса ассоциации | Назначение свойства полюса ассоциации |
{subsets <имя элемента>} | Полюс ассоциации представляет собой некоторое подмножество <имя элемента>, в качестве которого может выступать имя полюса ассоциации или атрибута класса | |
{redefined <имя полюса ассоциации>} | Полюс ассоциации переопределяет другой Полюс ассоциации с именем <имя полюса ассоциации> | |
{union} | Полюс ассоциации является производным и определяется посредством объединения своих подмножеств | |
{ordered} | Полюс ассоциации представляет собой некоторое упорядоченное множество | |
{bag} | Полюс ассоциации представляет собой мультимножество или совокупность, в которой допускается представлять один и тот же элемент более одного раза | |
{sequence} или {seq} | Полюс ассоциации представляет собой некоторую последовательность или упорядоченное мультимножество |
Отсутствие стрелки или символа отсутствия навигации означает, что навигация для соответствующего полюса ассоциации не определена.
Связь это экземпляр ассоциации.
Пример ассоциации с определенной навигацией
Содержит +сторона Многоугольник
Многоугольник Х Линия
1 3.. * +сторона: Линия[3..*]
Рис. 27 Графическое изображение:
а – бинарной ассоциации с навигацией:
б – эквивалентное ему представление класса с атрибутом
Комментарии к примеру а:
· имеет место бинарная ассоциация с названием «Содержит»
· один Полюс ассоциации имеет название «сторона»
· отсутствует навигация на одной стороне
Пример различных комбинаций наличия и отсутствия навигации у полюсов ассоциации (рис. 28)
a b
A B
1..5 2..*
c d
C X X D
1..5 2..3
e f
E F
1..* 2..3
g h
G X H
1..5 1..3
i j
I J
1..5 2..3
Рис. 28. Различные варианты изображения навигации и кратности у полюсов ассоциации
На рис. 28 все классы связаны бинарными ассоциациями.
Полюса ассоциаций для классов A, B, H, J имеют навигацию.
Полюса ассоциаций для классов C, D, G не имеют навигации.
Для полюсов ассоциаций классов E, F, I навигация не определена.
Исключающая ассоциация (Xor-association) Случай, когда из нескольких входящих ассоциаций в класс одновременно может быть реализована только одна.
Пример:
Имеет лицо
{order}
1.. *
Счет в банке {XOR}
1.. *
{order}
Имеет