Структуры данных конечно–элементных моделей и методы их описания с помощью объектно–ориентированных средств. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структуры данных конечно–элементных моделей и методы их описания с помощью объектно–ориентированных средств.



Лекция 1. Особенности программирования в объектно–ориентированной системе "SPACE".

Особенности структуры данных "SPACE".

В отличие от традиционных информационных технологий (ИТ), технология "SPACE" не оперирует такими понятиями, как программы и файлы данных. Соединение данных и программных процедур происходит один раз, во время формирования объектов. Технология "SPACE" рассматривает объекты базы данных (БД) как активные структурные элементы, содержащие не только структуры данных произвольного формата, но также откомпилированные программные коды. Анализ и обработка данных в БД "SPACE" осуществляется с помощью внутриобъектного программного обеспечения (ПО). Доступ к данным, записанным в объекты "SPACE", со стороны внешнего программного обеспечения, не входящего в систему "SPACE", не предусмотрен. Большая часть прикладных задач в объектной системе управления базами данных (ОСУБД) "SPACE" также решается с помощью внутриобъектного ПО. Прикладное ПО, например, МКЭ-комплекс MSC.Nastran, не входящее в структуру БД используется только как носитель универсальных алгоритмов, для которых нецелесообразно разрабатывать внутриобъектное ПО. Обмен данными с прикладными программами осуществляется через временные файлы, формируемые с помощью внутриобъектного ПО.

Объекты "SPACE" формируются с помощью функций-членов объектов без использования командного режима и прикладного ПО. Единственным объектом БД "SPACE", который создается в командном режиме, является Головной объект (I-й уровень). Любой другой объект создается только с помощью ПО, входящего в структуру уже существующего объекта. Т.е. каждому объекту, кроме головного, соответствует "родительский" объект, по отношению к которому данный объект является субобъектом. Данные о каждом субобъекте автоматически записываются в процессе его создания в структуру данных "родительского" объекта. Данные о "родительском" объекте также автоматически записываются в структуру данных субобъекта. Иначе говоря каждый субобъект является "вложенным" по отношению к "родительскому" объекту. Такая ИТ лучше отражает структуру данных проекта и обеспечивает более надежное описание связей между объектами различных уровней, чем традиционная ИТ, в соответствии с которой объекты создаются либо в командном режиме (администратором данных), либо с помощью прикладного ПО, не входящего в состав СУБД. Удаление объекта также возможно только из "родительского" объекта. При необходимости, ОСУБД "SPACE" может поддерживать до 65535 БД (SPACE-ов).

Структура внутриобъектных адресов данных в SPACE соответствует структуре адресов данных в оперативной памяти: Addr = Seg:Offset. Это дает возможность вычислять адреса переменных и структур данных непосредственно во время компиляции и не менять ссылки на данные при активизации объекта. Кроме того такая ИТ существенно упрощает процедуру сохранения данных. Для этого используется специализированная функция ядра "SPACE" $_save (), имеющая два аргумента, в первый из которых записывается адрес данных, подлежащих сохранению в БД, во второй - объем сохраняемых данных (байт), например:

$_save (&TestObject, 3480);

Таким образом прикладной программист избавляется от трудоемких и не свойственных ему процедур управления данными.

Применение такого метода адресации, кроме того, позволяет разделить логическое представление данных на две относительно независимых формы, из которых одна, административная, рассматривает объект, как систему сегментов и таблиц дескрипторов. Вторая, прикладная, форма рассматривает объект в том виде, как он описан с помощью языка программирования "Space C".

Обмен данными между объектами.

При обмене данными между объектами проектной БД, например, моделями, возникает проблема согласования форматов данных. Кроме того, объем данных, передаваемых в процессе проектирования, бывает очень большим, а сами объекты не могут одновременно находиться в ОП одного компьютера, в результате чего нет возможности передавать данные через ОП. Наконец, важнейшей проблемой управления процессом проектирования является синхронизация состояний проектных моделей.

Для решения указанных проблем в "SPACE" реализован метод пересечения объектов, в соответствии с которым два и более объектов могут ссылаться на одну и ту же область памяти БД (рис. 1):

Рис. 1. Принципиальная схема пересечения объектов "SPACE"

 

Для реализации этого метода в состав языка программирования "SpaceC" включены специальные виртуальные типы данных. В отличие от обычных переменных, виртуальным переменным (массивам, структурам) не выделяется память БД, они просто регистрируются в специальных структурах объектов (локальных таблицах дескрипторов).

