Материал: Лабораторные_Архитерктура ИС

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

28

композиции

объект

-

часть

может

принадлежать

только

единственному

целому

и

кроме

того

как

правило

жизненный

цикл

частей

совпадает

с

циклом

целого

они

живут

и

умирают

вместе

с

ним

Любое

удаление

целого

распространяется

на

его

части

.

Такое

каскадное

удаление

нередко

рассматривается

как

часть

определения

агрегации

однако

оно

всегда

подразумевается

в

том

случае

,

когда

множественность

роли

составляет

1

..

1

например

если

необходимо

удалить

Клиента

то

это

удаление

должно

распространиться

и

на

Заказы

(

и

в

свою

очередь

на

Строки

заказа

).

Обобщения

С

помощью

обобщений

 (generalization) 

показывают

связи

наследования

между

двумя

классами

Большинство

объектно

-

ориентированных

языков

непосредственно

поддерживают

концепцию

наследования

Она

позволяет

одному

классу

наследовать

все

атрибуты

,

операции

и

связи

другого

На

языке

 UML 

связи

наследования

называют

обобщениями

и

изображают

в

виде

стрелок

от

класса

-

потомка

к

классу

-

предку

:

Student

- name
- address
- studentID

+ // get tuition()
+ // add schedule()
+ // delete schedule()

(from Design Model)

FulltimeStudent

- gradDate

(from Design Model)

ParttimeStudent

- maxNumCourses

(from Design Model)

Рис

1

.

1

2. 

Обобщение

background image

29

Помимо

наследуемых

каждый

подкласс

имеет

свои

собственные

уникальные

атрибуты

операции

и

связи

.

Множественность

Множественность

 (multiplicity) 

показывает

сколько

экземпляров

одного

класса

взаимодействуют

с

помощью

этой

связи

с

одним

экземпляром

другого

класса

в

данный

момент

времени

.

Например

при

разработке

системы

регистрации

курсов

в

университете

можно

определить

