Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
компьютерная техника (конспектировать ).docx
Скачиваний:
69
Добавлен:
05.11.2018
Размер:
1.56 Mб
Скачать

Определительные классы

Модель состояния Определителя используется для создания определительного класса. Порожденный таким образом класс соответствует только модели состояний: объект, с которым связана данная модель состояний Определителя, также используется для создания активного или пассивного класса (в зависимости от того, имеет он или нет отдельный конечный автомат для каждого экземпляра объекта) и, следовательно, всех необходимых компонент экземпляра и аксессоров.

Диаграмма класса для класса (рис.9.5.5) обозначается:

  • именем данного класса;

  • тейкерам события;

  • инициализатором;

  • конструктором.

Заметьте, что определительный класс не имеет компонент экземпляра (и, следовательно, аксессоров): данные, описывающие каждый экземпляр лежащего в основе объекта, инкапсулированы в активном (или пассивном) классе, порожденном из этого объекта. В результате определительный класс может вызывать аксессоров активного или пассивного класса, как показано на рис.9.5.6.

Рис.9.5.5. Схема диаграммы класса для класса Определителя.

Имя класса. Имя определительного класса такое же, как у модели состояний, из которой он сгенерирован: Определитель <объекта>.

Тейкеры события. Определите тейкер для каждого события, которое может получать конечный автомат Определителя. Поскольку событие, полученное определителем, не направлено к конкретному экземпляру лежащего в основе объекта, никакие дескрипторы не обеспечиваются как ввод для тейкеров события. Поэтому приводите тейкеры события - операции класса - так, как показано на рис.9.5.5.

Инициализатор. Определите общедоступную операцию класса Загрузить КМС таким же образом, как и для активного класса.

Конструктор. Обеспечьте конструктор, названный Установить. Эта операция будет вызываться основным модулем во время инициализации для создания одного экземпляра определительного класса. Обратите внимание, что эта операция не требует никаких входных параметров.

9.6 Наследование

Наследование используется в этой архитектуре для четырех целей: для установления структуры данных в соответствии с потребностями каждого класса; для реализации подтипно-супертипных конструкций ООА, для объединения классов сервисных доменов и, как рассматривалось ранее, для того, чтобы все классы, основанные на моделях состояний, унаследовали свои данные текущего состояния из Активного Экземпляра.

Рис.9.5.6. Возможные зависимости между <объектом> определительного класса и соответствующим <объектом> активного или пассивного класса.

Установление структуры данных

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