Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FEDERAL_NOE_AGENTSTVO_PO_OBRAZOVANIYu.doc
Скачиваний:
7
Добавлен:
17.09.2019
Размер:
1.06 Mб
Скачать

1.2.3.Описание структур данных, используемых в программе

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

Рассмотрим подробнее структуру классов «дерево решений» SolutionTree и «узел дерева решений» TreeNode.

Класс TreeNode содержит три поля: информационное поле узла question, в котором содержатся вопросы или ответы, ссылку на левого и правого потомка узла yes и no. Кроме того, здесь имеется три соответствующих полям свойства:Yes, No, Question. Для удобства доступа к объектам данного класса используется три конструктора: без параметров, с одним параметроминформационным полем и с тремя параметрамиинформационным полем и ссылками на левую и правую дочь узла.

Класс SolutionTree содержит три поля: ссылки на корень дерева решений, на текущий узел и на предыдущий узел, расположенный уровнем выше. В классе содержатся свойство Root, конструктор по умолчанию. Кроме того, здесь описаны методы для записи и чтения информации в XML-файл:Save и Open соответственно, а также методы рисования структуры дерева решений P, R и L.

В данной программе для хранения дерева решений используется XML-файл, поскольку эта структура наглядно отражает иерархическую структуру данных и реализует принцип вложенности, что удобно для извлечения информации, размещенной в узлах дерева. В отличие от бинарных форматов, XML содержит метаданные об именах, типах и классах описываемых объектов, по которым приложение может обработать документ неизвестной структуры. Иерархическая структура XML подходит для описания практически любых типов документов, кроме аудио и видео мультимедийных потоков, растровых изображений, сетевых структур данных и двоичных данных. Для того чтобы в файле не дублировались значения полей и свойств, используется объект класса XmlIgnoreAttribute, который инструктирует метод Serialize, принадлежащий XmlSerializer, не сериализовывать значение открытого поля или открытого свойства чтения/записи. Для создания корневого элемента иерархии вызывается конструктор класса XmlRootAttribute с двумя параметрами – именем корневого элемента и проинициализованным значением false свойством IsNullable, указывающим, что XmlSerializer не должен выполнять сериализацию члена со значением Nothing в атрибут xsi:nil.

Структура дерева решений изображена на рис.1.

Рис.1.Структура дерева решений

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]