<<
>>

Объявление объекта. Инициализация полей

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

Например:

Var A.TRoom; {объект А класса TRoom}

B:array[1..5] of TRoom; {массив объектов типа TRoom}

Type pTRoom-ATRoom; {тип указателя на объекты класса TRoom} Var рС: pTRoom; {указатель на объекты класса TRoom}

Как и для любой другой динамической переменной, для динамического объекта необходимо выделить память, а после его использования - освободить память.

Выделение памяти осуществляют процедурой New или функцией New. Например:

New(pC); или pC:=New(pTRoom);...

Для освобождения памяти используют процедуру Dispose. Например: Dispose(pC);...

Работа с динамическими объектами классов, построенных с использованием наследования со сложным полиморфизмом, имеет свои особенности, и мы вернемся к их рассмотрению в параграфе 11.7.

Обращение к полям и методам объекта. Обращение к полям и методам объекта выполняется так же, как к полям записей:

• с использованием точечной нотации:

.

или .; с использованием оператора with:

with do begin

......

...... end; ...

Например:

а) v:=A. length;

б) s:= A.Square;

в) s:=s+B[iJ. Square;

г) pCA.length:-3;...

Инициализация полей объекта. Поля объекта должны инициализироваться. Инициализация полей объекта может осуществляться тремя способами:

• прямым занесением в поле, например:

Program ex;

Type TRoom = object

length, width:real;{поля: длина и ширина комнаты} function Square:real; {метод определения площади} end;

Function TRoom.Square; {тело метода определения площади}

Begin

Square: = length* width;

End;

Var AtTRoom; {объявляем объект-переменную}

Begin

A. length:-3.5; {инициализируем поля объекта}

A. mdth:=5.1;

WriteLnf'Площадь комнаты равна \A.Square);

End.

• с использованием типизированных констант - синтаксис описания совпадает с синтаксисом типизированных констант типа «запись»:

Program ex;

Type TRoom = object

length, width:real;{попя: длина и ширина комнаты} function Square .real/{метод определения площади} end;

Function TRoom.Square; {тело метода определения площади}

Begin

Square:= length* width;

End;

Const

A:TRoom = (length:3.5; width:5.1); {объявляем константу} Begin

WriteLn(‘Площадь комнаты равна \A.Square);

End.

• посредством специального метода - очень часто в качестве такого метода используют специальную инициализирующую процедуру, которую рекомендуется называть Init:

Program ex;

Type TRoom = object

length, width.real; {поля: длина и ширина комнаты} function Square:real; {метод определения площади} procedure Init(l,w:real);{ инициализирующий метод} end;

{метод определения площади}

1Function TRoom. Square;

Begin

Square: - length* width;

End;

{инициализирующий метод}

Procedure TRoonuInit;

Begin

length:=l; width:=w;

End;

Var AtTRoom; {объявляем объект-переменную}

{основная программа}

Begin

A. Init(3.5,5.1); {инициализируем поля объекта}

WriteLnfПлощадь комнаты равна \A.Square);

End.

Операция присваивания объектов. Над объектами одного класса определена операция присваивания. Физически при этом происходит копирование полей одного объекта в другой методом «поле за полем»:

Const A:TRoom=(length:3.7;:5.2);

Var В:TRoom;...

В:=А; {теперь B.length=3.7, a B.width=5.2}

Существуют некоторые особенности выполнения операции присваивания для объектов родственных классов и полиморфных объектов. Они описаны в параграфах 11.1 и 11.5.

9.1.

<< | >>
Источник: Иванова Г.С. Основы программирования. 2002

Еще по теме Объявление объекта. Инициализация полей:

  1. Деление полей
  2. Глава 2. АНАЛИЗ ПОЛЕЙ ГОРОСКОПА
  3. Определение куспидов полей (домов)
  4. 3. Объявление гражданина умершим
  5. 9. Безвестное отсутствие. Объявление гражданина умершим
  6. Статья 1250. Объявление нотариусом секретного завещания
  7. Трети полей
  8. Статья 1150. Право на объявление конкурса
  9. Статья 47. Правовые последствия объявления физического лица умершим
  10. Параграф 1. Публичное обещание вознаграждения без объявления конкурса
  11. 4. Последствия явки гражданина, объявленного умершим
  12. § 5. Признание гражданина безвестное отсутствующим и объявление умершим
  13. Объявление о «Полярной звезде»
  14. Деление полей
  15. 1.3.7. Трети полей
  16. Трети полей