Смекни!
smekni.com

Основные этапы объектно-ориентированного проектирования (стр. 3 из 5)

4.3 Архитектурный класс Imitator

В данном классе определены операции для заполнения списка имитируемых внешних событий, а также создания описателя события при нажатии на клавишу клавиатуры. Для упрощения заполнения списка имитируемых событий (атрибут list_event), клавиши событиям назначаются автоматически, начиная с символа, который определяется атрибутом ch_key. Пользователь может запросить список назначений, нажав клавишу, символ которой определяется атрибутом help_key. Диаграмма класса приведена на рисунке7.

Рисунок7 - Диаграмма класса Imitator

При инициализации объектов выполняется заполнение списка имитируемых событий с помощью операции Add_event(…) класса Imitator.

При нажатии клавиш на клавиатуре активизируется операция главной программы, которая вызывает операцию Create_event(…)класса Imitator. Если символ клавиши соответствует некоторому внешнему событию, то создается описатель события и помещается в список описателей главной программы.

4.4 Архитектурный класс AE

Диаграмма класса приведена на рисунке8. В состав атрибутов данного класса включаются общие атрибуты для всех активных классов приложения. Атрибут id предназначен для хранения строки с именем объекта, которое может быть выведено на экран. Атрибут extern_event является списком, который создается при инициализации объекта (экземпляра) класса и содержит имена внешних событий связанных с данным классом. Используется при инициализации объектов класса для занесения внешних событий, связанных с объектом, в список имитатора.

Рисунок8 - Диаграмма класса AE

Все операции данного класса объявлены как виртуальные. В классах наследниках эти операции могут перекрываться. Обязательно в классах наследниках должна быть определена операция диспетчера вызовов (do_it) других операций класса. Виртуальная операция Out_param(…) предназначена для задания операции вывода текстовых сообщений о значениях атрибутов объекта.

5.Разработка прикладного домена

Рассмотрение данного вопроса целесообразно вести на примере разработки домена. В качестве предметной среды выбрана область цифровых логических схем. На рисунке9 приведен фрагмент цифровой логической схемы. Необходимо для заданного фрагмента разработать статическую модель прикладной области, определить состав событий и операций обработки событий, для языка C# разработать исходные тексты операций классов и сгенерировать проект для MSVisualStudio.Net.

Рисунок9 - Фрагмент цифровой логической схемы

5.1 Статическая модель прикладного домена

Разработка статической (информационной) модели прикладной области базируется на результатах объектно-ориентированного анализа (ООА). ООА может быть проведен различными способами, например, с помощью классической категоризации [7]. Должны быть выполнены следующие работы: выделены и описаны классы и их атрибуты; определены и описаны связи между классами; построена диаграмма статической модели. Описание выделенных классов оформляется в виде таблицы4.


Таблица 4 - Описание классов

Имя класса Представители класса Описание
And Элементы D1, D3 Логический элемент, выполняющий логическую операцию «И» (конъюнкцию). Значения входных сигналов изменяются асинхронно. Имеет два устойчивых состояния: высокий уровень выходного напряжения – 1 и низкий - 0
Not Элементы D2, D4 Логический элемент, выполняющий логическую операцию «НЕ» (инверсия, отрицание). Значения входных сигналов изменяются асинхронно. Имеет два устойчивых состояния: высокий уровень выходного напряжения – 1 и низкий – 0

Классы And и Not являются активными классами.

Для каждого класса выделяются и описываются его атрибуты (таблица 5).

Таблица 5 - Описание атрибутов класса And

Имя атрибута Содержательное описание Доп. значения
vx1 Значение сигнала на первом входе [0; 1]
vx2 Значение сигнала на втором входе [0; 1]
vyx Значение сигнала на выходе [0; 1]
tz Время задержки логическогоэлемента 1 – 20 нс

Таблица 6 - Описание атрибутов класса Not

Имя атрибута Содержательное описание Доп. значения
vx Значение сигнала на входе [0; 1]
vyx Значение сигнала на выходе [0; 1]
tz Время задержки логическогоэлемента 1 – 20 нс

В соответствии с заданной схемой экземпляры класса And имеют физическую связь с экземплярами класса Not, причем в каждой связи участвуют ровно по одному экземпляру каждого класса.

Таким образом, на основании приведенной информации можно составить предварительную статическую модель предметной среды на языке UML, которая приведена на рисунке10.

Рисунок10 - Предварительная статическая модель

Следует иметь в виду, что при генерации кода в состав атрибутов класса And будет введен еще один: имя – taker; тип – Not. То есть, имя помеченного стрелкой конца связи добавляется в качестве атрибута к классу от которого исходит стрелка.

5.2 Описание событий

Событие – это нарушенное однообразие. Однообразие в схеме нарушается, если происходит изменение какого-либо сигнала. В цифровых схемах возможны два изменение сигнала: из 0 в 1 и обратно. То есть, с каждым входом и выходом элемента схемы связаны два события. Каждому событию необходимо присвоить имя и определить другие данные. Описание событий для объекта and класса And и объекта not класса Not приведены в таблицах7,8.

Таблица 7 -Описание событий объекта and класса And

Имя события Описание Источник Приемник Данные
vx10_1 Изменение сигнала на входе 1 из 0 в 1 Внеш. схема Объект and нет
vx11_0 Изменение сигнала на входе 1 из 1 в 0 Внеш. схема Объект and нет
vx20_1 Изменение сигнала на входе 2 из 0 в 1 Внеш. схема Объект and нет
vx21_0 Изменение сигнала на входе 2 из 1 в 0 Внеш. схема Объект and нет
vyx0_1 Изменение сигнала на выходе из 0 в 1 Объект and Объект and нет
vyx1_0 Изменение сигнала на выходе из 1 в 0 Объект and Объект and нет

Таблица 8 - Описание событий объекта not класса Not

Имя события Описание Источник Приемник Данные
vx0_1 Изменение сигнала на входе из 0 в 1 Объект and Объект not нет
vx1_0 Изменение сигнала на входе из 1 в 0 Объект and Объект not нет
vyx0_1 Изменение сигнала на выходе из 0 в 1 Объект not Объект not нет
vyx1_0 Изменение сигнала на выходе из 1 в 0 Объект not Объект not нет

5.3Реагирование объектов классов на события

Простейший способ реагирования на события сопоставить каждому событию операцию класса, причем в качестве имен операций использовать имена событий. Для задания взаимодействия объектов по событиям можно использовать диаграмму последовательностей языка UML. На диаграмме последовательностей изображаются исключительно те объекты, которые непосредственно участвуют во взаимодействии и не показываются возможные статические ассоциации с другими объектами. Для диаграммы последовательностей ключевым моментом является динамика взаимодействия объектов во времени. При этом диаграмма последовательностей имеет как бы два измерения. Одно — слева направо в виде вертикальных линий, каждая из которых изображает линию жизни отдельного объекта, участвующего во взаимодействии. Графически каждый объект изображается прямоугольником и располагается в верхней части своей линии жизни. Внутри прямоугольника записывается имя объекта. На рисунке11 приведена диаграмма последовательностей для описанных событий и объектов. В качестве источника внешних событий на диаграмме приведен объект класса Imitator. Аргумент main_prog задает ссылку на объект главной программы, с помощью которого можно обращаться к операциям, определенным в главной программе.