Pzl-Компонента
Любой класс, порождающий объекты, с незначительными ограничениями может быть преобразован в pzl-компоненту.
Напомним, что класс порождает объекты, если он имеет интерфейс, что в декларации класса выглядит как (имена класса и интерфейса условные)
class компонентныйКласс : компонентныйИнтерфейс end class
Для того, чтобы быть pzl-компонентой, класс должен удовлетворять следующим условиям:
- Имя интерфейса и имя класса должны различаться
- Декларация класса должна содержать конструктор new(object ИспользуемыйОбъект)
- Интерфейс класса должнен поддерживать интерфейс pzlComponent
- Интерфейс класса должен включать декларацию константы сomponentDescriptor_C с типом pzlDomains::pzlComponentInfo_D
- Имплементация класса должна наследовать от класса pzlComponent
- Пакетный файл деклараций класса должен включать файл "System\Packs\pzlcomponent\pzlcomponent.ph"
Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям.
Декларация класса
class ComponentExample:iComponentExample constructors new:(object UsingObject). 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
#requires ... #include @"System\Packs\pzlcomponent\pzlcomponent.ph" #include @"pfc\core.ph"