Смекни!
smekni.com

Объектно-ориентированный подход (стр. 5 из 22)

Таким образом, даже поверхностный обзор некоторых блоков модели организма человека показывает, что для её реализации необходим объектно-ориентированный подход, – прежде всего, ввиду комплексного характера модели, неоднородности её элементов и сложности связей между ними.

2.3.2. Объектно-ориентированное представление структуры модели

В данном разделе в виде схем представлены результаты объектно-ориентированного анализа некоторых функциональных систем организма человека (более подробно они описаны в [12]). Их модели представляют собой совокупность элементов – объектов различных классов, – соединённых между собой направленными связями, смысл которых описан в разделе 2.2.1. Структура самих элементов подробно приведена в разделе 3.4.1 при рассмотрении объектно-ориентированной библиотеки численных методов, на которой основана данная модель. Классы элементов обозначены на схемах символическими изображениями, соответствие с которыми определяется таблицей 2.2. Каждая схема соответствует некоторой подсистеме организма. Если изображение какого-либо элемента уменьшено по сравнению с остальными и помещено в ромбическую рамку, то он относится к другой подсистеме, являясь связующим звеном между ней и подсистемой рассматриваемой схемы.

Следует заметить, что рисунки 2.5-2.7 не являются теоретическими схемами структуры модели. Они созданы с помощью специального графического редактора расчётной программы, то есть изображённые на рисунках объекты (элементы) создаются при инициализации модели и в ходе моделирования выполняют соответствующие их классам численные алгоритмы. При создании элементов используется, помимо приведённой структурной информации и декларативных связей, также количественная информация и функциональные связи. Функциональные связи (зависимости между параметрами элементов) также имеют прямое отношение к рассматриваемой здесь структуре модели и вводятся в неё с помощью графических редакторов, однако за недостатком места они не приводятся.

По той же причине ниже описывается лишь структура некоторых блоков модели (относящихся, прежде всего, к кровеносной системе), что достаточно для иллюстрации принятого подхода к моделированию. Распределённые блоки модели на схемах также отсутствуют, но лишь потому, что к настоящему времени они ещё не реализован интерфейс, позволяющий наглядно представлять сложные области интегрирования и связывать их с другими элементами модели.

Рис. 2.5. Общая структура модели кровеносной системы.

Рис. 2.6. Структура модели малого круга кровообращения.

Рис. 2.7. Структура модели большого круга кровообращения.

Таблица 2.2

Условные обозначения некоторых классов элементов модели организма человека на рис. 2.5-2.7. Номера соответствуют таблицам 1-4 приложения.

Элемент

Рис.

Элемент

Рис.

27 Точка конвекции

31 Градиент-конвектор

28 Узел конвекции

32 Насос-конвектор

29 Конвектор

33 Сосуд-конвектор

30 Проводник-конвектор

34 Эластичный конвектор

2.4. Резюме

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

3. Объектно-ориентированные численные методы

3.1. Постановка задачи и обзор существующих работ

Конечно, математические свойства численных методов не зависят от способа их реализации, и поэтому предметом данной главы отнюдь не является улучшение этих свойств путём их программирования на объектно-ориентированном (а не на процедурном) языке. Объектно-ориентированный подход в вычислительной математике нужен не столько сам по себе, сколько ради применения сложных численных методов к имитационным моделям, необходимость чего детально описана в разделе 2.1.1. Вычислительные алгоритмы на объектно-ориентированной основе являются более гибкими, пригодными к визуальной разработке и повторному использованию в рамках некоторой библиотеки. Эти достоинства, которые свойственны имитационному подходу к моделированию, ориентированному на наглядность и простоту развития моделей, были обсуждены в главе 2. Ниже обсуждается другое, менее очевидное, преимущество ООП – удобство моделирования систем, которые сложны не в имитационном, а в математическом смысле.

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

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

Безусловно, за рубежом существует большое количество работ по анализу применимости объектно-ориентированных языков программирования к решению вычислительных задач [2,4,5]. Основной упор в этих работах делается на преодоление проблемы понижения скорости арифметических операций над большими массивами данных (векторами, матрицами) при использовании таких языков. Другими словами, речь идёт об универсальных рекомендациях вычислителям по эффективному программированию стандартных для процедурных языков конструкций на объектных языках. В частности, в [4] рассматриваются проблемы объектного представления матрицы (вектора), сплошной адресации элементов матриц, разделения данных между матрицей и её подматрицами, уменьшения числа вызовов конструкторов этих объектов. Во многих работах, например, в [2] приводятся результаты сравнения производительности объектных и процедурных языков, и обосновывается выбор наиболее производительных компиляторов. От объектно-ориентированного подхода в таких работах остаётся очень мало; наоборот, целью авторов является приблизить свойства объектно-ориентированных языков к процедурным (процедурные сложно использовать в задачах, связанных, например, с пользовательским интерфейсом). В частности, не делается попыток отказаться от матричного представления данных многих численных методов. Поэтому сами алгоритмы численных методов остаются неизменными, и научных работ по их объектной трактовке не возникает.

Данная работа не претендует на анализ и оптимизацию производительности низкоуровневых вычислений на объектных языках программирования; в ней исследуются способы использования преимуществ объектов на значительно более высоком уровне. Прежде всего, такие преимущества появляются за счёт отказа от матричного представления многих математических задач. При этом, конечно, возникают проблемы реализации многих численных методов (своих для каждой задачи), основанных на таком представлении. Именно на поиск конкретных вычислительных алгоритмов и направлена данная работа, – в отличие от большинства работ по объектно-ориентированным вычислениям, которые рассматривают лишь языковые конструкции, общие для многих алгоритмов.