
- •1.Алфавит языка паскаль
- •9.6.Функции определения порядка
- •10.Тип вещественный
- •12.Операторы
- •12.1.Простые операторы
- •13.2.Вывод данных на монитор
- •13.3.Форматирование при выводе данных
- •17.1.Объявление и вызов подпрограмм
- •19.Блоки (модули) в паскале
- •19.1.Блок Crt (Unit Crt)
- •23.1.Работа с текстовыми файлами
- •24.Динамическая память
- •640 Кбайт ┌───────────────────┐
- •26.Динамические библиотеки
- •28.Тип объект (класс)
- •30.Встроенный ассемблер
- •30.1.Объявление операндов
- •31.Основы работы в графическом режиме
- •34.Многоугольники
- •35.Криволинейные фигуры
- •39.Команды работы редактора
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 ; конец программы