УДК 519.8
создание полиморфных объектов в программной реализации вычислительного эксперимента
,
Кафедра математики и математического моделирования НФИ КемГУ
*****@***com
Математическую модель можно охарактеризовать, как совокупность математических соотношений, уравнений, неравенств и т. п., описывающих основные закономерности, присущие изучаемому процессу, объекту или системе. Однако не всегда можно однозначно определить вид или структуру объекта, необходимого для вычисления модели. Поэтому необходимо в процессе создания или вычисления математической модели добавить возможность динамически создавать и редактировать необходимые структуры. Такие структуры являются полиморфными объектами, которые в свою очередь могут быть объединены в агрегаты. И для того, чтобы использовать объекты и агрегаты вводится в использование специальный язык, способный структурировать как составляющие части математической модели, так и всевозможные связи между объектами и агрегатами этой модели.
Более точное математическое описание процессов и явлений приводит к появлению сложных систем уравнений. Поэтому, в процессе моделирования зачастую возникают задачи, которые довольно сложно решить «вручную». Поэтому возникает проблема автоматизации процесса моделирования сложных задач. Решить данную проблему предлагается разделением общей задачи на множество мелких, из которых составляется целое. Конечный элемент, как основной объект модели, представляет собой агрегат полиморфных объектов. При конструировании программы требуется только задать набор полиморфных объектов в агрегате и установить связи между ними [1].
Предлагается создавать полиморфные объекты и управляющие объекты для них. То есть, для конечного пользователя уже не важно, каким образом происходит подсчет в полиморфном объекте. Каждый полиморфный объект представлен в таблице символов набором имен терминальных классов и соответствующими управляющими объектами. Зная имя производного класса, в таблице символов находится управляющий объект, который имеет виртуальную функцию генерирования генерируемого объекта. Например, местная система координат, интегратор, интерполятор и другие объекты [1].
Для того, чтобы автоматизировать процесс создания сложных структур, предусмотрено динамическое создание новых полиморфных объектов, а также динамическое создание управляющих над ними классов. Все эти объекты составляют своего родом библиотеку доступных для моделирования объектов. По необходимости, опытный пользователь может создать свой новый функциональный объект и добавить его в проект, создав для него управляющий объект и обновив библиотеку объектов в программе.
Критериями при создании файлов функциональных объектов являются особенности синтаксиса программного кода. Для того, чтобы конечному пользователю было удобно использовать программный продукт, введено несколько специальных конструкций:
После имени функционального класса, определяющего имя и тип управляющего объекта, добавлен блок, содержащий название класса на русском языке, отражающее смысл данного класса. Данная информация используется при графическом построении модели, чтобы пользователь мог без труда определиться с тем, какой именно класс ему необходим в проекте.class T<имя класса>: public TFuncObject
//%Класс <понятное название класса>
//%EndКлас
Внутри описания класса должны содержаться еще два блока, описывающие возможные свойства и связи объекта.
Свойства – это всевозможные атрибуты, не определяемые только типом данного объекта. К таким атрибутам относятся, например, имена файлов для управляющих объектов таблиц. Также объект может иметь произвольное число связей, количество которых является атрибутом объекта.
//%Свойства
AnsiString Folder, TxtFileName, BinFileName;
//%endСвойства
//%Связи
TNamedControl link1, link2;
//%endСвязи
Такие конкретные критерии необходимы для правильного и стабильного функционирования программы. Данные из файлов функциональных классов записываются в таблицы, а далее уже используются как при построении модели, так и выгрузке или загрузке структуры этой модели.
Для того, чтобы сохранить структуру созданной модели, а также использовать сохраненную структуру, принято решение использовать специализированный низкоуровневый язык управления агрегатами (ACL). Язык обладает специфическим синтаксисом, и для обычного пользователя не важен. Преимущество языка в том, что он хранит структуру в упорядоченном виде и очень быстро может предоставить данные для расчетов модели.
Для того, чтобы сохранить структуру модели, достаточно:
Выгружать имена и типы отдельных объектов, агрегатов; Выгружать имена и типы агрегатов и входящих и в них объектов; Выгружать названия связей между объектами.
Пример простейшей структуры выглядит следующим образом:
AGG <имя типа агрегата> <имя агрегата>
ADD <имя типа объекта> <имя объекта в агрегате>
AGG <имя типа агрегата> <имя агрегата>
ADD <имя типа объекта> <имя объекта в агрегате>
ADD <имя типа объекта> <имя объекта в агрегате>
LINK <имя поля связи> <имя переменной-аргумента>
END <имя агрегата>
END <имя агрегата>
ADD <имя типа объекта> <имя объекта>
На рисунке 1 изображено графическое отображение данной структуры.

Рисунок 1 – графическое отображение структуры модели
Литература
, Шпакова программные средства численного моделирования термомеханики конструкций [Текст]/ , // Краевые задачи и математическое моделирование. – 2010. – Т 3 – С.83-88. Буч Гради Объектно-ориентированный анализ и проектирование [Текст] / Гради Буч. - М.: Вилиамс, 2008. – 720с.Научный руководитель д-р. техн. наук, профессор


