Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.раб.8 ПОСТРОЕНИЕ И ОБСУЖДЕНИЕ UML-ДИАГРАММ.doc
Скачиваний:
5
Добавлен:
04.05.2019
Размер:
23.83 Mб
Скачать

Контрольные вопросы:

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

  2. Какими способами можно создать диаграмму?

  3. Какие инструменты доступны для диаграммы?

  4. Какие команды предоставляет контекстное меню класса?

  5. Как настроить свойства атрибутов класса?

  6. Как настроить свойства методов класса?

Часть 5. Представление поведения и структуры классов.

1. Поведение и структура класса.

Класс реализует ряд обязанностей, от которых зависит поведение его объектов. Обязанности исполняются с помощью определенных для класса операций Необходимо, чтобы операция выполняла только одну задачу и выполняла ее хорошо. Например, класс учебный курс (CourseOffering) должен добавлять и исключать студента. Для этой цели используются две операции: одна добавляет студента, другая - исключает. За всеми экземплярами класса закреплены соответствующие операции.

Структура (structure) объекта описывается атрибутами класса. Каждый атрибут - это поле данных, содержащееся в объекте класса. Объект, созданный на основе класса, наделен значениями всех атрибутов класса. Например, класс предмет (course) имеет следующие атрибуты: название (name), описание (definition) и количество учебных часов (credit hours). Следовательно, каждый объект предмет будет содержать значения перечисленных атрибутов. Они могут повторяться, так как в университете существуют учебные предметы с одинаковым количеством академических часов.

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

Если какой-либо объект класса не наделен атрибутами или операциями, проверьте определение класса. Это может означать отсутствие целостности класса и необходимость его разделения. Предположим, что класс учебный курс (CourseOffering) имеет следующие атрибуты: номер курса (offerNumber), место занятий (location), время занятий (timeOfDay), факультет (department), количество курсов на факультете (numberOfferinglnDepartment). Он может быть осведомлен о своем факультете, но информация о количестве других курсов на факультете ему не нужна.

2. Создание операций

Сообщения на диаграммах взаимодействий обычно отображаются на соответствующие операции в классах-получателях. Однако в особых случаях сообщения не становятся операциями. Если класс-получатель является граничным классом, представляющим графический интерфейс пользователя (GUI), сообщения отражают требования к интерфейсу. Такие сообщения реализуются обычно в виде элементов управления (кнопок и т.п.) и не отражаются на операции, так как требуемое поведение уже заложено в стандартных элементах управления. Например, актер преподаватель должен ввести пароль, чтобы запустить сценарий добавление учебного курса (Add a Course Offering). Это представлено в виде сообщения, направляемого граничному классу параметры курса преподавателя (ProfessorCourseOptions). Оно никогда не станет операцией в интерфейсном классе, а, скорее, будет реализовано в виде поля ввода в окне программы. Сообщения, поступающие актерам и от актеров, также требуют отдельного рассмотрения. Если актер является человеком, сообщение отражает действия человека, следовательно, должно быть реализовано в виде фрагмента руководства пользователя, а не в виде операции. В сценарии добавление учебного курса актер преподаватель имеет определенный пароль для доступа к системе - это обязательное требование, которое должно быть отражено в руководстве. Когда актер является внешней системой, создается отдельный класс, реализующий протокол взаимодействия с внешней системой. В этом случае сообщения отображаются на операции данного класса.

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

Вероятно, потребуется выяснить, сколько студентов прикреплено к объекту учебный курс в данный момент. Это значение вычисляется при подсчете связей между объектами учебный курс и студент. Если операция называется посчитать число студентов (calculateNumberOfStudent), следовательно, нужно использовать метод подсчета. Однако через год реализация может измениться, и информация о количестве студентов будет храниться, например, в файле. Поэтому лучше назвать операцию - получить число студентов (getNumberOfStudent). Это название не указывает на способ реализации операции.

Для отображения сообщений на операции в программе Rational Rose:

  1. Присвойте объекты соответствующим классам, если вы не сделали этого ранее.

  2. Щелкните правой кнопкой мыши по стрелке, отображающей сообщение.

  3. В появившемся контекстно-зависимом меню выберите команду New Operation (Новая операция) - увидите диалоговое окно Operation Specification (Параметры операции).

  4. Введите в нем имя операции.

  5. Щелкните по кнопке ОК, чтобы закрыть диалоговое окно.

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

Диаграмма последовательности действий с операциями показана на рис. 5.1.

Рис.5.1

Операции создаются независимо от диаграмм взаимодействий, так как не все сценарии изображаются в виде диаграмм. Это справедливо для операций, являющихся вспомогательными для других операций. Например, класс предмет, перед тем как зарегистрировать преподавателя, должен проверить, имеет ли тот право читать указанный курс. Для этой цели как нельзя лучше подойдет вспомогательная операция проверить преподавателя (validateProfessor).

Чтобы создать операции в программе Rational Rose:

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

  2. В появившемся контекстно-зависимом меню выберите команду New =>Operation (Создать => Операция).

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

Откройте Browser и просмотрите операции для класса Предмет (Course).