Физическое

А б

Операции класса

Операция (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}

Имеет


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: