Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирования. Часть 1. Конспект лекций.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
465 Кб
Скачать

if Vis then begin PutPixel(x,y,Color); Visible:=TRUE end

else begin PutPixel(x,y,GetBkColor); Visible:=FALSE end

end;

Наследование

Объектные типы можно выстроить в иерархию. Один объектный

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

Формат описания: <имя типа-потомка>=Object(<имя типа-предка>) Пример. Объект TLine, описывающий линию, можно объявить сле-

дующим образом: type TPoint = object

. . . . . . . . . . .

end; {конец описания объекта TPoint} TLine = object(TPoint)

xe,ye:integer; {координаты второго конца}

Procedure GetLineLocation(var x1,y1,x2,y2:integer); Procedure SetLineLocation(x1,y1,x2,y2:integer); Procedure SetLineVisible(Vis:boolean);

end;

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

Полиморфизм

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

37

ии действия – показать или сделать невидимым графический объект.

Свойство, позволяющее называть разные алгоритмические действия одним и тем же именем, называется полиморфизмом. Вот пример про-

стейшего использования полиморфизма:

type TA = object; Procedure Out; end;

TB = object(TA) Procedure Out; end;

Procedure TA.Out; begin

writeln(’МЕТОД TA.OUT’) end;

Procedure TB.Out; begin

writeln(’Метод TB.Out’) end;

var A:TA; B:TB; begin

A.Out; B.Out end;

В результате на экран будут выведены строки:

МЕТОД TA.OUT Метод TB.Out

38

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]