Объекты на основе дескрипторов и классов
ABL поддерживает две модели управления объектами, которые обеспечивают доступ к различным возможностям:
- Объекты на основе дескрипторов
- Объекты на основе классов
Объекты на основе дескрипторов
Объекты на основе дескрипторов представляют встроенные типы объектов в ABL, на которые вы ссылаетесь, используя дескрипторы объектов со слабой типизацией. Эти объекты обеспечивают доступ к различным возможностям ABL через их атрибуты и методы. Вы можете определить статические или создать динамические экземпляры многих типов объектов на основе дескрипторов. Например, следующая программа создаёт объект сокета, пытается подключиться к указанному ресурсу, а затем удаляет объект.
VAR HANDLE hSocket.
/* Create socket and connect to server */
CREATE SOCKET hSocket.
hSocket:CONNECT('-H localhost -S 23456') NO-ERROR.
IF hSocket:CONNECTED() = FALSE THEN
DO:
MESSAGE 'Unable to Connect' VIEW-AS ALERT-BOX.
RETURN.
END.
DELETE OBJECT hSocket.
В примере кода вы определяете переменную типа HANDLE. Затем создаёте объект сокета, используя переменную дескриптора с оператором CREATE SOCKET. После создания атрибуты и методы можно вызывать, используя имя переменной дескриптора, за которым следует двоеточие, а затем имя метода или атрибута. В примере кода CONNECT и CONNECTED являются вызываемыми методами. После того, как объект больше не нужен, вызывается DELETE OBJECT для очистки ресурсов. Объекты на основе дескрипторов не удаляются сборщиком мусора. Ответственность за их удаление лежит на приложении.
Вы также можете объединять ссылки на дескрипторы, чтобы упростить кодирование. Дополнительные сведения см. в разделе Ссылки на дескрипторы в цепочке в справочнике по ABL .
Дополнительные сведения см. в справочных руководствах по объектам на основе дескрипторов ABL:
Объекты на основе классов
Объекты на основе классов также представляют встроенные типы объектов в ABL, на которые вы ссылаетесь, используя строго типизированные дескрипторы объектов. Эти объекты предоставляют доступ к различным возможностям через свои свойства и методы. Вы можете определить статические или создать динамические экземпляры типов объектов на основе классов.
Следующая программа создаёт объект FileInputStream и считывает первые 50 байтов из файла sample.data. AVM удалит этот объект (с помощью сборщика мусора), когда больше не будет существовать ссылок на объект.
USING Progress.IO.*.
VAR CLASS FileInputStream rfile.
VAR MEMPTR mData.
/* Create an instance of a FileInputStream object */
rFile = New FileInputStream ("sample.data").
rFile:Read(mData, 0, 50).
rFile:Close( ).
Дополнительные сведения см. в справочных руководствах по объектам на основе классов ABL:
