КАТЕГОРИИ: Архитектура-(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
Дата добавления: 2014-01-11; Просмотров: 448; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |