- •Содержание
- •Алгоритм. Блок-схема. Элементы блок-схемы
- •Циклы
- •Массивы. Работа с массивами
- •Сортировка данных
- •Матрица. Работа с матрицами
- •Язык программирования Turbo Pascal
- •Алфавит языка Turbo Pascal
- •Вещественные типы данных
- •Логический тип данных
- •Символьный тип данных
- •Массивы в ТР
- •Cтроки в ТР
- •Оператор присваивания в ТР
- •Целочисленные типы данных
- •Условный оператор
- •Составной и пустой оператор
- •Оператор выбора
- •Оператор перехода и метка
- •Циклы в ТР
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла repeat
- •Подпрограммы в ТР
- •Локальность имен в ТР
- •Формальные и фактические параметры
- •Рекурсия. Рекурсивные функции
- •Модули в ТР
- •Стандартные модули в ТР
- •Использование модуля GRAPH
- •Файлы в ТР
- •Общие принципы работы с файлами в ОС
- •Элементы объектно-ориентированного программирования
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •Список литературы
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
