Pzl-Компонента
Любой класс, порождающий объекты, с незначительными ограничениями может быть преобразован в pzl-компоненту.
Напомним, что класс порождает объекты, если он имеет интерфейс, что в декларации класса выглядит как (имена класса и интерфейса условные)
class компонентныйКласс : компонентныйИнтерфейс end class
Для того, чтобы быть pzl-компонентой, класс должен удовлетворять следующим условиям:
- Имя интерфейса и имя класса должны различаться
- Декларация класса должна содержать конструктор new(object ИспользуемыйОбъект)
- Интерфес класса должнен поддерживать интерфейс pzlComponent
- Интерфейс класса должен включать декларацию константы сomponentDescriptor_C с типом pzlDomains::pzlComponentInfo_D
- Имплементация класса должна наследовать от класса pzlComponent
- Пакетный файл деклараций класса должен включать файл "System\Packs\pzlcomponent\pzlcomponent.ph"
Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям.
Декларация класса
class ComponentExample:iComponentExample end class
Интерфейс должен содержать квалификатор "supports pzlComponent" и декларацию константы componentDescriptor_C типа pzlDomains::pzlComponentInfo_D
interface iComponentExample supports pzlComponent open core constants componentDescriptor_C:pzlDomains::pzlComponentInfo_D=pzlDomains::pzlComponentInfo ( componentAlias_C, componentID_C, componentRunAble_C, componentMetaInfo_C ). componentID_C:pzlDomains::entityUID_D=pzlDomains::str("ComponentExample"). componentAlias_C="ПримерКомпоненты". componentRunAble_C=b_True. componentMetaInfo_C:namedValue_List=[]. predicates show:(). end interface iComponentExample
Имплементация класса должна содержать директиву наследования "inherits pzlComponent"
implement componentExample inherits pzlComponent clauses new(UsingObject):- pzlComponent::new(), ... clauses show():- ... end implement componentExample
Файл деклараций пакета ComponentExample.PH должен содержать директиву включения файла PzlComponent.ph </vip>
- requires ...
- include @"System\Packs\pzlcomponent\pzlcomponent.ph"
- include @"pfc\core.ph"
</vip>