классы

 Course (

курс

и

 Student

(

студент

). 

Между

ними

установлена

связь

у

курсов

могут

быть

студенты

,

а

у

студентов

 – 

курсы

Вопросы

на

который

должен

ответить

параметр

множественности

: «

Сколько

курсов

студент

может

посещать

в

данный

момент

Сколько

студентов

может

за

раз

посещать

один

курс

Так

как

множественность

дает

ответ

на

оба

эти

вопроса

её

индикаторы

устанавливаются

на

обоих

концах

линии

связи

В

примере

регистрации

курсов

мы

решили

что

один

студент

может

посещать

от

нуля

до

четырех

курсов

а

один

курс

могут

слушать

от

1

до

 20

студентов

На

диаграмме

классов

это

можно

изобразить

как

показано

на

рис

1

.

1

3.

Course

Student

1

0..20

0..4

1

0..20

0..4

Рис

1

.

1

3. 

Множественность

В

языке

 UML 

приняты

следующие

нотации

для

обозначения

множественности

:

Множественность

Значение

0..*

Ноль

или

больше

1

..*

Один

или

больше

0..

1

Ноль

или

один

1

..

1

 (

сокращенная

запись

:  

1

)

Ровно

один

background image

30

Имена

связей

Связи

можно

уточнить

с

помощью

имен

связей

или

ролевых

имен

.

Имя

связи

 – 

это

обычно

глагол

или

глагольная

фраза

описывающая

зачем

она

нужна

Например

между

классом

 Person (

человек

и

классом

 Company

(

компания

может

существовать

ассоциация

Можно

задать

в

связи

с

этим

вопрос

является

ли

объект

класса

 Person 

клиентом

компании

,

её

сотрудником

или

владельцем

Чтобы

определить

это

ассоциацию

можно

назвать

 «employs» (

нанимает

):

Company

Person

Employs

Рис

1

.

1

4. 

Имя

связи

Имена

у

связей

определять

не

обязательно

Обычно

это

делают

если

причина

создания

связи

не

очевидна

Имя

показывают

около

линии

соответствующей

связи

.

Роли

Ролевые

имена

применяют

в

связях

ассоциации

или

агрегации

вместо

имен

для

описания

того

зачем

эти

связи

нужны

Возвращаясь

к

примеру

с

классами

 Person 

и

 Company, 

можно

сказать

что

класс

 Person 

играет

роль

сотрудника

класса

 Company. 

Ролевые

имена

 – 

это

обычно

имена

существительные

или

основанные

на

них

фразы

их

показывают

на

диаграмме

рядом

с

классом

играющим

соответствующую

роль

Как

правило

пользуются

или

ролевым

именем

или

именем

связи

,

но

не

обоими

сразу

Как

и

имена

связей

ролевые

имена

не

обязательны

,

их

дают

только

если

цель

связи

не

очевидна

Пример

ролей

приводится

ниже

:

Company

Person

+Employee

+Employer

Рис

1

.

1

5. 

Ролевые

имена

background image

3

1

1.6. 

Диаграммы

состояний

Диаграммы

состояний

определяют

все

возможные

состояния

,

в

которых

может

находиться

конкретный

объект

а

также

процесс

смены

состояний

объекта

в

результате

наступления

некоторых

событий

.

Существует

много

форм

диаграмм

состояний

незначительно

отличающихся

друг

от

друга

семантикой

Наиболее

распространенная

форма

используемая

в

объектно

-

ориентированных

методах

впервые

применялась

в

методе

ОМТ

и

впоследствии

была

адаптирована

Гради

Бучем

.

На

рис

1

.

1

приводится

пример

диаграммы

состояний

для

банковского

счета

Из

данной

диаграммы

видно

в

каких

состояниях

может

существовать

счет

Можно

также

видеть

процесс

перехода

счета

из

одного

состояния

в

другое

Например

если

клиент

требует

закрыть

открытый

счет

он

переходит

в

состояние

  «

Закрыт

». 

Требование

клиента

называется

событием

 (event), 

именно

такие

события

и

вызывают

переход

из

одного

состояния

в

другое

.

Рис

1

.

1

6. 

Диаграмма

состояний

для

класса

 Account

Открыт

Превышение

кредита

entry:

Временно

заморозить

счет

do:

Послать

уведомление

клиенту

exit:

Разморозить

счет

Закрыт

entry:

Выдать

кредитную

карту

Снятие

денег

[

отрицательный

баланс

]

Вклад

денег

[

положительный

баланс

]

Клиент

требует

закрыть

счет

/

Сохранить

дату

закрытия

счета

Проверка

баланса

[

отрицательный

баланс

в

течение

более

 30 

дней

]

background image

32

Если

клиент

снимает

деньги

с

открытого

счета

он

может

перейти

в

состояние

  «

Превышение

кредита

». 

Это

происходит

только

если

баланс

по

этому

счету

меньше

ноля

что

отражено

условием

  [

отрицательный

баланс

на

нашей

диаграмме

Заключенное

в

квадратных

скобках

условие

(guard condition) 

определяет

когда

может

или

не

может

произойти

переход

из

одного

состояния

в

другое

.

На

диаграмме

имеются

два

специальных

состояния

 – 

начальное

 (start)

и

конечное

 (stop). 

Начальное

состояние

выделено

черной

точкой

оно

соответствует

состоянию

объекта

когда

он

только

что

был

создан

.

Конечное

состояние

обозначается

черной

точкой

в

белом

кружке

оно

соответствует

состоянию

объекта

непосредственно

перед

его

уничтожением

На

диаграмме

состояний

может

быть

одно

и

только

одно

начальное

состояние

В

то

же

время

может

быть

столько

конечных

состояний

сколько

вам

нужно

или

их

может

не

быть

вообще

Когда

объект

находится

в

каком

-

то

конкретном

состоянии

могут

выполняться

различные

процессы

В

нашем

примере

при

превышении

кредита

клиенту

посылается

соответствующее

сообщение

Процессы

происходящие

когда

объект

находится

в

определенном

состоянии

называются

действиями

(actions).

С

состоянием

можно

связывать

данные

пяти

типов

деятельность

,

входное

действие

выходное

действие

событие

и

история

состояния

.

Рассмотрим

каждый

из

них

в

контексте

диаграммы

состояний

для

класса

Account 

системы

 ATM.

Деятельность

Деятельностью

 (activity) 

называется

поведение

реализуемое

объектом

пока

он

находится

в

данном

состоянии

Например

когда

счет

находится

в

состоянии

 «

Закрыт

», 

происходит

возврат

кредитной

карточки

пользователю

Деятельность

 – 

это

прерываемое

поведение

Оно

может

выполняться

до

своего

завершения

пока

объект

находится

в

данном

состоянии

или

может

быть

прервано

переходом

объекта

в

другое

состояние

Деятельность

изображают

внутри

самого

состояния

ей

должно

предшествовать

слово

 do (

делать

и

двоеточие

.

Источник: https://files.student-it.ru/previewfile/15390