Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
100
Добавлен:
04.03.2014
Размер:
235.01 Кб
Скачать

Var a:tObj;

Begin HeapError:=@HeapFunc;

if not A.Init(5) then {проверка выполнения конструктора}

begin WriteLn('Не хватает памяти в куче.');

Halt(1);

end;

A.Print;

A.Done; {освобождения памяти дин. полей}

End.

. Ограничение доступа к полям и методам объектов.

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

При желании программист может скрыть часть инкапсулированных полей и методов, используя директиву Private:

Unit <>;

Interface

Type <имя объекта>=Object

<доступные поля>

<доступные методы>

Private

<закрытые поля>

<закрытые методы>

end;

Implementation ....

Выполнение директивы Private приводит к тому, что все закрытые поля и методы доступны только внутри модуля, как если бы они были описаны в секции реализации.

Контрольные вопросы к Главе 1.

  1. В чем заключается основная концепция объектно-ориентированного программирования?

  2. Какие языки программирования считаются объектно-ориентированными?

  3. Дайте определение абстракции, инкапсуляции, наследованию и полиморфизму.

  4. Что такое объект? Чем он отличается от записи и других структурных типов данных?

  5. Как объявляется переменная типа объекта?

  6. Как осуществляется доступ к полям и методам? Что собой представляет параметр Self?

  7. Как описать объект-потомок?

  8. Что такое конструктор и деструктор объекта? Когда они обязательны?

  9. Дайте определение полиморфного метода? Как его описать?

  10. Дайте определение виртуального метода? Когда необходимо использовать виртуальные методы?

Использование технологии ооп. . Использование объектов при создании новых структур данных.

Использование ООП позволяет создавать достаточно сложные структуры данных, связывая с ними методы, организующие работу с этими структурами.

В качестве примера рассмотрим программу, которая работает со списком.

Объект «Список» включает поля и методы, позволяющие работать со структурой «Двунаправленный список» (см. Рис. 2.1), состоящий из объектов «Элемент». Объект «Элемент» содержит только те поля и методы, которые необходимы для организации цепочки. Предполагается, что реальная программа опишет объект-потомок, который будет содержать необходимые информационные поля.

Рис. 2.1. Структура данных «Двунаправленный список».

Объект «Список» включает методы, которые реализуют добавление элементов, извлечение элементов и процедуру, позволяющую выполнить поэлементную обработку списка, причем имя конкретной процедуры обработки элемента передается в списке параметров.

Пример 11. Описание объекта «Список» и встроенного объекта «Элемент списка».

Unit spisok;

Interface

Type pElement=^TElement; {указатель на объект-элемент}

tproc=procedure(e:pElement); {процедурный тип}

TElement=Object {объект-элемент списка}

pre,suc:pElement; {адрес предыдущего и последующего}

procedure Print;virtual; {печать элемента}

constructor Init;

end;

TSpisok=Object

first, last, {адрес первого и последнего элемента}

cur:pElement; {адрес текущего элемента}

procedure Add(e:pElement); {добавление в начало}

function Del:pointer; {извлечение последнего}

procedure ForEach(proc:tproc); {выполнить для каждого}

constructor Init;

end;

Соседние файлы в папке Методичка С++