Помещение класса на диаграмму




Создание диаграммы

Главная диаграмма классов (Main) уже присутствует во вновь созданной пустой модели, но возможно создание дополнительных диаграмм при помощи уже знакомых способов посредством контекстного меню Logical View в окне Browse, при помощи пункта Browse в главном меню или при помощи кнопки

Строка инструментов

При активизации диаграммы строка инструментов приобретает следующий вид (рис. 11.1).

Рис. 11.1. Строка инструментов для диаграммы классов

Так же как и для предыдущих диаграмм не будем останавливаться на уже рассмотренных нами инструментах Selection Tool, Text Box, Note, Anchor Note to Item, которые выполняют стандартные функции.

Class (класс)

Данный инструмент позволяет создать новый класс в диаграмме и модели. Понятие класса в Rational Rose аналогично понятию класса в C++. Класс — это установки структуры и шаблона поведения для некоторого множества реальных объектов, которые в дальнейшем будут определены в программе на основе данного шаблона. Класс — это некоторая абстракция реального мира. Когда эта абстракция принимает конкретное воплощение, она называется объектом. Для детализации модели поведения классов создаются диаграммы состояний и действий, рассмотренные ранее.

Класс в UML нотации изображается как прямоугольник, разделенный на 3 части (рис. 11.2). В верхней части записывается название класса, в середине — атрибуты, в нижней части — операции.

Рис. 11.2. Изображение класса

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

Interface (интерфейс)

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

В диаграмме классов Interface обычно отображается как значок класса со стереотипом «interface ».

Unidirectional Association (однонаправленная связь)

Значок Unidirectional Association позволяет создать однонаправленную связь класса с классом или класса с интерфейсом. Это общий и самый слабый вид связи.

Замечание. Подробно об этой и других видах связей читайте в теме 12.

Association Class (ассоциация класса)

Значок Association Class позволяет связать классы ассоциативной связью. Это свойство сохраняется в классе, и для того чтобы его установить, необходимо создать класс и связать класс реляцией с другим при помощи этого значка.

Package (контейнер)

Значок Package позволяет создать элемент Package, который используется для группировки элементов. Может быть использован для физической или логической группировки. В нашем случае контейнер удобнее всего использовать для физической группировки кода. Но для небольшой системы, которой является тепличное хозяйство, мы не будем использовать контейнеры.

Dependency of instantiates (зависимость реализации)

Значок Dependency of instantiates позволяет создать связь Dependency of instantiates, при этом генератор кода C++ Rational Rose создает код класса, включающий определения зависимого класса путем генерации директивы # include. Установка этого типа связей показывает, что класс использует другой класс как параметр в одном из методов.

Generalization (обобщение)

Значок Generalization позволяет создать связь Generalization, для которой Rational Rose создает код наследования, то есть создается подкласс для соединенного этой связью класса, наследуемого из родительского класса.

Realize (выполнять)

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

Помещение класса на диаграмму

Для создания нового класса и помещения его на диаграмму классов можно воспользоваться соответствующим значком из строки инструментов или меню Menu=>Tools=>Create=>Class. Мы уже создали некоторые классы системы, но не поместили их на диаграмму. Для того чтобы поместить уже созданный класс, например, EnvironmentalController на диаграмму классов, есть несколько путей:

· перетащить нужный класс мышкой из окна Browse;

· воспользоваться Menu=>Query=>Add Classes и в диалоговом окне (рис. 11.3) выбрать необходимые классы для включения в диаграмму.

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

Понятие «стереотип » для класса

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

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

Рис. 11.3. Добавление созданного класса в диаграмму

Некоторые стереотипы уже определены в Rational Rose, но всегда можно добавить новые стереотипы пользователя, которые сохраняются в файле стереотипов. В качестве примера использования стереотипов можно привести следующий. Вы можете использовать для классов, которые предназначены для хранения данных, стереотип «Storage», для классов, которые предназначены для показа данных — стереотип «View», для классов, которые предоставляют пользователю возможность контроля за выполнением программы — «Controller ».

Стереотип может быть показан для класса или скрыт при помощи пункта Options контекстного меню класса.

На рис. 11.4 показан пример различных вариантов визуализации стереотипов. Слева направо: None, Label, Decoration, Icon.

Рис.11.4. Демонстрация различных вариантов визуализации стереотипов

Для демонстрации в предыдущем примере использован встроенный стереотип Actor.

В Rational Rose доступны следующие встроенные стереотипы:

· Actor (исполнитель);

· boundary (граница);

· business actor (бизнес-исполнитель);

