Объектно-ориентированное проектирование. Павлов А.Ю. - 9 стр.

UptoLike

Составители: 

Рис. 7. Иерархия простого наследования.
Здесь ПараметрыПолетабазовый (корневой) суперкласс, подклассами
которого являются Экипаж, ПараметрыДвижения, Приборы, Кабина. В свою очередь,
класс ПараметрыДвижения является суперклассом для его подклассов Координаты,
Скорость, Ориентация.
Полиморфизм
Полиморфизмвозможность с помощью одного имени обозначать операции из
различных классов (но относящихся к общему суперклассу). Вызов обслуживания по
полиморфному имени приводит к исполнению одной из некоторого набора операций.
Рассмотрим различные реализации процедуры Записывать. Для класса
ПараметрыПолета реализация имеет вид
procedure Записывать(c:ПаранетрыПолета);
В классе Кабина предусмотрена другая реализация процедуры:
procedure Записывать(c:Кабина);
Предположим, что мы имеем по экземпляру каждого из этих двух классов:
Предположим также, что имеется свободная процедура:
procedure СохранятьНовДанные (d:ПараметрыПолета);
begin
Записывать(d);
end;
Что случится при выполнении следующих операторов?
var
Вполете: ПараметрыПолета;
Вкабине:Кабина;
begin
СохранятьНовДанные (Вполете);
СохранятьНовДанные (Вкабине);
end;
Каждый из операторов вызывает операцию Записывать нужного класса. В первом
случае диспетчеризация приведет к операции Записывать из класса ПараметрыПолета.
Во втором случае будет выполняться операция из класса Кабина. Как видим, в
свободной процедуре переменная d может
обозначать объекты разных классов,
значит, здесь записан вызов полиморфной операции.