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

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

1

8

Диаграмма

классов

для

варианта

использования

  «

Снять

деньги

» 

показана

на

рис

1

.6.

Рис

1

.6. 

Диаграмма

классов

для

варианта

использования

«

Снять

деньги

»

На

этой

диаграмме

классов

показаны

связи

между

классами

,

реализующими

вариант

использования

  «

Снять

деньги

». 

В

этом

процессе

задействованы

четыре

класса

: Card Reader

1

  (

устройство

для

чтения

карточек

), Account (

счет

), ATM Screen (

экран

АТМ

и

 Cash Dispenser

(

кассовый

аппарат

). 

Каждый

класс

на

диаграмме

выглядит

в

виде

прямоугольника

разделенного

на

три

части

В

первой

содержится

имя

класса

во

второй

 – 

его

атрибуты

В

последней

части

содержатся

операции

класса

отражающие

его

поведение

 (

действия

выполняемые

классом

).

                                          

1

На

диаграммах

классов

и

всех

последующих

диаграммах

используются

английские

имена

так

как

только

такие

имена

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

в

языках

программирования

Использование

русских

имен

объектов

операций

атрибутов

и

т

д

сопряжено

с

большими

трудностями

так

как

 CASE-

средства

их

не

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

должным

образом

.

Card Reader

- Card Number : integer

+ Accept Card() : integer

+ Eject Card() : integer

+ Read Card() : integer

<<Entity>>

Account

- Account Number : integer

- PIN : integer

- Balance : long

+ Open() : integer

+ Withdraw Funds(Amount : long) : integer

- Deduct Funds(Amount : long) : integer

- Verify Funds() : integer

<<Entity>>

Cash Dispenser

- Cash Balance : long

+ Provide Cash() : integer

+ Provide Receipt() : integer

<<Boundary>>

0..

1

0..

1

0..

1

1

0..n

ATM Screen

+ Prompt() : integer

+ AcceptInput(Input : Integer) : integer

<<Boundary>>

0..

1

background image

1

9

Связывающие

классы

линии

отражают

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

между

классами

Так

класс

 Account 

связан

с

классом

 ATM Screen (

экран

АТМ

), 

потому

что

они

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

сообщаются

и

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

друг

с

другом

Класс

 Card Reader (

устройство

для

чтения

карточек

)

не

связан

с

классом

 Cash Dispenser (

кассовый

аппарат

), 

поскольку

они

не

сообщаются

друг

с

другом

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

.

1.5.2 

Стереотипы

классов

Стереотипы

 – 

это

механизм

позволяющий

разделять

классы

на

категории

В

языке

 UML 

определены

три

основных

стереотипа

классов

:

Boundary (

граница

), Entity (

сущность

и

 Control (

управление

).

Граничные

классы

Граничными

классами

 (boundary classes) 

называются

такие

классы

,

которые

расположены

на

границе

системы

и

всей

окружающей

среды

.

Это

экранные

формы

отчеты

интерфейсы

с

аппаратурой

  (

такой

как

принтеры

или

сканеры

и

интерфейсы

с

другими

системами

.

Чтобы

найти

граничные

классы

надо

исследовать

диаграммы

вариантов

использования

Каждому

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

между

действующим

лицом

и

вариантом

использования

должен

соответствовать

по

крайней

мере

один

граничный

класс

Именно

такой

класс

позволяет

действующему

лицу

взаимодействовать

с

системой

.

Классы

-

сущности

Классы

-

сущности

 (entity classes) 

содержат

хранимую

информацию

.

Они

имеют

наибольшее

значение

для

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

и

потому

в

их

названиях

часто

используют

термины

из

предметной

области

Обычно

для

каждого

класса

-

сущности

создают

таблицу

в

базе

данных

.

Управляющие

классы

Управляющие

классы

 (control classes) 

отвечают

за

координацию

действий

других

классов

Обычно

у

каждого

варианта

использования

имеется

один

управляющий

класс

контролирующий

последовательность

событий

этого

варианта

использования

Управляющий

класс

отвечает

за

координацию

но

сам

не

несет

в

себе

никакой

функциональности

так

как

остальные

классы

не

посылают

ему

большого

количества

сообщений

.

Вместо

этого

он

сам

посылает

множество

сообщений

Управляющий

класс

background image

20

просто

делегирует

ответственность

другим

классам

по

этой

причине

его

часто

называют

классом

-

менеджером

.

В

системе

могут

быть

и

другие

управляющие

классы

общие

для

нескольких

вариантов

использования

Например

может

быть

класс

SecurityManager (

менеджер

безопасности

), 

отвечающий

за

контроль

событий

связанных

с

безопасностью

Класс

 TransactionManager (

менеджер

транзакций

занимается

координацией

сообщений

относящихся

к

транзакциям

с

базой

данных

Могут

быть

и

другие

менеджеры

для

работы

с

другими

элементами

функционирования

системы

такими

как

разделение

ресурсов

распределенная

обработка

данных

или

обработка

ошибок

.

Помимо

упомянутых

выше

стереотипов

можно

создавать

и

свои

собственные

.

1.5.3. 

Механизм

пакетов

Пакеты

применяют

чтобы

сгруппировать

классы

обладающие

некоторой

общностью

Существует

несколько

наиболее

распространенных

подходов

к

группировке

Во

-

первых

можно

группировать

их

по

стереотипу

В

таком

случае

получается

один

пакет

с

классами

-

сущностями

один

с

граничными

классами

один

с

управляющими

классами

и

т

.

д

Этот

подход

может

быть

полезен

с

точки

зрения

размещения

готовой

системы

поскольку

все

находящиеся

на

клиентских

машинах

пограничные

классы

уже

оказываются

в

одном

пакете

.

Другой

подход

заключается

в

объединении

классов

по

их

функциональности

Например

в

пакете

 Security (

безопасность

)

содержатся

все

классы

отвечающие

за

безопасность

приложения

В

таком

случае

другие

пакеты

могут

называться

 Employee Maintenance (

Работа

с

сотрудниками

), Reporting (

Подготовка

отчетов

и

 Error Handling

(

Обработка

ошибок

). 

Преимущество

этого

подхода

заключается

в

возможности

повторного

использования

.

Механизм

пакетов

применим

к

любым

элементам

модели

а

не

только

к

классам

Если

для

группировки

классов

не

использовать

некоторые

эвристики

то

она

становится

произвольной

Одна

из

них

которая

в

основном

используется

в

 UML, – 

это

зависимость

Зависимость

между

background image

2

1

двумя

пакетами

существует

в

том

случае

если

между

любыми

двумя

классами

в

пакетах

существует

любая

зависимость

Таким

образом

,

диаграмма

пакетов

(

рис

1

.7) 

представляет

собой

диаграмму

,

содержащую

пакеты

классов

и

зависимости

между

ними

Строго

говоря

,

пакеты

и

зависимости

являются

элементами

диаграммы

классов

то

есть

диаграмма

пакетов

 – 

это

форма

диаграммы

классов

.

Entities

Boundaries

Control

Рис

1

.7. 

Диаграмма

пакетов

Зависимость

между

двумя

элементами

имеет

место

в

том

случае

если

изменения

в

определении

одного

элемента

могут

повлечь

за

собой

изменения

в

другом

Что

касается

классов

то

причины

для

зависимостей

могут

быть

самыми

разными

один

класс

посылает

сообщение

другому

;

один

класс

включает

часть

данных

другого

класса

один

класс

использует

другой

в

качестве

параметра

операции

Если

класс

меняет

свой

интерфейс

,

то

любое

сообщение

которое

он

посылает

может

утратить

свою

силу

.

Пакеты

не

дают

ответа

на

вопрос

каким

образом

можно

уменьшить

количество

зависимостей

в

вашей

системе

однако

они

помогают

выделить

эти

зависимости

а

после

того

как

они

все

окажутся

на

виду

остается

только

поработать

над

снижением

их

количества

Диаграммы

пакетов

background image

22

можно

считать

основным

средством

управления

общей

структурой

системы

.

Пакеты

являются

жизненно

необходимым

средством

для

больших

проектов

Их

следует

использовать

в

тех

случаях

когда

диаграмма

классов

охватывающая

всю

систему

в

целом

и

размещенная

на

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

листе

бумаги

формата

А

4, 

становится

нечитаемой

.

1.5.4. 

Атрибуты

Атрибут

 – 

это

элемент

информации

связанный

с

классом

Например

,

у

класса

 Company (

компания

могут

быть

атрибуты

 Name (

Название

),

Address (

Адрес

и

 NumberOfEmployees (

Число

служащих

).

Так

как

атрибуты

содержатся

внутри

класса

они

скрыты

от

других

классов

В

связи

с

этим

может

понадобиться

указать

какие

классы

имеют

право

читать

и

изменять

атрибуты

Это

свойство

называется

видимостью

атрибута

 (attribute visibility).

У

атрибута

можно

определить

четыре

возможных

значения

этого

параметра

Рассмотрим

каждый

из

них

в

контексте

примера

  (

рис

1

.8).

Пусть

у

нас

имеется

класс

 Employee 

с

атрибутом

 Address 

и

класс

 Company:

Public (

общий

открытый

).

Это

значение

видимости

предполагает

,

что

атрибут

будет

виден

всеми

остальными

классами

Любой

класс

может

просмотреть

или

изменить

значение

атрибута

В

таком

случае

класс

 Company 

может

изменить

значение

атрибута

 Address 

класса

Employee. 

В

соответствии

с

нотацией

 UML 

общему

атрибуту

предшествует

знак

 « + ».

Private (

закрытый

секретный

).

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

атрибут

не

виден

никаким

другим

классом

Класс

 Employee 

будет

знать

значение

атрибута

 Address 

и

сможет

изменять

его

но

класс

 Company

не

сможет

его

ни

увидеть

ни

редактировать

Если

это

понадобится

,

он

должен

попросить

класс

 Employee 

просмотреть

или

изменить

значение

этого

атрибута

что

обычно

делается

с

помощью

общих

операций

Закрытый

атрибут

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

знаком

« – »

в

соответствии

с

нотацией

 UML.

Protected (

защищенный

).

Такой

атрибут

доступен

только

самому

классу

и

его

потомкам

Допустим

что

у

нас

имеется

два

различных

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