Создание диаграммы классов

 

Объекты из диаграмм последовательности группируются в классы. Основываясь на нашей диаграмме последовательности, мы можем идентифицировать следующие объекты и классы:

q registration form является объектом класса RegForm;

q manager является объектом класса Manager;

q math 101 является объектом класса Course;

q section 1 является объектом класса CourseOffering;

q bill является интерфейсом к внешней учетной системе, поэтому мы будем использовать имя BillingSystem как имя его класса.

Классы создаются в логическом представлении системы (рис. 17.17).

1. В окне браузера щелкните правой кнопкой по значку пакета Logical View.

2. В появившемся контекстном меню выберите команду New:Class. В результате в дерево окна браузера будет добавлен класс с именем NewClass.

3. Пока значок класса остается выделенным, введите имя RegForm.

4. Повторите предыдущие шаги для добавления других классов: Manager, Course, CourseOffering и BillingSystem.

После создания классов они описываются (документируются). Описания добавляются с помощью Documentation Window (рис. 17.18).

1. В окне браузера щелкните по значку класса CourseOffering.

2. Введите описание класса в Documentation Window.

Процесс построения сценариев и нахождения классов продолжается до тех пор, пока вы не скажете: «Больше находить нечего — нет ни новых классов, ни новых сообщений».

Следующий шаг — построение диаграммы классов. Откроем главную диаграмму (рис. 17.19) классов и добавим в нее классы.

Рис. 17.17.Логическое Рис. 17.18.Окно документации —

представление — Logical View Documentation Window

 

Рис. 17.19.Главная диаграмма классов

 

1. Для открытия диаграммы выполним двойной щелчок по значку Main в окне браузера.

2. В главном меню выберем команду Query:Add Classes.

3. Для добавления всех классов нажмем кнопку АИ» (выбрать все).

4. Для закрытия окна и добавления классов в диаграмму нажмем кнопку ОК.

5. Переупорядочим классы в диаграмме (выделяя конкретный класс и перетаскивая, его на новое место).

ПРИМЕЧАНИЕ

Классы можно добавлять в диаграмму перетаскиванием их из окна браузера (по одному классу в единицу времени).

 

Для создания новых типов моделирующих элементов в UML используется понятие стереотипа. С помощью стереотипа можно «нагрузить» элемент новым смыслом. Используем предопределенный стереотип Interface для класса BillingSystem (рис. 17.20), так как этот класс определяет только интерфейс к внешней учетной системе (billing system).

Рис. 17.20.Класс Billing System

 

1. В главной диаграмме классов выполним двойной щелчок по значку класса BillingSystem. В результате появляется окно спецификации класса (Class Specification).

2. Щелкнем по стрелке раскрывающегося списка Stereotype.

3. Наберем на клавиатуре слово-стереотип Interface.

4. Закроем окно спецификации, нажав кнопку ОК.

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

Ассоциация определяет соединение между классами. Исследуя диаграмму последовательности Add a Course, мы можем определить существование следующих ассоциаций: от RegForm к Manager, от Manager к Course и от Manager к BHHngSystem (рис. 17.21).

Рис. 17.21. Ассоциации между классами

 

1. На панели инструментов щелкните по значку однонаправленной ассоциации (стрелке).

2. Щелкните по классу RegForm и перетащите линию ассоциации на класс Manager.

3. Повторите предыдущие шаги для ввода следующих отношений:

q от Manager к Course;

q от Manager к BillingSystem.

Ассоциации задают пути между объектами-партнерами одинакового уровня.

Агрегация фиксирует неравноправные связи. Она показывает отношение между целым и его частями. Создадим отношение агрегации между классом Course и классом CourseOffering (рис. 11.22),так как предложение Курса CourseOfferings является частью агрегата — класса Course.

1. На панели инструментов щелкните по значку агрегации (линии с ромбиком).

2. Щелкните по классу, представляющему целое — Course.

3. Перетащите линию агрегации на класс, представляющий часть — CourseOffering.

Рис. 17.22.Отношение агрегации

 

Рис. 17.23.Индикаторы мощности

 

Для отображения того, «как много» объектов участвует в отношении, к ассоциациям и агрегациям диаграммы могут добавляться индикаторы мощности (рис. 17.23).

1. Щелкните правой кнопкой по линии агрегации возле класса CourseOffering.

2. Из контекстного меню выберите команду Multipticity:0ne or More.

3. Щелкните правой кнопкой по линии агрегации возле класса Course.

4. Из контекстного меню выберите команду Multiplicity:1.

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

