Курсовая работа: Основные этапы объектно-ориентированного проектирования
Рисунок 6 - Диаграмма класса Form1
Таблица 3 - Назначение атрибутов и операций класса Form1
Имя атрибута, операции | Назначение |
textBox1 | Компонента для ввода/вывода текстовых сообщений |
button1, button2 | Кнопки управления |
mainMenu1, menuItem1, menuItem2 | Главное меню приложения, два пункта меню |
timer1 | Экземпляр таймера для отслеживания времен задержек событий |
components, label1 | Служебные компоненты приложения |
imitator | Экземпляр класса Imitator для имитации внешних событий |
list_message | Список описателей событий |
Archive | Список всех экземпляров всех классов приложения |
t | Текущее время модели |
Form1() | Конструктор класса |
Dispose(), InitializeComponent() | Служебные операции класса |
Main() | Операция, реализующая основной цикл главной программы |
menuItem2_Click(…) | Операция, вызываемая при активизации пункта меню |
Form1_KeyPress(…) | Операция, вызываемая при активизации клавиш на клавиатуре |
timer1_Elapsed(…) | Операция, вызываемая по сигналам таймера |
Porojdaet(…) | Операция занесения описателя события в список |
InitializeObject(…) | Операция создания и инициализации предварительно существующих (объектов) экземпляров классов |
При инициализации предварительно существующих (объектов) экземпляров классов возможны два осложнения. Во-первых, может быть большое количество предварительно существующих экземпляров, которые должны быть созданы. В этом случае может быть подготовлена одна общая процедура создания экземпляров классов по некоторому описанию, которое считывается либо из файла, либо из базы данных. Во-вторых, при создании необходимо учитывать порядок, в котором создаются экземпляры, поскольку при создании некоторых экземпляров могут понадобиться ссылочные адреса экземпляров других классов, которые еще не созданы.
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.