При написании программных текстов виртуальные переменные используются так же, как обычные переменные. Однако перед первым использованием такие переменные должны быть инициализированы. Процесс инициализации виртуальной переменной включает в себя две операции: запись в дескриптор виртуальной переменной ссылки на реальную область памяти в БД и загрузку в ОП данных, на которые ссылается дескриптор. В дальнейшем эти данные загружаются в ОП при каждой активизации объекта. После инициализации виртуальная переменная, массив или структура могут использоваться как данные обычных типов. При необходимости, виртуальные переменные (массивы, структуры) могут быть "перенацелены" на другие данные в БД.

Виртуальные типы данных позволяют ссылаться на данные любого объекта, находящегося в любом SPACE. Поэтому при записи ссылки в дескриптор виртуальной переменной используется особый, расширенный, адрес, который, кроме номера сегмента и смещения , включает индивидуальный код объекта и номер SPACE, в котором находится объект: . Адрес для ссылки считывается из специальной области оперативной памяти с помощью функции ядра $_set_index(). Для записи адреса в указанную область используется функция ядра $_get_addres().

Формирование библиотеки классов объектов.

Библиотека классов объектов представляет собой полноценную базу данных, имеющую древовидную иерархическую структуру, состоящую из классов объектов ОСУБД "SPACE", объединенных в группы как по принципу наследования свойств, так и по функциональному признаку. Для структурирования библиотеки по функциональному принципу используются особые типы объектов, называемые списками. Списки представляют собой табличные структуры данных, содержащие ссылки на классы объектов и другие списки. Библиотека классов "SPACE" формируется и поддерживается Генератором классов "SPACE". Главным модулем Генератора классов является Space Class Explorer (рис. 2.).

 
 
Рис. 2. Общий вид Space Class Explorer.

 

 


Основное назначение Space Class Explorer - формирование структуры библиотеки классов. Для этого используется меню "Structure-Create List" или "Structure-Create Class" (рис. 3). В первом случае формируется список Space, во втором случае - класс.

 
 
Рис. 3. Меню формирования структуры библиотеки классов

 


При формировании списка/класса необходимо ввести наименование и комментарий (рис. 4).

 
 
Рис. 4. Диалог создания элемента библиотеки классов.

 

 


Каждый класс представляет собой сложную структуру данных, скрытую от пользователя, в которой содержится исходный текст класса, откомпилированные коды, а также другие необходимые данные.

Для ввода, редактирования и компиляции текста класса используется Space Class Builder, который активизируется в отдельном окне (рис. 5) с помощью кнопки "Run Class Builder", либо с помощью меню "Tools-Run Class Builder", либо с помощью комбинации клавиш "Ctrl+R".

 
 
Рис. 5. Общий вид Space Class Builder.


Работа с Space Class Builder.

Окно Space Class Builder содержит 6 панелей (рис.5): Class Designer, SubStruct Designer, Compile Info, Linked Class List, Class Description и Identifier Attributes.

Панель "Class Designer" предназначена для описания свойств и методов класса. Текст исходного кода класса может разбиваться на страницы. Максимальное количество страниц - 50. Каждый вновь созданный класс содержит одну страницу, которой по умолчанию присваивается наименование "Page 1". Новые страницы задаются с помощью меню "Data-New Page" (рис. 6):

 
 
Рис. 6. Меню формирования данных Class Designer.

 

 


Для изменения наименования страницы используется меню "Data-Rename Page". Для сохранения текста текущей страницы используется меню "Data-Save Page" либо сочетание клавиш "Ctrl+S". Для сохранения исходного текста всего класса используется меню "Data-Save Class" либо сочетание клавиш "Ctrl+A". Для сохранения текста текущей страницы в файле используется меню "Data-Save Page in File". Для загрузки текста в текущую страницу из файла используется меню "Data-Load Page from File".

Панель "SubStruct Designer" предназначена для описания порожденных типов данных (структур и смесей). Для описания каждой структуры или смести выделяется отдельная страница. Максимальное количество страниц - 50. Наименование каждой страницы должно начинаться с ключевого слова "struct" или "union" (рис. 7):

 
 
Рис. 7. Страница SubStruct Designer.

 

 


