- •В языках программирования высокого уровня используется два типа подпрограмм: процедуры и функции
- •Var имя праметра: имя типа
- •10.3.1. Параметры-значения
- •№8. Явная и неявная рекурсия.
- •№9. Множества. Определение. Область применения
- •№10 И 11. Всё о модулях.
- •12 Бтлет
- •64К, зарезервированная в Borland Pascal для данных, может ока-
- •1. Открытые параметры
- •№25. Причины возникновения ооп.
- •№26. Наследование объектов
- •№ 27. Полиморфизм. Свойства.
- •№28.Методы.
- •Identifier" (Ошибка 4; Повторение идентификатора), если попытае-
- •№29. Облости вилимости в модели объектов Pascal
- •№30.Поведение методов объектов при наследовании
- •№31.Инкапсуляция. Свойства.
- •№32. Объекты. Поля и методы.
- •X,y : Word; {Координаты позиции на экране}
- •№33.Определение объекта.
№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 (пустой), который "ничего не делает", поскольку позицию на экране уничтожить нельзя.