Структура класса представляется набором его свойств. Структура находится путем исследования проблемных требований и соглашений между разработчиками и заказчиками. В нашей модели каждое предложение курса (CourseOffering) является свойством (attribute) класса-агрегата Course.

Конечно, класс CourseOffering тоже имеет свойства (рис. 17.24). Определим одно из них — количество студентов.

Рис. 17.24.Свойства

 

1. В диаграмме классов щелкните правой кнопкой по классу CourseOffering.

2. Из контекстного меню выберите команду Insert New Attribute. Это приведет к добавлению в класс свойства.

3. Пока новое свойство остается выделенным, введите его имя — numberStudents.

Итак, два шага формирования класса сделаны. Перейдем к третьему шагу — заданию поведения класса.

Поведение класса представляется набором его операций. Исходная информация об операциях класса находится в диаграммах последовательности. В операции отображаются сообщения из диаграмм последовательности.

Первое действие этого шага заключается в привязке объектов (из диаграмм последовательности) к конкретным классам. Выполним такую привязку для нашей модели (рис. 17.25).

Рис. 17.25.Привязка объектов к классам

 

1. Для открытия диаграммы последовательности Add a Course выполним двукратный щелчок по ее значку в окне браузера.

2. В окне браузера щелкнем по значку класса CourseOffering.

3. Перетащим класс CourseOffering на объект section 1.

Вот и все. Видим, что имя объекта удлинилось, в нем появились две части, разделенные двоеточием. Слева от двоеточия записывается имя объекта, а справа — имя класса.

После назначения объекта классу выполняется второе действие — наполнение класса операциями. Как правило, в операции класса превращаются сообщения, получаемые его объектом. При этом обычно сообщения переименовываются — производится согласование имени сообщения и имени операции (рис. 17.26). Причины переименования просты и понятны. Во-первых, имя операции должно отражать ее принадлежность к классу (а не к источнику соответствующего сообщения). Во-вторых, имя операции должно указывать на ее обязанность, а не на способ ее реализации. В-третьих, имя должно быть допустимым с точки зрения синтаксиса языка программирования, который будет использоваться для кодирования класса.

Рис. 17.26.Новая операция

 

1. Щелкните правой кнопкой по сообщению «add Joe». В результате станет видимым контекстное меню.

2. Выберите команду new operation. В результате станет видимой спецификация операции Operation Specification.

3. Введите имя новой операции — add.

4. Перейдите на вкладку Detail.

5. Щелкните правой кнопкой мышки по полю Arguments.

6. Выберите в контекстном меню команду Insert. В появившейся рамке наберите имя аргумента — Joe. Щелкните вне рамки.

7. Закройте окно спецификации, нажав кнопку ОК.

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

Возможно и обратное действие — отталкиваясь от имени операции, получить имя сообщения. При этом реализуется такая последовательность: отдельно создается новая операция класса, а затем она отображается на существующее сообщение (рис. 17.27).

1. Щелкните правой кнопкой по классу в браузере.

2. В появившемся контекстном меню выберите команду New: Operation. Появляется рамка с надписью opname.

3. Вместо надписи opname наберите имя новой операции класса — offeringOpen.

4. На диаграмме последовательности щелкните правой кнопкой по сообщению «accepting students?». В результате станет видимым контекстное меню.

5. В меню выберите операцию offeringOpen() —сообщение переименовывается (на него отображается операция класса).

Рис. 17.27.Отображение операции на сообщение

 

Следующий шаг разработки состоит в настройке описаний классов на конкретный язык программирования. Сам язык выбирается по команде Tools:0ptions. В появившемся диалоговом окне переходят на вкладку Notation. Название языка выбирается из раскрывающегося списка Default Language. Для нашего примера используем язык Ada 95.

Итак, в ходе анализа и проектирования в визуальную модель добавляются проектные решения (рис. 17.28). После выбора языка программирования для свойств определяют типы данных, а для операций конкретизируют сигнатуры — имена и типы параметров, типы возвращаемых значений.

1. Выполним двукратный щелчок по значку класса CourseOffering в окне браузера или диаграмме классов. В результате станет видимым окно спецификации класса.

2. Выберите страницу Attributes (свойства).

3. Щелкните по полю Туре. В результате станет видимым раскрывающийся список.

4. Введите требуемый тип данных (Integer).

5. Закройте окно спецификации, нажав кнопку ОК.

Рис. 17.28.Добавление проектных решений

 








Дата добавления: 2015-03-07; просмотров: 898;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.