Объявление объекта. Инициализация полей
Например:
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.
Еще по теме Объявление объекта. Инициализация полей:
- Деление полей
- Глава 2. АНАЛИЗ ПОЛЕЙ ГОРОСКОПА
- Определение куспидов полей (домов)
- 3. Объявление гражданина умершим
- 9. Безвестное отсутствие. Объявление гражданина умершим
- Статья 1250. Объявление нотариусом секретного завещания
- Трети полей
- Статья 1150. Право на объявление конкурса
- Статья 47. Правовые последствия объявления физического лица умершим
- Параграф 1. Публичное обещание вознаграждения без объявления конкурса
- 4. Последствия явки гражданина, объявленного умершим
- § 5. Признание гражданина безвестное отсутствующим и объявление умершим
- Объявление о «Полярной звезде»
- Деление полей
- 1.3.7. Трети полей
- Трети полей