УДК 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с.

Научный руководитель д-р. техн. наук, профессор