Использование объектно-ориентированного подхода к представлению и обработке знаний
Конференция: XVIII Студенческая международная научно-практическая конференция «Молодежный научный форум»
Секция: Технические науки
XVIII Студенческая международная научно-практическая конференция «Молодежный научный форум»
Использование объектно-ориентированного подхода к представлению и обработке знаний
Проблема, которая характерна для систем, основанных на знаниях, является проблема представления знаний. Это объясняется тем, что свойства системы и её характеристики сильно зависят от формы представления знаний. Как эксперты, так и пользователи системы должны быть уверены, что поймут представление знаний. Иначе приобретение знаний и их оценка затрудняются.
Целью данной работы является реализация на практике объектно-ориентированного программирования. Для достижения поставленной цели используем объектно-ориентированный язык программирования C#.
В программе имеется класс-контейнер Vector, один базовый класс Minerals и его классы-наследники Fuel, Metals, Gems. Все классы в программе находятся в отдельных файлах. Базовый класс Minerals – абстрактный класс, содержащий 3 абстрактные функции: Cost (получить стоимость) и Print (получить название), обеспечивающие удобный для последующего чтения вывод информации об объектах классов-потомков [2].
Класс-потомок Fuel позволяет обрабатывать информацию о топливе. Ключевой его характеристикой является публичная переменная типа строка «name», характеризующая наименование топлива. Действительная переменная «cost» отвечает за стоимость топлива.
Класс-потомок Metals позволяет обрабатывать информацию о металлах. Ключевыми его характеристиками являются публичная переменная типа строка «name», характеризующая наименование металла и переменная «density» действительного типа, отвечающая за плотность. Действительная переменная «cost» отвечает за стоимость металла.
Класс-потомок Gems позволяет обрабатывать информацию о драгоценных камнях. Ключевыми его характеристиками являются публичная переменная типа строка «type Color», характеризующая название цвет драгоценного камня, переменная «hardness» типа короткое целое, характеризующая твердость драгоценного камня и переменная «color» перечисляемого типа, отвечающая за цвет драгоценного камня. Действительная переменная «cost» отвечает за стоимость драгоценного камня.
Все абстрактные функции, наследуемые классами-потомками от класса Minerals, определяются модификатором override [1].
На рисунке 1 приведена диаграмма классов UML, соответствующая используемым классам (Vector, Minerals, Fuel, Metals, Gems)
.
Рисунок 1. Диаграмма классов UML, соответствующая используемым классам (Vector, Minerals, Fuel, Metals, Gems)
Для запуска программы следует заполнить файл «Вход.txt» данными. Пример на рисунке 2:
Рисунок 2. Пример ввода данных
Запустить файл программы, ввести название файла для ввода без расширения «Вход», как показано на рисунке 3:
Рисунок 3. Пример запуска программы
После исполнения программы получаем результат в файле «выход», как показано на рисунке 4:
Рисунок 4. Результат работы программы
Наследование – механизм объектно-ориентированного программирования, позволяющий описать новый класс на основе уже существующего, при этом свойства и функциональность родительского класса заимствуются или переопределяются новым классом. При определении класса для наследования от другого класса, производный класс явно получает все члены базового класса, за исключением его конструкторов и деструкторов. Производный класс может, таким образом, повторно использовать код в базовом классе без необходимости в его повторной реализации [4].
Виртуальные функции и методы базового класса определяют интерфейс всей иерархии. Применение виртуальных функций обеспечивает гибкость и возможность расширения функциональности класса. При описании классов в качестве виртуальных определяются те функции, которые в производных классах должны реализовываться по-другому [3].
В данной программе используется 2 виртуальные функции (все они объявлены в абстрактном классе Minerals) – Print обеспечивающий удобный для последующего чтения вывод информации об объектах классов-потомков, и cost, позволяющая выполнять сортировку по стоимости полезного ископаемого.
В результате работы мы получили программу - простейшее хранилище данных на основе векторного типа контейнера. Программа считает из текстового файла исходные данные и на их основе создает необходимые объекты, размещает объекты в контейнере, сортирует объекты в контейнере по общему свойству, выводит содержимое контейнера в отдельный текстовый файл, в удобном для чтения виде. Главная особенность применения языка представления знаний фреймами – простота написания программ для решения интеллектуальных проблем, в этом мы убедились, написав данное приложение.