Информатика и информационные технологии
Добавить в закладки К обложке
- 1. Информатика. Информация - Страница 1
- 2. Представление чисел в ЭВМ. Формализованное понятие алгоритма - Страница 2
- 3. Введение в язык Pascal - Страница 3
- 4. Стандартные процедуры и функции - Страница 4
- 5. Операторы языка Pascal - Страница 5
- 6. Понятие вспомогательного алгоритма - Страница 6
- 7. Процедуры и функции в Pascal - Страница 7
- 8. Опережающие описания и подключение подпрограмм. Директива - Страница 8
- 9. Параметры подпрограмм - Страница 9
- 10. Типы параметров подпрограмм - Страница 10
- 11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа - Страница 11
- 12. Записи - Страница 12
- 13. Множества - Страница 13
- 14. Файлы. Операции с файлами - Страница 14
- 15. Модули. Виды модулей - Страница 15
- 16. Ссылочный тип данных. Динамическая память. Динамические переменные. Работа с динамической памятью - Страница 16
- 17. Абстрактные структуры данных - Страница 17
- 18. Стеки - Страница 18
- 19. Очереди - Страница 19
- 20. Древовидные структуры данных - Страница 20
- 21. Операции над деревьями - Страница 21
- 22. Примеры реализации операций - Страница 22
- 23. Понятие графа. Способы представления графа - Страница 23
- 24. Различные представления графа - Страница 24
- 25. Объектный тип в PascalПонятие объекта, его описание и использование - Страница 25
- 26. Наследование - Страница 26
- 27. Создание экземпляров объектов - Страница 27
- 28. Компоненты и область действия - Страница 28
- 29. Методы - Страница 29
- 30. Конструкторы и деструкторы - Страница 30
- 31. Деструкторы - Страница 31
- 32. Виртуальные методы - Страница 32
- 33. Поля данных объекта и формальные параметры метода - Страница 33
- 34. Инкапсуляция - Страница 34
- 35. Расширяющиеся объекты - Страница 35
- 36. Совместимость типов объектов - Страница 36
- 37. Об ассемблере - Страница 37
- 38. Программная модель микропроцессора - Страница 38
- 39. Пользовательские регистры - Страница 39
- 40. Регистры общего назначения - Страница 40
- 41. Сегментные регистры - Страница 41
- 42. Регистры состояния и управления - Страница 42
- 43. Системные регистры микропроцессора - Страница 43
- 44. Регистры управления - Страница 44
- 45. Регистры системных адресов - Страница 45
- 46. Регистры отладки - Страница 46
- 47. Структура программы на ассемблере - Страница 47
- 48. Синтаксис ассемблера - Страница 48
- 49. Директивы сегментации - Страница 49
- 50. Структура машинной команды - Страница 50
- 51. Способы задания операндов команды - Страница 51
- 52. Способы адресации - Страница 52
- 53. Команды пересылки данных - Страница 53
- 54. Арифметические команды - Страница 54
- 55. Логические команды - Страница 55
- 56. Команды передачи управления - Страница 56
35. Расширяющиеся объекты
Если определен порожденный тип, то методы порождающего типа наследуются, однако при желании они могут переопределяться. Для переопределения наследуемого метода попросту описывается новый метод с тем же именем, что и наследуемый метод, но с другим телом и (при необходимости) с другим множеством параметров.
Определим дочерний по отношению к TEmployee тип, представляющий работника, которому платится часовая ставка, в следующем примере:
const
PayPeriods = 26; { периоды выплат }
OvertimeThreshold = 80; { на период выплаты }
OvertimeFactor = 1.5; { почасовой коэффициент }
type
THourly = object(TEmployee)
Time: Integer;
procedure Init(AName, ATitle: string; ARate:
Real, Atime: Integer);
function GetPayAmount: Real;
end;
procedure THourly.Init(AName, ATitle: string;
ARate: Real, Atime: Integer);
begin
TEmployee.Init(AName, ATitle, ARate);
Time:= ATime;
end;
function THourly.GetPayAmount: Real;
var
Overtime: Integer;
begin
Overtime:= Time – OvertimeThreshold;
if Overtime > 0 then
GetPayAmount:= RoundPay(OvertimeThreshold * Rate
+
Rate OverTime * OvertimeFactor
* Rate)
else
GetPayAmount:= RoundPay(Time * Rate)
end;
Вызывая переопределяемый метод, необходимо быть уверенным в том, что порожденный тип объекта включает функциональность родителя. Кроме того, любое изменение в родительском методе автоматически оказывает влияние на все порожденные.
Важное замечание: хотя методы могут быть переопределены, поля данных переопределяться не могут. После того как было определено поле данных в иерархии объекта, никакой дочерний тип не может определить поле данных в точности с таким же именем.