Разработка и экспериментальное исследование редактора схем программ

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



лассов блоков.

Главный блок (ChartMainBlock) реализует метод сохранения схемы. В программе схема сохраняется в XML формат. Для этого был выбран класс XmlSerializer из пространства имен System.Xml.Serialization.

Пространство имен System.Xml.Serialization содержит классы, используемые для сериализации объектов в документы или потоки формата XML.

Центральным классом в пространстве имен является класс XmlSerializer, который позволяет сохранять состояние объектов в формате XML и затем восстанавливать объекты из этого формата. XmlSerializer сериализует и десериализует объекты в документы XML и из них. XmlSerializer позволяет контролировать способ кодирования объектов в XML. Пример XML файла сгенерированного программой можно посмотреть в приложении Б.

Каждый блок наследуется от абстрактного класса Block. Текст блока хранится в поле Text, для циклов дополнительно используется поле TextAtTheEnd (определяет текст блока, закрывающего цикл), тип блока определяется классом блока. Каждый блок определяет собственный метод для отрисовки.

public abstract class Block

{

...

public List Items;

public Block Branch;

...

}

Блок определенного типа реализует только собственный метод отрисовки, все остальное он наследует от абстрактного класса Block.

public class RegularBLock : Block

{

...override void Draw(Graphics g) { ... }

...

}

Рисунок 5.1 - Диаграмма классов блоков

Далее рассмотрим класс, представляющий всю блок-схему. Диаграмма класса блок-схемы приведена на рисунке 5.2.

Рисунок 5.2 - Диаграмма класса блок-схемы

Для хранения всей схемы в программе присутствует класс Chart. Он хранит корневой элемент схемы (блок начала схемы), список точек вставки, объект для генерации кода программы из схемы, а так же служебные данные. Класс схемы реализует методы вставки и удаления блоков, очистки всей схемы и автоматического выравнивания блоков и точек вставки.

public class Chart

{

...

public ChartMainBlock root; //корневой элемент схемы

public CodeGenerator codeGen; //генератор кода

public List(); //все блоки схемы

public List();

...

}

Класс блок схемы реализует методы для автоматического выравнивания блоков и точек вставки (RealignBlocks, RegenerateInsertionPoints, GenerateInsertionPoints), методы для вставки и удаления блоков (InsertIntoBranch, CreateNewBlock, DeleteSelectedBlock, ClearChart), методы для обработки событий мыши (ProcessMouseClickInsertion, ProcessMouseClickBlockSelection, ProcessMouseMove, ProcessMouseDoubleClick), так же этот класс имеет метод для получения кода программы (GetCode).

Далее рассмотрим класс точки вставки InsertionPoint. Он приведен на рисунке 5.3.

Рисунок 5.3 - Диаграмма класса точки вставки

Далее рассмотрим класс генератора кода программы. Он приведен на рисунке 5.4.

Рисунок 5.4 - Диаграмма класса генератора кода

Далее рассмотрим класс для выполнения кода программы. Он приведен на рисунке 5.5. Этот класс использует интерпретатор языка JavaScript Jint для платформы .NET. Для вывода результата работы программы предназначен делегат PrintCodeExecutionResultDelegate. В Jint этот делегат назначается методу print().

Рисунок 5.5 - Диаграмма класса для выполнения кода программы

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

Для списков используется List(Of T) из System.Collections.Generic. Это строго типизированный список объектов, доступных по индексу. Поддерживает методы для поиска по списку, удаления, вставки и другие операции со списками.

.2 Структурная схема программы

Структурная схема[13] представляет собой упрощенное графическое изображение, дающее представление о взаимной связи отдельных элементов описываемого объекта. Рассмотрим структурную схему программы (рисунок 5.6):

Рисунок 5.6 - Структурная схема программы

Главная форма содержит все основные элементы управления (кнопки, меню, текстовые области) а так же является контейнером, в котором находятся все остальные модули системы. Через главную форму пользователь осуществляет работу с программой, а затем действия пользователя на главной форме передаются в нужный модуль системы.

Форма рабочей области содержит рисунок схемы, с которым пользователь работает в интерактивном режиме. Нажимая элементы управления на главной форме, пользователь переключает систему в различные режимы, и затем в зависимости от режима форма рабочей области обрабатывает действие пользователя требуемым образом. Кроме формы рабочей области главная форма содержит форму ввода массивов и XML сериализатор (используется для сохранение схемы в XML и открывания схемы из XML).

Рассмотрим форму рабочей области. Эта форма содержит форму редактирования свойств блока, которая вызывается формой рабочей области при определённых событиях. Форма рабочей области содержит блок схему программы.

Блок схема выполняет все функции по организации структуры блоков (копирование, вставка, автоматическое расположение блоков), генерации кода из блоков и интерпретации полученного кода. Для интерпретации кода используется JINT.

6. Описание интерпретатора использованного в программе

В программе для исполнения полученного кода был использован интерпретатор Jint.- это интерпретатор языка JavaScript для .NET пр