Pzl-Компонента: различия между версиями

Материал из wikiru.visual-prolog.com

Строка 2: Строка 2:
Любой класс, порождающий объекты (имеющий интерфейс), может быть признан компонентой, если
Любой класс, порождающий объекты (имеющий интерфейс), может быть признан компонентой, если
#Имя интерфейса и имя класса различаются;
#Имя интерфейса и имя класса различаются;
#Декларация класса содержит единственный конструктор new(object ИспользуемыйОбъект);
#Декларация класса содержит единственный конструктор ''new(object ИспользуемыйОбъект)'';
#Интерфейс класса поддерживает интерфейс pzlComponent;
#Интерфейс класса поддерживает интерфейс ''pzlComponent'';
#Интерфейс класса включает декларацию константы сomponentDescriptor_C с типом pzlDomains::pzlComponentInfo_D;
#Интерфейс класса включает декларацию константы ''сomponentDescriptor_C'' с типом ''pzlDomains::pzlComponentInfo_D'';
#Имплементация класса наследует от класса pzlComponent;
#Имплементация класса наследует от класса ''pzlComponent'';
#Пакетный файл деклараций класса (.PH) включает файл "System\Packs\pzlcomponent\pzlcomponent.ph".
#Пакетный файл деклараций класса (.PH) включает файл ''"System\Packs\pzlcomponent\pzlcomponent.ph".''
Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям.
Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям.



Версия 11:05, 16 октября 2007

Необходимые условия признания класса компонентой

Любой класс, порождающий объекты (имеющий интерфейс), может быть признан компонентой, если

  1. Имя интерфейса и имя класса различаются;
  2. Декларация класса содержит единственный конструктор new(object ИспользуемыйОбъект);
  3. Интерфейс класса поддерживает интерфейс pzlComponent;
  4. Интерфейс класса включает декларацию константы сomponentDescriptor_C с типом pzlDomains::pzlComponentInfo_D;
  5. Имплементация класса наследует от класса pzlComponent;
  6. Пакетный файл деклараций класса (.PH) включает файл "System\Packs\pzlcomponent\pzlcomponent.ph".

Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям.

Декларация класса содержит коструктор new(...) и имя интерфейса отличается от имени класса. При этом класс содержит единственный конструктор new:(object UsingObject)

class сomponentExample: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 и содержит клаузу для конструктора new(UsingObject)

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"