Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Развёрнутые лекции по Паскалю.doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
512.51 Кб
Скачать

28.Тип объект (класс)

Объекты представляют собой структуры, включающие фиксированное

число компонент. Компонентами могут быть либо поля, содержащие дан-

ные, как в записях, либо методы, которые описывают действия, выпол-

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

держит идентификатор и тип данных. Описание метода состоит из заго-

ловка процедуры, функции, конструктора или деструктора.

Примечания:

->Синтаксис объекта имеет следующий вид

Type TObject=Object

<идентификатор>:<тип данных>;

. . .

<заголовок подпрограммы>;

. . .

End;

->Объединение в одной структуре данных и действий над ними,

называется инкапсуляцией.

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

ледованием. В этом случае наследующий объект называют потом-

ком, а наследуемый - предком.

->Сферой действия предка является как сам объект, так и его по-

томки. Подобное свойство называют транзитивностью.

->Объекты можно объявлять только в головной программе или мо-

ле. Недопустимо объявление объектов внутри подпрограмм, поэ-

тому все идентификаторы должны быть уникальными с учетом по-

томков данного объекта.

->Раздел компонент записывается первым, далее следует описание

методов.

->Раздел компонент может состоять из двух секций, первая пред-

варяется словом Private и объявляет идентификаторы компонент,

которые действуют в пределах данного программного модуля, а

второй предваряется словом Public и объявляет компоненты, ко-

торые действуют во всех модулях. Порядок следования секций

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

->Объекты не могут включать компоненты файлового типа.

->Подробное описание методов дается после объвления методов.

->Если для нескольких различных родственных объектов задается

единый набор действий, то это называют полиморфизмом.

Пример 89.

->Type TPoint=Object

X,Y:Integer;

End;

TRectangle=Object

A,B:TPoint;

Procedure Unit(Xa,Ya,Xb,Yb:Integer);

Procedure Copy(Var R:Rectangle);

Procedure Move(Dx,Dy:Integer);

Procedure Grow(Dx,Dy:Integer);

Procedure Intersect(Var R:TRectangle);

Procedure Union(Var R:TRectangle);

Function Contains(D:TPoint):Boolean;

End;

->Type TField=Object

Private

X,Y,Len:Integer;

Name:String;

Public

Constractor Copy(Var F:TField);

. . .

Private

Procedure DisplayStr(X,Y:Integer;S:String);

End;

Все методы по умолчанию являются статическими

29.СВЯЗЬ С ТУРБО-АССЕМБЛЕРОМ

Турбо-Ассемблер (TASM) позволяет просто писать программы на ас-

семблере и связывать их с вашими программами на TP.

Использование TP с директивой .Model устанавливает соглашения

о вызовах Паскаля, определяет имена сегментов, делает Push BP а та-

кже Mov BP,SP (сохранение старого указателя на "фрейм" и установка

нового), а также устанавливает возврат через Pop BP и Ret N (восста-

новление старого указателя на стек и возврат из процедуры со сдви-

гом указателя на N-число байтов параметров).

Пример 90.

.Model TPascal ; модель кода TP

Locals @@ ; локальная метка

.Data ; сегмент данных

Extrn Count:Word ; переменные TP

.Coda ; сегмент кода

Extrn RangeError:Near ; реализована на TP

Public CheckRange ; реализована здесь

Mov Ax,Min

Mov Dx,Max

@@1: Cmp Ax,Dx

...

Ret ; возврат

ChekRange EndP ; конец процедуры

End ; конец программы