Книга: Rational Rose 2000 и UML Визуальное моделирование

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Операции для класса предмет (Course) показаны на рис. 7.2.

Оглавление книги


Генерация: 0.163. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз