Действительно ли удостоверение ростехнадзора без протокола.
|
Основы объектно-ориентированного представления программных систем - Полиморфизм |
Страница 11 из 39
Полиморфизм
Полиморфизм — возможность с помощью одного имени обозначать операции из различных классов (но относящихся к общему суперклассу). Вызов обслуживания по полиморфному имени приводит к исполнению одной из некоторого набора операций. Рассмотрим различные реализации процедуры Записывать. Для класса ПараметрыПолета реализация имеет вид procedure Записывать (the: in out ПараметрыПолета) is begin -- записывать имя параметра -- записывать отметку времени end Записывать; В классе Кабина предусмотрена другая реализация процедуры: procedure Записывать (the: in out Кабина) is begin Записывать (ПараметрыПолета (the)); -- вызов метода -- суперкласса -- записывать значение давления -- записывать процентное содержание кислорода -- записывать значение температуры end Записывать; Предположим, что мы имеем по экземпляру каждого из этих двух классов: Вполете: ПараметрыПолета:= Инициировать; Вкабине: Кабина:= Инициировать (768. 21. 20); Предположим также, что имеется свободная процедура: procedure СохранятьНовДанные (d: in out ПараметрыПолета'class; t: БортовоеВремя) is begin if ТекущВремя(d) >= t then Записывать (d): -- диспетчирование с помощью тега end if; end СохранятьНовДанные; Что случится при выполнении следующих операторов? q СохранятьНовДанные (Вполете, БортовоеВремя (60)); q СохранятьНовДанные (Вкабине, БортовоеВремя (120)); Каждый из операторов вызывает операцию Записывать нужного класса. В первом случае диспетчеризация приведет к операции Записывать из класса ПараметрыПолета. Во втором случае будет выполняться операция из класса Кабина. Как видим, в свободной процедуре переменная d может обозначать объекты разных классов, значит, здесь записан вызов полиморфной операции. |