на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Основные этапы объектно-ориентированного проектирования
p align="left">При параллельной разработке нескольких подпакетов могут проявиться нарушения уникальности имен элементов модели. Для решения этой проблемы необходимо установить правила составления имен: назначить каждому подпакету, например, префиксный литерал и диапазон номеров. После этого имя каждого класса будет состоять из литерала подпакета и номера из заданного диапазона. Другой проблемой является дублирование одних и тех же классов в различных подпакетах.

3. Разработка домена

В соответствии с итерационной моделью процесса проектирования разработчиками многократно выполняются действия, отображенные на рисунке 3.

Рисунок 3 - Итеративный процесс проектирования

Цель выяснения семантики классов и объектов - определить поведение и атрибуты каждой абстракции.

На ранних этапах отдельные классы можно проектировать изолировано. Выявляя семантику классов и объектов, необходимо отмечать шаблоны поведения, которые могут пригодиться где-нибудь еще.

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

Основными результатами этого шага являются диаграммы классов, объектов и модулей. Составляются диаграммы объектов и диаграммы взаимодействий, передающие семантику сценариев, создаваемых в ходе проектирования. Хотя решения, принятые при анализе и проектировании, должны быть выражены на языке программирования, диаграммы дают более широкий обзор архитектуры и позволяют раскрыть отношения, которые с трудом формулируются на используемом языке реализации.

4. Структура приложения

Любое приложение разбивается на: основную программу, архитектурные классы и прикладные классы.

Основная программа выполняет следующие три функции:

- создание и инициализацию всех предварительно существующих экземпляров классов;

- ввод или имитацию внешних событий;

- диспетчеризацию внутренних событий.

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

4.1 Способ обработки событий

Все классы приложения подразделяются на активные и пассивные. Активные классы реагируют на события, внешние или возникающие внутри приложения. Кратким и емким определением события, известным в литературе, является следующее: «Событие - это нарушенное однообразие». В аппаратуре события представляются сигналами прерываний. В ОС Windows для представления событий используются сообщения (message). Результатом реагирования на событие является вызов процедуры обработки прерывания. Поэтому в приложении реагирование на события можно реализовать как вызов соответствующего обработчика события. При моделировании динамики поведения реальных объектов необходимо учитывать конечную скорость протекания процессов в этих объектах. Вследствие этого моменты возникновения события и реакции на него разделены во времени. Реализация задержек реакции на некоторое событие требует введение специальных структур данных для задания и хранения информации о событии, обработчик которого необходимо вызвать по истечении времени задержки.

Ниже рассматривается вариант реализации механизма управления событиями для языка реализации C#, входящий в состав Visual Studio.Net. На рисунке 4 приведена структура данных, для задания информации об обработчике некоторого события.

Рисунок 4 - Структура данных описателя события

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

В основной цикл главной части программы должны быть введены операторы просмотра списка описателей события, обнаружения тех, у которых истекло время задержки, и запуск заданного обработчика события. Естественно, что обработчики различных событий будут отличаться именами и составом параметров. Чтобы обеспечить единообразный вызов обработчиков событий объектов различных классов, возможен следующий прием. В состав операций активных классов включается операция диспетчер вызовов (do_it) всех других операций класса. Диспетчер вызовов получает в качестве аргументов имя операции и данные. С помощью оператора выбора по имени выбирается и запускается соответствующая операция. Такой прием позволяет организовать циклическую обработку списка описателей событий.

На рисунке 5 отображается схема вызовов операций.

Рисунок 5 - Схема вызовов при работе основного цикла главной программы

Достоинством предложенной схемы является то, что точкой вызова любого обработчика события является основной цикл главной программы.

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

- Form1 - класс, задающий главную программу приложения и необходимые компоненты пользовательского интерфейса. Имя класса определяется тем, что оно зафиксировано в компиляторе UML проектов в MS Visio;

- Imitator - класс, задающий необходимые методы имитации внешних событий с помощью клавиатуры;

- AE - родительский класс для всех активных классов приложения. Данный класс обеспечивает полиморфный вызов методов активных классов.

4.2 Архитектурный класс Form1

Имя класса обусловлено тем, что компилятор проектов UML в MS Visio 2002 автоматически присваивает классу главной программы приложения это имя. На рисунке 6 приведена диаграмма класса. Назначение атрибутов и операций класса дано в таблице 3.

Рисунок 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# разработать исходные тексты операций классов и сгенерировать проект для MS Visual Studio.Net.

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

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

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

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

Имя класса

Представители класса

Описание

And

Элементы D1, D3

Логический элемент, выполняющий логическую операцию «И» (конъюнкцию). Значения входных сигналов изменяются асинхронно. Имеет два устойчивых состояния: высокий уровень выходного напряжения - 1 и низкий - 0

Not

Элементы D2, D4

Логический элемент, выполняющий логическую операцию «НЕ» (инверсия, отрицание). Значения входных сигналов изменяются асинхронно. Имеет два устойчивых состояния: высокий уровень выходного напряжения - 1 и низкий - 0

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.