· business entity (бизнес^сущность);

· business worker (работник);

· control (управление);

· entity (сущность);

· Interface (интерфейс).

Необходимость в стереотипах особенно ощущается при использовании диаграмм Use Case, разработка которых гарантирует, что система будет представлять собой именно то, что задумал пользователь, но и в диаграмме классов стереотипы могут использоваться для дополнительной детализации описания классов.

Контекстное меню класса

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

Рис.11.5. Контекстное меню класса

Перечислим назначение отдельных пунктов:

· Open Specifications — открытие диалогового окна заполнения спецификаций;

· Sub Diagrams позволяет создавать к текущему классу диаграммы активности и состояний или перейти на поддиаграммы класса;

· New Attribute позволяет добавлять новый атрибут класса;

· New Operation позволяет добавлять новую операцию для класса;

· Select In Browser позволяет выделить класс в окне Browser;

· Relocate позволяет переместить класс в новый контейнер или на новое местоположение;

· Options — вызов подменю настройки значка класса;

· Format - вызов подменю настройки шрифта, цвета, заливки диаграммы.

Меню Options (cвойства)

Меню Options позволяют управлять отображением класса в диаграмме классов и состоит из следующих пунктов:

· Automatic Resize - автоматическая настройка размера значка, для того чтобы вместить весь введенный текст названия, атрибута или операции. Данная функция удобна для начального заполнения названий атрибутов и операций и включена по умолчанию. В дальнейшем, когда данный класс уже связан с другими и занимает свое место на диаграмме классов, ее можно выключить;

· Stereotype Display позволяет показать или скрыть стереотип для данного класса;

· Show Visibility позволяет показать тип доступа для операторов и атрибутов, таких как Public, Protected, Private, Implementation. Причем показаны эти типы доступа будут при помощи графических значков;

o Public (default) -

o Protected -

o Private -

o Implementation -

· Show All Attributes показывает или скрывает атрибуты класса;

· Show All Operations показывает или скрывает все операции класса;

· Show Operation Signature показывает или скрывает так называемую сигнатуру операции, т.е. параметры и возвращаемое значение;

· Show Compartment Stereotypes — эта установка позволяет показывать или скрывать имя стереотипа для операции или атрибута класса;

· Select Compartment Items позволяет активизировать окно выбора пунктов операций или атрибутов для показа, в том случае если нужно скрыть не все атрибуты или операции, а только некоторые. Для этого необходимо активизировать окно Select Compartment Items и выбрать необходимые для показа атрибуты и операции (рис. 11.6);

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

Рис.11.6. Установка необходимых для показа атрибутов и операций

Замечание. Для того чтобы внесенные изменения вступили в силу, необходимо снять галочку с пунктов меню Show All Attributes и Show All Operations, и только после этого все, кроме выбранных пунктов, будут скрыты.

· Suppress Attributes позволяет скрыть все атрибуты, даже если они были выбраны при помощи окна Select Compartment Items. Этот пункт интересен тем, что при его выборе не только скрываются атрибуты, но и закрывается пункт меню Attributes, что не позволяет ввести новые;

· Suppress Operations позволяет скрыть все операции аналогично атрибутам в предыдущем пункте.

Спецификации класса

Rational Rose позволяет устанавливать значительное количество свойств класса, которые, в том числе, влияют на генерацию кода класса, поэтому, чтобы лучше ориентироваться в дальнейших действиях, разберем вкладки окна спецификаций. Возможно, контроллер параметров среды вам уже порядком надоел, поэтому для разбора возможностей спецификаций возьмем класс датчика температуры — TemperatureSensor.

Вкладка General (главная)

При выборе из контекстного меню датчика температуры пункта Open Specification открывается диалоговое окно, показанное на рис. 11.7. Спецификации класса имеют несколько вкладок, и первой активизируется вкладка General (главная).

Это окно позволяет задать главные свойства класса, такие как его имя, тип, определить стереотип класса и доступ к нему, когда класс находится в контейнере. Так же как и во всех других диаграммах, здесь можно задать документацию к классу.

Рис. 11.7. Вкладка General спецификаций датчика температуры

Перечислим поля, которые находятся на этой вкладке:

· Name предназначено для задания имени класса;

· Туре предназначено для задания типа класса. В нашем случае — это «класс», но можно выбрать значение «метакласс», «параметризированный класс» и т.д.;

· Stereotype задает стереотип класса;

