Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
infa_2y_semestr.docx
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
148.39 Кб
Скачать

№32. Объекты. Поля и методы.

Переменные объектных типов (экземпляры объектов) с точки зрения Turbo Pascal представляют собой структурированный (комбинированный) тип данных, являющихся совокупностью информационных полей (переменных любого типа) и методов (процедур и функций). Объектные типы описы-ваются в разделе Type программы с использованием зарезервированного (ключевого) слова object:

Type

<имя объектного типа> = object

<информационные поля> объекта (переменные)>

<методы объекта (заголовки процедур и функций)>

end;

Например, опишем объект, который будет представлять собой позицию на графическом экране. Нам понадобится объявить два поля (X и Y-координаты точки) и несколько методов: для инициализации объекта, получения его координат, уничтожения и т. п.

Type

TLocation = object

X,y : Word; {Координаты позиции на экране}

Procedure Init(InitX, InitY : Integer);

{Инициализация объекта}

Function GetX : Word; {Возвращает координату Х}

Function GetY : Word; {Возвращает координату Y}

Procedure GetCoords(Var CoordX, CoordY : Word);

{Возвращает обе координаты}

Procedure Done; {Уничтожает объект}

End;

Как видно из примера, поля объекта описываются таким же образом, что и поля записи, а для описания методов объекта используются только заголовки процедур и функций. Само собой разумеется, что такой объект никому не нужен, поскольку не реализована его функциональность (то есть - не описаны тела процедур и функций). Тела методов всех объектов, объявленных в программе, описываются в разделе реализации процедур и функций программы (в любом месте и в любой последовательности, но обяза-тельно ниже "своего" объекта). Синтаксически реализация метода выглядит так же, как и реализация "обычной" процедуры или функции за одним исключением: перед именем метода через точку необходимо указать имя объекта, которому он принадлежит:

Procedure <Имя объекта>.<Имя метода>(<Формальные параметры>);

<Раздел локальных описаний метода (процедуры)>

begin

<Операторная часть метода (тело процедуры)<

end;

Опишем методы объекта TLocation:

Procedure TLocation.Init(X,Y : Word);

begin

X := InitX;

Y := InitY

end;

Function TLocation.GetX : Word;

begin

GetX := X

end;

Function TLocation.GetY : Word;

begin

GetY := Y

end;

Procedure TLocation.GetCoords;

begin

CoordX := GetX;

CoordY := GetY

end;

Procedure TLocation.Done;

begin

end;

Хотим обратить ваше внимание на несколько моментов: во-первых, при реализации методов не обязательно повторять весь заголовок подпрограммы, достаточно только имени без списка формальных параметров (как это сделано для метода GetCoords), во-вторых, метод объекта может обращаться не только к полям, но и к другим методам (как это сделано во все том же методе GetCoords), и, в-третьих, в данном объекте присутствует метод Done (пустой), который "ничего не делает", поскольку позицию на экране уничтожить нельзя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]