- •Классы и пакеты Логическое представление модели Rose
- •Диаграммы Классов
- •Диаграмма Классов
- •Открытие существующей диаграммы Классов
- •Удаление диаграмм Классов
- •Организация элементов на диаграмме классов
- •Работа с классами
- •Удаление классов
- •Добавление параметризованного класса
- •Задание аргументов параметризованного класса
- •Добавление утилиты класса
- •Именование классов
- •Пограничные классы
- •Классы-сущности
- •Управляющие классы
- •Задание видимости класса
- •Создание абстрактного класса
- •Просмотр диаграмм Взаимодействия, содержащих классы
Управляющие классы
Управляющие классы (control classes) отвечают за координацию действий других классов. Обычно у каждого варианта использования имеется один управляющий класс, контролирующий последовательность событий этого варианта использования. Как показано на рис. 5.9, на диаграмме Взаимодействия управляющий класс отвечает за координацию.
Рис. 5.9. – Управляющий класс на диаграмме Последовательности
Обратите внимание, что сам управляющий класс не несет в себе никакой функциональности -остальные классы посылают ему мало сообщений. Но сам он посылает множество сообщений. Управляющий класс делегирует ответственность другим классам. По этой причине управляющий класс часто называют классом-менеджером. На языке UML его рисуют следующим образом:
Задание видимости класса
Параметр Visibility (Видимость) показывает, будет ли класс виден вне своего пакета. Вы можете указать для класса одно из трех значений:
Public (Открытый). Этот класс виден всем остальным классам системы.
Protected, Private (Защищенный, закрытый). Класс может быть виден во вложенных в него классах, "друзьям" (friends) этого класса или из самого класса.
Package or Implementation (Пакет или реализация) Класс может быть виден только из классов того же пакета.
Задание множественности класса
Поле Cardinality (Множественность) позволяет указать, сколько у данного класса должно быть экземпляров. Например, в системе обработки информации о сотрудниках можно ожидать наличия множества экземпляров у класса Employee: Джон Доу, Билл Смит и другие. Следовательно, множественность этого класса нужно определить как п.
Множественность управляющего класса обычно равна 1.
Во время работы приложения вам скорее всего понадобится только один экземпляр менеджера безопасности.
В Rose доступны следующие значения множественности (они находятся в раскрывающемся списке).
Множественность |
Значение |
п (по умолчанию) |
много |
0..0 |
нуль |
0..1 |
нуль или один |
0..п |
нуль или больше |
1..1 |
ровно один |
1..П |
один или больше |
Создание абстрактного класса
Абстрактным называется класс, который не наполняется конкретным содержанием. Иными словами, если класс А абстрактный, в памяти никогда не будет объектов типа А.
Обычно абстрактные классы применяют при работе с наследованием. В них содержатся данные и поведение, общие для нескольких других классов. Например, у нас может быть класс Животное с атрибутами Рост, Цвет и Разновидность. От этого класса наследуют три других класса: Кошка, Собака и Птица. Каждый из них наследует свойства Рост, Цвет и Разновидность от класса Животное и имеет свои собственные уникальные атрибуты и операции.
Объекты класса Животное не создаются во время работы приложения – все объекты являются только кошками, собаками и птицами. Класс Животное является абстрактным, он описывает, что общего есть у кошек, собак и птиц.
На языке UML название абстрактного класса на диаграмме пишут курсивом:
Использование вложенных классов
В Rose классы можно вкладывать друг в друга. Во вложенные (nested) классы можно вкладывать другие классы, организуя столько уровней вложения, сколько необходимо. Для создания вложенного класса:
Откройте окно спецификации родительского класса.
Перейдите на вкладку Nested (Вложенные).
Щелкните правой кнопкой мыши на белом поле этой вкладки.
В открывшемся меню выберите пункт Insert (Вставить).
Введите имя вложенного класса.
Если нужно показать вложенный класс на диаграмме Классов:
Откройте диаграмму Классов.
Выберите в меню модели пункт Query > Add Classes (Запрос > Добавить классы).
Перетащите вложенный класс из списка Classes (Классы) в список Selected Classes (Выбранные классы). Вложенный класс представлен в формате: Родительский класс :: Вложенный класс.
Щелкните мышью на ОК. Вложенный класс появится на диаграмме с именем родительского класса, заключенным в скобки.