В отличие от языка "С++", описанные таким образом структуры не могут содержать описания методов (функций) или ссылки на них. Перечень функций меню "Data" панели "SubStruct Designer" соответствуют меню "Data" панели "Class Designer".

Компиляция всех исходных текстов панели "Class Designer" производится одновременно с помощью меню "Compile-All Class Compile" или сочетания клавиш "Ctrl+F1". Если в данном классе описаны структуры и смеси, они должны быть предварительно откомпилированы. Для этого необходимо перейти на панель "SubStruct Designer" и активизировать компиляцию с помощью меню "Compile-All Class Compile" или сочетания клавиш "Ctrl+F1".

Система "Space" различает два типа классов: классы объектов и классы компонент. В отличие от структур и смесей все классы содержат описания как свойств (данных) так и методов (функций).

Классы объектов описывают объекты, как самостоятельные элементы базы данных "SPACE", имеющие собственное имя и объектный код, по которым их можно активизировать. Поэтому классы объектов должны обязательно включать функцию main (), с которая выполняется первой при активизации объекта. Для правильной компиляции класса объекта необходимо установить в положение "Object Class" переключатель, расположенный на панели "Class Description" (рис. 8):

 
 
Рис. 8. Компоненты панели "Class Description".

 

 


Классы компонент описывают информационные структуры, содержащие свойства и методы. Компоненты входят в состав объектов. Поэтому для них должны быть определены идентификаторы типа, которые используются при описании компонент в составе классов. Идентификаторы типа указываются в поле ввода "Class identifier", расположенное на панели "Class Description" (рис.8). Соответственно, переключатель типа класса должен быть установлен в положение "Component Class".

После определения типа класса необходимо "кликнуть" по кнопке "Save" или нажать клавиши "Ctrl+S".

Кроме элементов, определяющих тип класса, панель "Class Description" содержит поле для ввода и редактирования подробного описания класса.

Панель "Compile Info" служит для отображения информации о результатах компиляции и автоматически активизируется с началом компиляции.

Панель "Identifier Attributes" содержит таблицы атрибутов глобальных и локальных переменных, а также структур, смесей и компонент класса.

 

Особенности языка "Space C".

При описании классов "SPACE" используется язык программирования "Space C", представляющий собой адаптированный вариант широко известного языка Си. Хотя "Space C" и предназначен для описания объектов, он не содержит компонент, которые в языке C++ служат для описания классов, наследования классов и принадлежности к классам, так как в "SPACE" не существует данных и функций вне объектов. Описание классов, их наследование и принадлежность к классам задаются с помощью Генератора классов "SPACE", путем соответствующей структуризации библиотеки классов.

В "SPACE" используется многопроходный компилятор, поэтому в языке "Space C" отсутствуют такие ключевые слова, как "#include …" и "extern …". Имена глобальных переменных и функций достаточно описать один раз в любом месте программного текста на любой странице панели "Class Designer". "Space C" также не содержит ключевых слов "struct" и "union". Для их описания используется специализированная панель Space Class Builder "SubStruct Designer".

 

Функции ядра "SPACE".

Существуют операции, которые не могут быть эффективно реализованы с помощью процессора (интерпретатора) "SPACE". Для решения этой проблемы используются, так называемые, функции ядра. Сведения об этих функциях хранятся в памяти компилятора "SPACE", поэтому их не требуется специально описывать. При обращении к таким функциям управление передается в ядро "SPACE", благодаря чему скорость их выполнения повышается в 10-100 раз. Кроме того, существует ряд функций, для выполнения которых требуется обращение к функциям нижнего уровня.

 

Space GUI.

Элементы "Space GUI" формируются с помощью функций ядра "SPACE". В процессе формирования каждому элементу GUI присваивается индивидуальные коды, которые используются для их идентификации. Функции GUI делятся на три группы.

К первой группе относятся функции, формирующие элементы-контейнеры: "окна", обычные панели, панели с закладками (страницами). Объекты-контейнеры предназначены для размещения на них других элементов GUI.

Ко второй группе относятся функции, формирующие элементы GUI, предназначенные для ввода и отображения информации: метки, окна ввода, обычный и "выпадающий" списки, многострочное окно, индикатор.

К третей группе относятся управляющие элементы. В "SPACE" эта группа представлена одним типом элементов - "кнопками".

Описание функций ядра "SPACE" приведено в Справочнике [1].

 



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 137; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.254.35 (0.036 с.)