Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Классы и пакеты.doc
Скачиваний:
3
Добавлен:
07.09.2019
Размер:
178.18 Кб
Скачать

Управляющие классы

Управляющие классы (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) классы можно вкладывать другие классы, организуя столько уровней вложения, сколько необходимо. Для создания вложенного класса:

  1. Откройте окно спецификации родительского класса.

  2. Перейдите на вкладку Nested (Вложенные).

  3. Щелкните правой кнопкой мыши на белом поле этой вкладки.

  4. В открывшемся меню выберите пункт Insert (Вставить).

  5. Введите имя вложенного класса.

Если нужно показать вложенный класс на диаграмме Классов:

  1. Откройте диаграмму Классов.

  2. Выберите в меню модели пункт Query > Add Classes (Запрос > Добавить классы).

  3. Перетащите вложенный класс из списка Classes (Классы) в список Selected Classes (Выбранные классы). Вложенный класс представлен в формате: Родительский класс :: Вложенный класс.

  4. Щелкните мышью на ОК. Вложенный класс появится на диаграмме с именем родительского класса, заключенным в скобки.