Смекни!
smekni.com

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

Таблица 2.1

Использование объектно-ориентированного подхода в задачах моделирования.

Суть ООП состоит в следующем: 1. Программа представляет собой совокупность объектов, объединяющих данные и методы их обработки. 1.1. Смысл объекта (поведение) отделён от его реализации (структуры) за счёт того, что методы могут не содержать кода, а данные имеют определённую область видимости. 1.2. Данные объектов (поля) также могут быть объектами. 2. Каждый объект относится к определённому типу (классу), т.е. является его экземпляром. 3. Тип (класс) может наследовать часть данных и методов от других типов (классов), то есть быть их подтипом. Примечание к пункту 1.2: в одном и том же поле могут храниться объекты определённого типа и всех его подтипов. Суть объектно-ориентированной модели состоит в следующем: 1. Модель представляет собой совокупность элементов, объединяющих параметры модели и методы их расчёта. 1.1. Смысл элемента (набор параметров и основные методы их обработки) отделён от его реализации (от вспомогательных данных и методов). 1.2. Данные элементов (параметры, ссылки на соседние элементы и т.д.) также могут быть объектами. 2. Каждый элемент относится к определённому типу (классу), и вычислительные алгоритмы обычно разделены на несколько методов разных классов. 3. Тип (класс) может наследовать часть данных и методов от других типов (классов), причём данные и аргументы методов могут быть не только определённого типа, но и всех его подтипов
ООП имеет следующие преимущества перед другими подходами: 1) компактность программ, уменьшающая их стоимость и время их разработки; 2) возможность повторного использования классов, программ и проектов; 3) эффективное разделение работы между дизайнерами и программистами; 4) быстрая адаптация программ к изменяющимся задачам и требованиям; 5) уменьшение риска разработки сложных программ за счёт интеграции и тестирования их компонентов на протяжении всего времени разработки, а не на последнем её этапе. 6) ориентация на человеческое восприятие мира, позволяющая программировать даже без понимания деталей работы компьютера. Объектно-ориентированные модели имеют следующие преимущества перед процедурно-ориентированными: 1) компактность модели; 2) возможность повторного использования частей модели; 3) эффективное разделение работы над численными методами, содержанием и наглядным представлением модели; 4) быстрая адаптация модели к изменению структуры и численных методов; 5) уменьшение риска разработки сложных моделей за счёт интеграции и тестирования их частей на протяжении всего времени разработки, а не на последнем её этапе; 6) ориентация на предметную область модели, позволяющая моделировать без глубокого знания численных методов и, возможно, без умения программировать

2.1.3. Существующие объектные средства моделирования

Таким образом, любая более-менее сложная математическая или имитационная модель является удобным предметом для применения объектно-ориентированного подхода. Конечно, этот факт был давно замечен и использован в большом количестве программных средств для моделирования [7,8]. Однако в большинстве таких средств объектно-ориентированным является только внешнее представление элементов модели, которое перед началом расчётов компилируется в код процедурно-ориентированного языка программирования или просто преобразуется в параметры готового кода. Например, блоки многих имитационных моделей преобразуются в переменные системы обыкновенных дифференциальных уравнений, а связи между ними – в функции её правых частей.

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

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

С точки зрения имитационного моделирования важным преимуществом использования объектов является возможность наглядного представления структуры модели и её визуального редактирования (то есть изменения без программирования). Обычно такая возможность реализуется путём построения модели из отдельных параметров, которые можно связывать между собой с помощью разных функций. Функции и параметры являются объектами многочисленных типов (классов). В частности, функции могут быть заданы таблично или с помощью формулы, могут зависеть не только от значений параметров, но и от их производных, а также зависеть от них с запаздыванием. В наиболее развитых системах имитационного моделирования [7,9,10] среди этих функций имеются достаточно сложные дифференциальные и дискретные операторы, что формально позволяет графически описать любую систему уравнений. К сожалению, такой системой не могут пользоваться эксперты предметной области, далёкие от математики. Например, для решения с её помощью дифференциального уравнения нужно понимать смысл преобразования Лапласа, а представление этого уравнения довольно громоздко (см. рис. 2.3).

Рис. 2.3. Пример объектного представления параметров и функций модели (Simulink).

2.2. Объектно-ориентированная методология моделирования

2.2.1. Построение моделей из элементов

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

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

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

2.2.2. Создание типов элементов на основе наследования

На первый взгляд может показаться, что система моделирования, основанная на заранее запрограммированных классах элементов, не является такой гибкой, как существующие средства имитационного моделирования. Однако объектно-ориентированный подход позволяет обойти эту проблему за счёт наследования классов элементов. Если один класс элемента наследуется от другого, то он использует имеющиеся у того параметры и методы их расчёта, при этом добавляя какие-либо свои параметры и методы.