Информатика и информационные технологии: конспект лекций
Добавить в закладки К обложке
- ЛЕКЦИЯ № 1. Введение в информатику - Страница 1
- 2. Системы счисления - Страница 2
- 3. Представление чисел в ЭВМ - Страница 3
- 4. Формализованное понятие алгоритма - Страница 4
- ЛЕКЦИЯ № 2. Язык Pascal - Страница 5
- 2. Стандартные процедуры и функции - Страница 6
- 3. Операторы языка Pascal - Страница 8
- ЛЕКЦИЯ № 3. Процедуры и функции - Страница 10
- 2. Процедуры в Pascal - Страница 11
- 3. Функции в Pascal - Страница 12
- 4. Опережающие описания и подключение подпрограмм. Директива - Страница 13
- ЛЕКЦИЯ № 4. Подпрограммы - Страница 14
- 2. Типы параметров подпрограмм - Страница 15
- ЛЕКЦИЯ № 5. Строковый тип данных - Страница 17
- 2. Процедуры и функции для переменных строкового типа - Страница 18
- 3. Записи - Страница 19
- 4. Множества - Страница 20
- ЛЕКЦИЯ № 6. Файлы - Страница 21
- 2. Модули. Виды модулей - Страница 24
- ЛЕКЦИЯ № 7. Динамическая память - Страница 26
- 2. Работа с динамической памятью. Нетипизированные указатели - Страница 27
- ЛЕКЦИЯ № 8. Абстрактные структуры данных - Страница 28
- 2. Стеки - Страница 29
- 3. Очереди - Страница 30
- ЛЕКЦИЯ № 9. Древовидные структуры данных - Страница 31
- 2. Операции над деревьями - Страница 32
- 3. Примеры реализации операций - Страница 33
- ЛЕКЦИЯ № 10. Графы - Страница 34
- 2. Представление графа списком инцидентности. Алгоритм обхода графа в глубину - Страница 35
- 3. Представление графа списком списков. Алгоритм обхода графа в ширину - Страница 36
- ЛЕКЦИЯ № 11. Объектный тип данных - Страница 37
- 2. Наследование - Страница 39
- 3. Создание экземпляров объектов - Страница 40
- 4. Компоненты и область действия - Страница 41
- ЛЕКЦИЯ № 12. Методы - Страница 42
- 2. Конструкторы и деструкторы - Страница 44
- 3. Деструкторы - Страница 45
- 4. Виртуальные методы - Страница 47
- 5. Поля данных объекта и формальные параметры метода - Страница 48
- ЛЕКЦИЯ № 13. Совместимость типов объектов - Страница 49
- 2. Расширяющиеся объекты - Страница 50
- 3. Совместимость типов объектов - Страница 52
- ЛЕКЦИЯ № 14. Ассемблер - Страница 53
- 2. Программная модель микропроцессора - Страница 54
- 3. Пользовательские регистры - Страница 55
- 4. Регистры общего назначения - Страница 56
- 5. Сегментные регистры - Страница 57
- 6. Регистры состояния и управления - Страница 58
- ЛЕКЦИЯ № 15. Регистры - Страница 59
- 2. Регистры управления - Страница 60
- 3. Регистры системных адресов - Страница 61
- 4. Регистры отладки - Страница 62
- ЛЕКЦИЯ № 16. Программы на Ассемблере - Страница 63
- 2. Синтаксис ассемблера - Страница 64
- 3. Директивы сегментации - Страница 68
- ЛЕКЦИЯ № 17. Структуры команд на Ассемблере - Страница 71
- 2. Способы задания операндов команды - Страница 73
- 3. Способы адресации - Страница 75
- ЛЕКЦИЯ № 18. Команды - Страница 77
- 2. Арифметические команды - Страница 81
- ЛЕКЦИЯ № 19. Команды передачи управления - Страница 90
- 2. Команды передачи управления - Страница 95
2. Конструкторы и деструкторы
Конструкторы и деструкторы являются специализированными формами методов. Используемые в связи с расширенным синтаксисом стандартных процедур New и Dispose конструкторы и деструкторы обладают способностью размещения и удаления динамических объектов. Кроме того, конструкторы имеют возможность выполнить требуемую инициализацию объектов, содержащих виртуальные методы. Как и все другие методы, конструкторы и деструкторы могут наследоваться, а объекты могут содержать любое число конструкторов и деструкторов.
Конструкторы используются для инициализации вновь созданных объектов. Обычно инициализация основывается на значениях, передаваемых конструктору в качестве параметров. Конструктор не может быть виртуальным, так как механизм диспетчеризации виртуального метода зависит от конструктора, который первым совершил инициализацию объекта.
Приведем несколько примеров конструкторов:
constructor Field.Copy(var F: Field);
begin
Self := F;
end;
constructor Field.Init(FX, FY, FLen: integer; FName: string);
begin
X := FX;
Y := FY;
GetMem(Name, Length (FName) + 1);
Name^ := FName;
end;
constructor TStrField.Init(FX, FY, FLen: integer; FName: string);
begin
inherited Init(FX, FY, FLen, FName);
Field.Init(FX, FY, FLen, FName);
GetMem(Value, Len);
Value^ := '';
end;
Главным действием конструктора порожденного (дочернего) типа, такого как указанный выше TStr Field. Init, почти всегда является вызов соответствующего конструктора его непосредственного родителя для инициализации наследуемых полей объекта. После выполнения этой процедуры конструктор инициализирует поля объекта, которые принадлежат только порожденному типу.
Деструкторы являются противоположностями конструкторов и используются для очистки объектов после их использования. Обычно очистка состоит в удалении всех полей указателей в объекте.
Примечание
Деструктор может быть виртуальным и часто является таковым. Деструктор редко имеет параметры.
Приведем несколько примеров деструкторов:
destructor Field.Done;
begin
FreeMem(Name, Length (Name^) + 1);
end;
destructor StrField.Done;
begin
FreeMem(Value, Len);
Field.Done;
end;
Деструктор дочернего типа, такой как указанный выше TStrField. Done, обычно сначала удаляет введенные в порожденном типе поля указателей, а затем в качестве последнего действия вызывает соответствующий сборщик-деструктор непосредственного родителя для удаления унаследованных полей указателей объекта.