- •Аннотация.
- •Введение.
- •Средства объектно-ориентированного программирования. . Определение объекта. Компоненты: поля и методы.
- •. Определение экземпляров объектов. Операция присваивания над объектами. Обращение к компонентам объекта из программы и методов. Неявный параметр Self.
- •Var a:Troom;
- •. Инициализация полей объектов.
- •Var l,w,s:real;
- •Var l,w,s:real;
- •Var l,w,s:real;
- •. Наследование.
- •Var a:tName; b:tPenson;
- •. Полиморфизм.
- •. Раннее и позднее связывание. Виртуальные методы. Конструкторы. Определение типа объекта.
- •Var I:integer; s:real;
- •Var I:integer;
- •Var a:tRoom; b:tFlat;
- •. Динамические объекты. Деструкторы.
- •Var p:pTObj;
- •Var p:pTObj;
- •Var a:tObj;
- •Использование технологии ооп. . Использование объектов при создании новых структур данных.
- •Interface
- •Implementation
- •Var next:pElement;
- •Var n:tSpisok; k:integer;p:pNum;
- •. Использование объектов при создании меню.
- •Риc. 2. 7. Библиотечные оконные формы.
- •Interface
- •Inp.Init(bx1,by1,bx2,by2,battr,bxt,byt,'');
- •Inp.Draw;
- •Inp.Draw;
- •Var w1:array[1..10] of tWin absolute p1;
- •I:integer;
- •Var I:integer;
- •Var I:integer;
- •Var I:integer;
- •Interface
- •Implementation
- •Var k:boolean;
- •If Compare(fam) then
- •Var a:tMainMenu; b:tAddMenu; c:tOpenBase;
- •1:Begin
- •Var l:integer;
- •Inp:(x1:34;y1:8;x2:46;y2:8;attr:112;xt:1;yt:1;text:'')),
- •Inp:(x1:34;y1:10;x2:46;y2:10;attr:112;xt:1;yt:1;text:'')));
- •. Использование объектов при создании движущихся изображений.
- •Var color:word;
- •Var driver,mode:integer;
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.
В чем заключается основная концепция объектно-ориентированного программирования?
Какие языки программирования считаются объектно-ориентированными?
Дайте определение абстракции, инкапсуляции, наследованию и полиморфизму.
Что такое объект? Чем он отличается от записи и других структурных типов данных?
Как объявляется переменная типа объекта?
Как осуществляется доступ к полям и методам? Что собой представляет параметр Self?
Как описать объект-потомок?
Что такое конструктор и деструктор объекта? Когда они обязательны?
Дайте определение полиморфного метода? Как его описать?
Дайте определение виртуального метода? Когда необходимо использовать виртуальные методы?
Использование технологии ооп. . Использование объектов при создании новых структур данных.
Использование ООП позволяет создавать достаточно сложные структуры данных, связывая с ними методы, организующие работу с этими структурами.
В качестве примера рассмотрим программу, которая работает со списком.
Объект «Список» включает поля и методы, позволяющие работать со структурой «Двунаправленный список» (см. Рис. 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;