· Export Control предназначен для определения доступа к классу, когда он расположен в контейнере. При этом Public определяет, что элемент виден вне контейнера, в котором он определен и его можно импортировать в другие части создаваемой модели; Protected — элемент доступен только для вложенных классов, классов с типом friends и собственно внутри класса; Private обозначает защищенный элемент класса; Implementation — элемент виден только в том контейнере, в котором определен.

Вкладка Detail (детализация)

Вкладка Detail позволяет указывать дополнительные установки класса, такие как ожидаемое количество создаваемых объектов класса, ожидаемый расход оперативной памяти и т.д. (рис. 11.8).

Перечислим поля, которые находятся на этой вкладке:

· Multiplicity (множественность) позволяет задать ожидаемое количество объектов, которые будут созданы на основе данного класса. Обычно данный параметр удобно задавать для связанных классов;

Рис.11.8. Вкладка Detail спецификаций датчика температуры

· Space показывает количество оперативной памяти, необходимой для создания объекта данного класса. Поле может быть задано напрямую или формулой, описывающей требования по памяти и значение должно учитывать накладные расходы на создание объекта плюс размер всех объектов, входящих в данный;

· Persistence определяет время жизни объекта класса. Если установлен флажок Persistent, то объект должен быть доступен в течение всей работы программы или для доступа других потоков или процессов;

Замечание. Установка Persistence для класса и для объекта должна быть одинаковой. Данная установка не действует для утилит классов, параметризированных утилит классов и реализаций утилит классов.

· Concurrency обозначает поведение элемента в многопотоковой среде. Установка такого поля в операции не должна противоречить установке в самом классе. Данная установка может принимать следующие варианты:

1. Sequential (по умолчанию) — работа класса обеспечивается только для одного потока. Только один поток может быть запущен при помощи методов класса в один момент времени;

2. Guarded — класс обеспечивает работу с несколькими потоками. Такой класс обеспечивает взаимодействие между потоками клиентов для достижения непротиворечивой работы потоков, является арбитром потоков, предоставляя работу конкретному потоку в конкретный момент времени;

3. Active — класс является классом отдельного потока;

4. Synchronous — класс обеспечивает работу нескольких потоков, синхронизируя их.

· Abstract adornment обозначает, что класс является абстрактным, т.е. базовым классом, который должен быть наследован подклассами, и без такого наследования не имеет смысла. Также в классе могут быть определены абстрактные операции, которые представляют собой шаблон для создания операций в классах, наследуемых из данного, и сами не выполняют никаких действий.

Замечание. На основе абстрактного класса нельзя создавать объекты, но можно создавать подклассы. На диаграмме классов название абстрактного класса представляется курсивом.

· Formal Arguments заполняется только для параметризированных классов и утилит классов. Для обычных классов данное поле недоступно.

Вкладка Components (компоненты)

Вкладка Components отражает компоненты, с которыми ассоциирован класс (рис. 11.9).

Рис. 11.9. Вкладка Components спецификаций датчика температуры

Замечание. Вкладка Components похожа на вкладку Realize в спецификациях компонента. Здесь возможна установка связи текущего класса и компонента, а в Realize установка связи текущего компонента и класса.

На вкладке помечены красным маркером компоненты, которые включены в текущую модель, и могут быть показаны остальные компоненты модели. Если у вас не показан компонент MFC 6.0, то или необходимо включить флажок Show all components, или еще не была импортирована библиотека MFC.

Совет. Для быстрого импорта библиотеки MFC необходимо проделать Menu=>Tools=> Visual C++=>Quick Import MFC 6.0.

Из этой вкладки по двойному нажатию мыши на компоненте можно получить доступ к его спецификациям.

Вкладки Attributes (атрибуты)

Данная вкладка позволяет добавлять, удалять, редактировать атрибуты класса (рис. 11.10).

Рис. 11.10. Вкладка Attributes спецификаций датчика температуры

На данной вкладке представлен список атрибутов класса, который можно редактировать при помощи контекстного меню. Флажок Show inherited позволяет скрыть или показать доступные атрибуты родительских классов.

Для того чтобы добавить атрибут, необходимо из контекстного меню выбрать пункт Insert. По двойному нажатию мыши на атрибуте или из контекстного меню Rational Rose предоставляет доступ к диалоговому окну спецификаций атрибутов (рис. 11.11).

Здесь пользователь может изменить название атрибута (Name), его тип (Туре) и стереотип (Stereotype), задать начальное значение (Initial value) и тип доступа к атрибуту (Export Control).

Рис. 11.11. Вкладка General спецификаций атрибутов класса

Дополнительная вкладка Detail спецификаций атрибутов класса (рис. 11.12) позволяет задать тип хранения атрибута в классе:

