Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Виртуальные методы

Рассмотрим примеры двух объектных типов - TPoint и TCircle, которые содержат поля и методы, необходимые для рисования точек и кругов на экране дисплея. Эти два типа связаны отношением наследования и содержат, наряду с другими, одноименные методы SwitchOn, SwitchOff и Move. Рассмотрим подробнее эти методы. Первые два из них реализуют, соответственно, алгоритмы рисования фигуры на экране и ее удаления с экрана (вторая операция, очевидно, аналогична первой с точностью до замены цвета). Легко видеть, что для различных геометрических фигур соответствующие алгоритмы будут различными. В нашем примере эти действия реализуются вызовами стандартных процедур модуля Graph. Поэтому существование различных методов для двух рассматриваемых объектных типов (то есть переопределение этих методов в типе-потомке TCircle) выглядит оправданным.

С другой стороны, алгоритм метода Move для обоих типов весьма похож. Для того, чтобы переместить фигуру, достаточно удалить ее со старого места, изменить ее координаты и нарисовать эту же фигуру на новом месте. Это можно выразить следующим фрагментом:

procedure Move (dx, dy: integer);

begin

SwitchOff;

X:= X + dx; Y:= Y + dy;

SwitchOn

end;

В силу однотипности приведенного алгоритма разумным выглядит желание определить метод Move для объектного типа TPoint с тем, чтобы тип-потомок TCircle унаследовал его без переопределения. Однако в данном случае возникает ситуация, сущность которой целесообразно рассмотреть.

Пусть тип TCircle унаследовал у типа TPoint вышеприведенный метод. Если имеются экземпляры двух объектов рассматриваемых типов:

var

OnePoint: TPoint;

OneCircle: TCircle;

то вызов метода OnePoint.Move (10, 20); начнет свое выполнение с вызова метода SwitchOff, который определен в типе TPoint. В результате точка будет погашена и последующие действия приведут к желаемому результату. Описанная последовательность вызовов отмечена на схеме стрелками с буквой А.

 

OnePoint А

 

 

 
 

 


A, B

 

A

 

 

<== предыдущая лекция | следующая лекция ==>
Наследование и переопределение | OneCircle
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 431; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.