Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Полиморфизм



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

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

Интерфейсом в ООП называется совокупность спецификаций процедур и функций (методов) без указания их реализации, т.е. совокупность абстрактных методов. Считается, что класс реализует (implements) некоторый интерфейс, если в определении класса имеются реализации для всех методов, указанных в определении интерфейса.

Иное положение в ООМ. Устройства Gen и Amp на рис. 10.1 взаимодействуют с внешним окружением через свои внешние переменные, значение которых изменяется непрерывно. В практике программирования объектам случается взаимодействовать через свои видимые переменные. При наличии в этих объектах параллельных нитей управления возникает проблема синхронизации, одним из решений которой является, например, property (свойства), обращения к которым автоматически переводятся компилятором в вызов соответствуюших методов. Для реальных физических систем эта проблема решается самой природой, а для модели правильная синхронизация обеспечивается исполняющей системой пакета моделирования.

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

Тогда усилитель в схеме на рис. 10.1 можно заменить усилителем с насыщением, который совместим с ним по наследованию и по интерфейсу. Однако усилитель может быть также заменен и на интегратор, задаваемый уравнением , который тоже имеет вход Х, выход Y и параметр К того же вещественного типа и, следовательно, совместим с усилителем по интерфейсу, хотя и не имеет с ним ничего общего по наследованию.

В языке Modelica в дополнение к паре «суперкласс-подкласс» (superclass-subclass) очень активно используется другая пара – «супертип-подтип» (supertype-subtype), ориентированная на совместимость по интерфейсу.

Например, из класса CGain можно вывести производный класс (подкласс) CMulDiv (умножитель-делитель). Усилитель с насыщением в Modelica нельзя вывести из простого усилителя, поскольку карт состояния этот язык не поддерживает, а уравнения переопределять запрещает.

model CGain

parameter Real K = 1;

input Real X (start=0);

output Real Y;





Дата публикования: 2014-11-18; Прочитано: 211 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...