Pzl-Компонента: различия между версиями
Материал из wikiru.visual-prolog.com
Строка 1: | Строка 1: | ||
Любой класс, порождающий объекты | =Необходимые условия признания класса компонентой= | ||
Любой класс, порождающий объекты (имеющий интерфейс), может быть признан компонентой, если | |||
#Имя интерфейса и имя класса различаются; | |||
#Декларация класса содержит конструктор new(object ИспользуемыйОбъект); | |||
#Интерфейс класса поддерживает интерфейс pzlComponent; | |||
#Интерфейс класса включает декларацию константы сomponentDescriptor_C с типом pzlDomains::pzlComponentInfo_D; | |||
#Имплементация класса наследует от класса pzlComponent; | |||
#Пакетный файл деклараций класса включает файл "System\Packs\pzlcomponent\pzlcomponent.ph". | |||
#Имя интерфейса и имя класса | |||
#Декларация класса | |||
#Интерфейс класса | |||
#Интерфейс класса | |||
#Имплементация класса | |||
#Пакетный файл деклараций класса | |||
Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям. | Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям. | ||
'''Декларация класса''' | '''Декларация класса''' содержит коструктор new(...) и имя интерфейса отличается от имени класса | ||
<vip> | <vip> | ||
class | class сomponentExample:iComponentExample | ||
constructors | constructors | ||
Строка 25: | Строка 18: | ||
end class | end class | ||
</vip> | </vip> | ||
'''Интерфейс класса''' | '''Интерфейс класса''' содержит квалификатор '''''supports pzlComponent''''' и декларацию константы '''''componentDescriptor_C''''' типа '''''pzlDomains::pzlComponentInfo_D''''' | ||
<vip> | <vip> | ||
interface iComponentExample | interface iComponentExample | ||
Строка 49: | Строка 42: | ||
end interface iComponentExample | end interface iComponentExample | ||
</vip> | </vip> | ||
'''Имплементация класса''' | '''Имплементация класса''' содержать директиву наследования '''''inherits pzlComponent''''' и содержит клаузу для конструктора '''''new(UsingObject)''''' | ||
<vip> | <vip> | ||
implement componentExample | implement componentExample | ||
Строка 64: | Строка 57: | ||
end implement componentExample | end implement componentExample | ||
</vip> | </vip> | ||
'''Файл деклараций пакета''' ComponentExample.PH | '''Файл деклараций пакета''' ComponentExample.PH содержит директиву включения файла '''''PzlComponent.ph''''' | ||
<vip> | <vip> | ||
#requires ... | #requires ... |
Версия 14:56, 10 октября 2007
Необходимые условия признания класса компонентой
Любой класс, порождающий объекты (имеющий интерфейс), может быть признан компонентой, если
- Имя интерфейса и имя класса различаются;
- Декларация класса содержит конструктор new(object ИспользуемыйОбъект);
- Интерфейс класса поддерживает интерфейс pzlComponent;
- Интерфейс класса включает декларацию константы сomponentDescriptor_C с типом pzlDomains::pzlComponentInfo_D;
- Имплементация класса наследует от класса pzlComponent;
- Пакетный файл деклараций класса включает файл "System\Packs\pzlcomponent\pzlcomponent.ph".
Ниже приведены фрагменты различных составляющих компоненты, удовлетворяющей перечисленным выше условиям.
Декларация класса содержит коструктор new(...) и имя интерфейса отличается от имени класса
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"