Объекты

Переменные этого типа представляют собой сложную структуру, состоящую из полей и методов. Объекты описывают структуру динамической переменной, которая появляется только в процессе выполнения программы. Такая переменная является экземпляром объекта.

Свойства – это переменные типа REAL, INTEGER, STRING, RECORD или массив. Свойства объекта представляют собой элементы данных, которые копируются в каждом экземпляре объекта.

Метод – процедура или функция, связанная с объектом. Внутри методов доступны именно свойства того экземпляра объекта, для которого был вызван метод. Функция отличается от процедуры тем, что она возвращает результат. Её можно использовать в операторах присваивания, математических и строковых выражениях, в операторе print, в логических выражениях. Результат действия функции в её описании находится в предопределённой переменной <result>.

Объявление полей производится после объявления объекта, описание методов – после объявления полей.

Предопределённая переменная <self>, это скрытый параметр для каждого метода в объекте. Он позволяет методу обратиться к объекту. Это особенно важно, когда параметры метода такие же, как переменные объекта, предназначенные для содержания этих переданных значений. Пример:

 object sample
xx1, yy1, zz1: real;

 procedure init(xx1, yy1, zz1: real)
 begin
self.xx1=xx1; self.yy1=yy1; self.zz1=zz1
end

И пример передачи объекта в подпрограмму:

 object sample2
 procedure proc
 begin
call subproc(self)
end

Описание объекта завершается командой <end.>


images/download/attachments/131901930/image2024-6-4_16-50-6.png


Создание нового объекта, удаление или переименовывание существующего объекта производится через контекстное меню в списке объектов.


images/download/attachments/131901930/image2024-6-4_16-52-4.png


При создании нового объекта появится окно:


images/download/attachments/131901930/image2024-6-5_16-13-4.png


Здесь <External name> -- имя внешней библиотеки, вся реализация которой выполнена в Delphi. <Object name> -- имя, с которым объект будет доступен в системе.

На данный момент доступны:

  • Point3D – трёхмерная точка.

  • Matrix – трехмерная матрица.

  • EulerConverter – п ространственные повороты с использованием углов Эйлера.

  • Quaternion4d – к ватернион (4D-вектор).


Объявление экземпляра объекта производится в командах или подпрограммах аналогично, как и в массивах и структурах.

Пример объявления и использования экземпляра объекта:


pp: point2D
pp.xp=10
pp.yp=10
pp.MoveV(45, 10)
pp.TurnAndMove(45, 15, 25)
print pp.xp, "; ", pp.yp


Объекты можно присваивать целиком, как обычные переменные. Продолжая предыдущий пример:


pp2: point2d
pp2=pp


Также, как и обычные переменные, объекты могут быть параметрами процедур, функций и подпрограмм:


DrawPoint(pp)