Базы данных. Уровни данных. Нормальные формы схем отношений. Аксиома дополнения (добавления). Способы размещения с применением Хэш-функции, страница 24

Экземпляр класса создается с помощью ф-ии 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 перегружен.