Если необходимая операция для данного класса уже существует, ее не нужно создавать заново — просто выберите в списке операций класса.
Диаграмма последовательности действий с операциями показана на рис. 7.1.Операции создаются независимо от диаграмм взаимодействий, так как не все сценарии изображаются в виде диаграмм. Это справедливо для операций, являющихся вспомогательными для других операций. Например, класс предмет, перед тем как зарегистрировать преподавателя, должен проверить, имеет ли тот право читать указанный курс. Для этой цели как нельзя лучше подойдет вспомогательная операция проверить преподавателя (validateProfessor).
Чтобы создать операции в программе Rational Rose:
1. Щелкните правой кнопкой мыши по классу в окне браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Operation (Создать => Операция).
3. Введите имя новой операции.
Операции для класса предмет (Course) показаны на рис. 7.2.
Каждая операция должна быть описана в документации, чтобы человек, изучающий модель, мог легко понять ее назначение. Описание должно отражать функциональность операции, а также содержать комментарии о входных параметрах и возвращаемом результате, если они имеются. Входные и возвращаемые параметры составляют
Для описания операций в программе Rational Rose:
1. Щелкните в окне браузера по значку «+» слева от имени класса, чтобы раскрыть список его свойств.
2. Выберите нужную операцию, щелкнув по ней мышью.
3. Установите курсор в окне описания и введите описание операции.
Описание операции выбрать преподавателя (SetProfessor) класса предмет (Course) показано на рис. 7.3.
Сигнатура операции может обозначать отношение. Если класс, передаваемый как аргумент или возвращаемый операцией, является фундаментальным (fundamental) классом, как, например, строка (String), отношения обычно не выносятся на диаграмму. Для нефундаментальных классов отношения отражаются на одной или нескольких диаграммах. Например, входными параметрами для операции зарегистрировать преподавателя (setProfessor) в классе предмет (Course) являются классы преподаватель (Professor) и учебный курс (CourseOffering). Это значит, что существуют отношения:
между классами предмет и преподаватель;
между классами предмет и учебный курс.
Отношения, основанные на сигнатурах, изначально моделировались как ассоциации, но в ходе проектирования системы они могут быть пересмотрены и представлены как отношения зависимости (dependency relationships). (Об уточнении и изменении отношений говорится в главе 12.) Взаимосвязи между пакетами также могут быть пересмотрены, по мере того как в модель включаются отношения, основанные на сигнатурах операций. К примеру, мы добавили в систему отношение между классами предмет и преподаватель. Значит, между пакетами Объекты университета и Сведения о людях существует отношение зависимости.
Большинство атрибутов класса выявляется при анализе предметной области, системных требований и описаний потоков событий, а также при составлении описания класса. Кроме того, хорошим источником для определения атрибутов является сама предметная область. Например, в требованиях к системе указано, что информация о названии предмета, его описании и количестве учебных часов
содержится в каталоге учебных курсов на семестр. Из этого следует, что название, описание и количество учебных часов — это атрибуты класса предмет. Последовательность создания атрибутов в программе Rational Rose:
1. Щелкните правой кнопкой мыши по классу в окне браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Attribute (Создать => Атрибут).
3. Введите имя нового атрибута.
Атрибуты для класса предмет (Course) показаны на рис. 7.4.
Определения атрибутов в документации должны быть краткими и четкими и содержать информацию о назначении атрибута, а не о его структуре. Приведу неудачный пример описания атрибута название класса предмет: «Символьная строка длиной до 15 знаков». Правильным будет следующий вариант: «Название учебного предмета, которое используется в университетских изданиях».
Для описания атрибутов в программе Rational Rose:
1. В окне браузера щелкните по значку «+» слева от имени класса, чтобы раскрыть список его свойств.
2. Выберите атрибут, щелкнув по нему мышью.