· By Value — по значению;

· By Reference — по ссылке;

· Unspecified — не указано.

Также пользователь может указать, что атрибут является Static (статическим) или Derived (производным).

Вкладка Operations (операции)

Вкладка Operations позволяет добавлять, удалять, редактировать операции класса (рис. 11.13).

На этой вкладке представлен список операций класса, который можно редактировать при помощи контекстного меню. Для того чтобы добавить операцию, необходимо из контекстного меню выбрать пункт Insert. По двойному нажатию мыши на операции или из контекстного меню Rational Rose предоставляет доступ к диалоговому окну спецификаций операции.

 

Рис. 11.12. Вкладка Detail спецификаций атрибутов класса

Рис. 11.13. Вкладка Operations спецификаций класса

Вкладка General спецификаций операции аналогична вкладке General атрибутов, поэтому не будем на ней останавливаться.

Вкладка Detail спецификаций операций позволяет устанавливать дополнительные свойства операции (рис. 11.14).

Рис. 11.14. Вкладка Detail спецификаций операций

Перечислим поля, представленные на этой вкладке:

· Arguments (аргументы) позволяет устанавливать список аргументов для операции с их типами и значениями по умолчанию;

· Protocol (протокол) позволяет задавать список установок, который предоставляется клиенту для вызова;

· Qualification (квалификация) позволяет идентифицировать зависящие от языка возможности, которые позволяют квалифицировать метод. Данная квалификация необходима, если вы используете Common Lisp Object System (CLOS);

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

· Size (размер) позволяет задать размер памяти, требуемой для выполнения операции;

· Time (время) позволяет задать время выполнения операции;

· Concurrency (конкуренция) отражает для многопотоковой программы тип выполнения операции:

1. Sequential (по умолчанию) — только один поток должен выполняться в одно и тоже время;

2. Guarded — возможно выполнение нескольких потоков, управляемых некоторым классом;

3. Synchronous — операции могут идти параллельно.

Пользователь может устанавливать конкуренцию выполнения для класса в спецификациях класса. Это поле недоступно для редактирования утилит классов, параметризированных классов и реализаций утилит классов.

Вкладки Preconditions, Postconditions, Semantics позволяют задавать дополнительные описания процессов подготовки и завершения операции, а также описание алгоритма операции. Кроме текстового описания здесь же можно задать имя Interaction диаграммы, которая описывает указанные действия.

Вкладка Relations (связи)

Вкладка Relations позволяет добавлять, удалять, редактировать связи класса (рис. 11.15).

Рис. 11.15. Вкладка Relations спецификаций класса

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

Замечание. Спецификации связей будут рассмотрены позднее для связи Unidirectional association.

Замечание. После удаления связей с диаграммы, полностью удалить их можно только посредством вкладки Relations.

Вкладка VC++

Вкладка VC++, которая появилась после ассоциации класса с языком Visual C++, предназначена для изменения свойств, связанных с данным классом. Поля данной вкладки не предназначены для редактирования, поэтому не будем их рассматривать.

Вкладка СОМ

Вкладка СОМ позволяет устанавливать свойства для классов, которые предназначены для создания СОМ объектов в модели. В случае если такие объекты импортируются в модель, в них также появляется такая вкладка (рис. 11.16).

Рис. 11.16. Вкладка СОМ спецификаций класса

· Generate — свойство, определяющее необходимость генерации исходного кода класса;

· kind — свойство, которое идентифицирует тип объекта, который может быть следующим: coclass, enum, record, module, interface, dispin-terface, alias, union, max;

· uuid — свойство, которое задает строку идентификатора для класса или библиотеки, которая идентифицирует СОМ объект в системе, например, " 11611EBF-070D-11D1-8001-OOAOC922E84A ".

· version — версия СОМ объекта;

· helpstring, helpcontext предназначены для задания строки и идентификатора файла помощи для объекта;

· attributes — задает Такие атрибуты для объекта как control, hidden, restricted, licensed, appobject, nonextensible или oleautomation;

· dllname задает имя файла DLL, в котором находится объект;

· alias задает тип, для которого создается псевдоним.

Примерные вопросы для самопроверки и защиты

1. Назначение диаграммы классов.

2. Способы создания диаграммы.

3. Инструменты, предоставляемыми для работы с диаграммой.

4. Возможности контекстного меню элемента диаграммы — класса.

5. Настройки спецификаций класса.

Литература

1. Трофимов С.А. Case -технологии: практическая работа в Rational Rose — М.: ЗАО «Издательство БИНОМ», 2001 г. — 272 с.: ил.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: