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

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

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

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

Рис. 2.4. Пример иерархии наследования классов модели (в объектной нотации Г. Буча).

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: