Экземпляр класса создается с помощью ф-ии createobject. В дальнейшем это просто переменная типа Object. Оператор ** объявляет, что будет создан новый класс myclass, базирующийся на другом классе Custom. Операторы Cname, Ctype, Lisnew представляют собой объявление свойств класса и определение их исходных значений. Когда объектов еще нет, а для обращения к методу или свойству объекта необходимо указать его имя, то в этом случае при ссылке на метод или свойство идентификатор this Ключевое слово this означает, что выполняется обращение к свойству или методу самого объекта . В результате выполнения будет напечатано:
Men
Men_1
I`m old
Т.о. для определения класса используется конструкция:
1. DEFINE CLASS <имя класса>As< имя суперкласса> ….
2. PROTECTED <список переменных членов класса>
3. PROCEDURE <имя процедуры>
LOCAL< список локальных переменных>
ENDPROC
4. FUNCTION <имя метода ф-ии>
LOCAL < список локальных переменных >
RETURN<возвращаемое значение>
ENDFUNC
ENDDEFINE
Базовые классы (визуальный, form controllers)
Checkbox – элемент управления типа флажок (+ +)
Column – столбец элементов управлени типа ссылка (++)
Combobox – элемент управления(++)
Custom –самый zпростой класс, который используется в качестве суперкласса, если нет др. (+ –)
Commandbutton –кнопка уравления (+ –)
Commandgroup –набор кнопок управления. (+ –)
Form – форма(+ –)
Grid – таблица(+ –)
Listbox – список(+ –)
Optionbutton – переключатель(+ –)
Optiongroup – набор переключаетлей(+ –)
Spinner – счетчик(+ –)
Timer – таймер(+ –)
1)….Конструкция define class не может быть вложенной, ее нельзя размещать в теле цикла или в конструкциях if else/
2)….Защищенные переменные могут напрямую использоваться операторами внутри определенного класса. В объявлении таких членов-переменных должно присутствовать слово Protected за которым перечисляются список соотв. Переменных. Примером защищенного члена-переменной может быть св-во, сохраняющее некоторого параметра внешней стреды в момент создания экземпляра класса. 3,4 Конструкции Procedure, Function объявляют методы класса, параметры, которые передаются в методе. при вызове можно либо объявлять с помощью Parameters перечислением, либо использовать ……………………Параметры, передаваемые в метод обрабатываются так же, как и параметры, передаваемые в ф-ию, определенную пользователем, т.е. они передаются по значению – это используется в двух случаях:1.set u defparams reference 2.@. Ф-ия Createobject возвращает ссылку на созданный в памяти объект.
Лекция 8.12.
Рассмотрим класс LIGHT моделирующий систему освещения комнаты. Этот класс имеет в составе метод включения и выключения системы освещения и свойство, значение которого соответствует текущему составу системы.
DEFINE CLASS LIGHT AS CUSTOM
STATUS=”OFF”
PROCEDURE TOGGLE
IF THIS.STATUS=”OFF”
THIS.STATUS=”ON”
ELSE
THIS.STATUS=”OFF”
ENDIF
ENDPROC
ENDDEFINE
Этот класс имеет одно свойство и один метод.
Добавить возможность включения не на полную мощность. Например сначала система переходит из состояния включения на полную мощность в состояние половинной мощности, а следующее обращение к этой команде возвращает ее в состояние половинной мощности.
DEFINE CLASS DIMMER AS LIGHT
INTENSITY=”FULL”
PROCEDURE DIMMID
IF THIS.STATUS=”OFF”
RETURN
ENDIF
THIS.INTENSITY= IIF(THIS.INTENSITY=”FULL”, “HALF”, ”FULL”)
WAIT WINDOW “LIGHT.ISNOW”+ THIS.INTENSITY
ENDPROC
ENDDEFINE
Класс DIMMER наследует все функциональные возможности класса LIGHT. Пусть необходимо наследовать те функциональные возможности, которые желательно сохранить в подклассе и заменить (т.е.
перегрузить) те возможности, которые желательно модифицировать. Перегрузка происходит в том случае, когда в определении подкласса появляется метод с тем же именем, что и базовый.
DEFINE CLASS OFFDIMMER AS DIMMER
INTENSITY=”FULL”
PROCEDURE DIMMIT
WAIT WINDOW “DIMMER IS DISABLED”
ENDPROC
ENDDEFINE
В этом случае метод DIMMIT перегружен.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.