□ между классами предмет и преподаватель;
□ между классами предмет и учебный курс.
Отношения, основанные на сигнатурах, изначально моделировались как ассоциации, но в ходе проектирования системы они могут быть пересмотрены и представлены как отношения зависимости (dependency relationships). (Об уточнении и изменении отношений говорится в главе 12.) Взаимосвязи между пакетами также могут быть пересмотрены, по мере того как в модель включаются отношения, основанные на сигнатурах операций. К примеру, мы добавили в систему отношение между классами предмет и преподаватель. Значит, между пакетами Объекты университета и Сведения о людях существует отношение зависимости.
Создание атрибутовБольшинство атрибутов класса выявляется при анализе предметной области, системных требований и описаний потоков событий, а также при составлении описания класса. Кроме того, хорошим источником для определения атрибутов является сама предметная область. Например, в требованиях к системе указано, что информация о названии предмета, его описании и количестве учебных часов
содержится в каталоге учебных курсов на семестр. Из этого следует, что название, описание и количество учебных часов — это атрибуты класса предмет. Последовательность создания атрибутов в программе Rational Rose:
1. Щелкните правой кнопкой мыши по классу в окне браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Attribute (Создать => Атрибут).
3. Введите имя нового атрибута.
Атрибуты для класса предмет (Course) показаны на рис. 7.4.
Рис. 7.4. Атрибуты в списке браузера
Документирование атрибутовОпределения атрибутов в документации должны быть краткими и четкими и содержать информацию о назначении атрибута, а не о его структуре. Приведу неудачный пример описания атрибута название класса предмет: «Символьная строка длиной до 15 знаков». Правильным будет следующий вариант: «Название учебного предмета, которое используется в университетских изданиях».
Для описания атрибутов в программе Rational Rose:
1. В окне браузера щелкните по значку «+» слева от имени класса, чтобы раскрыть список его свойств.
2. Выберите атрибут, щелкнув по нему мышью.
3. Установите курсор в окне описания и введите описание для атрибута класса.
Описание атрибута название (name) класса предмет (Course) показано на рис. 7.5.
Рис. 7.5. Описание атрибута название
Отображение атрибутов и операцийАтрибуты и операции можно показать на диаграмме классов. Чаще всего она создается именно для отражения структуры и поведения классов пакета. Отношения на эту диаграмму обычно не выносятся.
Последовательность создания диаграммы классов для отображения атрибутов и операций пакета:
1. Щелкните правой кнопкой мыши по пакету в окне браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Class Diagram (Создать => Диаграмма классов). В список браузера будет добавлена диаграмма New Diagram.
3. Введите имя новой диаграммы.
Для добавления классов на диаграмму с помощью меню Query (Запрос):
1. Откройте диаграмму классов, дважды щелкнув по ней мышью в окне браузера.
2. Выберите команду меню Query => Add Classes (Запрос => Добавить классы).
3. Укажите нужный пакет.
4. Выберите классы с помощью мыши и щелкните по кнопке >>>>, чтобы добавить классы на диаграмму. Для размещения на диаграмме всех классов щелкните по кнопке АН >> (Все).
Последовательность фильтрации отношений в программе Rational Rose:
1. Откройте диаграмму, дважды щелкнув по ней мышью в окне браузера.
2. Выберите команду меню Query => Filter Relationships (Запрос => Фильтрация отношений).
3. Отметьте позицию None (Нет) переключателя Туре (Тип), чтобы скрыть все отношения на диаграмме.
4. Щелкните по кнопке ОК, чтобы закрыть диалоговое окно Relations (Отношения).
Чтобы отобразить определенные атрибуты или операции в программе Rational Rose:
1. Щелкните правой кнопкой мыши по классу в окне диаграммы.
2. В появившемся контекстно-зависимом меню выберите команду Options => Select Compartment Items (Настройки => Выбрать элементы секции).
3. С помощью мыши укажите атрибуты и операции, которые требуется отобразить на диаграмме.
4. Щелкните по кнопке >>>>.
5. Щелкните по кнопке ОК, чтобы закрыть диалоговое окно Edit Compartment (Настройка секции).
Для отображения всех атрибутов и операций в программе Rational Rose выполните следующие действия:
1. Щелкните правой кнопкой мыши по классу в окне диаграммы.
2. В появившемся контекстно-зависимом меню выберите команду Options => Show All Attributes (Настройки => Показать все атрибуты).
3. Снова вызовите контекстно-зависимое меню для класса и выберите команду Options => Show All Operations (Настройки => Показать все операции).
Атрибуты и операции класса будут всегда отображаться на диаграммах, если установить флажки Show All Attributes (Показать все атрибуты) и Show All Operations (Показать все операции) в диалоговом окне настройки параметров программы, вызываемом командой меню Tools => Options (Сервис => Параметры).
Чтобы отобразить стереотипы классов в программе Rational Rose:
1. Щелкните правой кнопкой мыши по классу в окне диаграммы.
2. В появившемся контекстно-зависимом меню выберите команду Options => Stereotype Display (Настройки => Отображение стереотипов), а затем в меню третьего уровня выберите один из вариантов отображения стереотипов: None
(Нет) — не выводить, Label (Название) — отображать названия в треугольных скобках, Icon (Значок) — отображать класс, используя значок стереотипа.
Диаграмма классов с названием «Атрибуты и операции» (Attributes and Operations) для пакета Объекты университета (UniversityArtifacts) показана на рис. 7.6. Для такого типа диаграмм я предпочитаю выводить стереотипы классов в виде названий.
Рис. 7.6. Отображение атрибутов и операций на диаграмме классов
Ассоциативные классыОтношение может также иметь структуру и поведение. Это происходит в том случае, когда информация обращена к связи между объектами, а не к самому объекту.
Рассмотрим такой пример. Студент может посещать до четырех учебных курсов, а учебный курс может читаться нескольким студентам — от трех до десяти. Каждый студент получает оценку (grade) за учебный курс. Где должна храниться оценка? Она не принадлежит студенту, так как он наверняка получит различные оценки по разным предметам. Оценка не принадлежит и курсу, потому что студенты получат разные оценки за данный курс. Сведения об оценке принадлежат связи между студентом и учебным курсом. Они моделируются с помощью ассоциативного класса (association class), который ведет себя как и любой другой класс и также может иметь отношения. В нашем примере студент получает отчет об оценках (report card), куда включены связанные объекты оценка.
Для создания ассоциативных классов в программе Rational Rose:
1. Щелкните по кнопке Class (Класс) на панели инструментов.
2. Щелкните по диаграмме, чтобы поместить на нее класс.
3. Введите имя класса.
4. Добавьте необходимые атрибуты и операции для класса.
5. Щелкните по кнопке Association Class (Ассоциативный класс) на панели инструментов.
6. Щелкните по ассоциативному классу и проведите черту к линии связи между классами, соединяемыми ассоциативным классом.
7. Если требуется, добавьте дополнительные отношения к ассоциативному классу.
Ассоциативный класс оценка показан на рис. 7.7.
Рис. 7.7. Ассоциативный класс оценка
РезюмеКласс выполняет ряд обязанностей, от которых зависит поведение его объектов. Обязанности исполняются с помощью конкретных операций. Структура объекта описывается атрибутами класса.
Каждый атрибут — это поле данных, содержащееся в объекте класса. Объект, полученный на основе класса, наделен значениями всех атрибутов класса. Атрибуты и операции, определенные для класса, — это основные значимые и функциональные элементы в разрабатываемом приложении.
Сообщения на диаграммах взаимодействий обычно отображаются на соответствующие операции в классах-получателях. Однако в некоторых случаях сообщения не становятся операциями, например: сообщения, поступающие
к актеру-человеку и от него, и сообщения для классов, представляющих пользовательский интерфейс.
Многие атрибуты класса выявляются при анализе предметной области, системных требований и описании потоков событий, а также при составлении описания класса. Кроме того, хорошим источником для определения атрибутов является сама предметная область.