第三部分:第13章编译单元 13.1.4支持限定 supports Qualification: supports interfaceName-comma-sep-list 支持限定 supportsQualification只能在接口定义 interface Definition和类实现 classimplementation中使用。 注意,如果接口有冲突的谓词,则它们就不能在一个支持限定内一起 使用。 如果谓词具有相同的名字和变元数,具有不同的原始接口,那就是冲 突的。 个谓词的原始接口是该谓词文字上被声明的谓词的接口,同时它反 对由支持限定间接声明的接口。因此如果同一接口在支持链中出现两次 或更多次,它也不会发生冲突。 2004.113 A|程序设计
第三部分:第13章 编译单元 2004.11.3 AI程序设计 11 13.1.4 支持限定 supportsQualification : supports interfaceName-comma-sep-list 支持限定 supportsQualification 只 能 在 接 口 定 义 interfaceDefinition 和类实现 classImplementation中使用。 注意,如果接口有冲突的谓词,则它们就不能在一个支持限定内一起 使用。 如果谓词具有相同的名字和变元数,具有不同的原始接口,那就是冲 突的。 一个谓词的原始接口是该谓词文字上被声明的谓词的接口,同时它反 对由支持限定间接声明的接口。因此如果同一接口在支持链中出现两次 或更多次,它也不会发生冲突
第三部分:第13章编译单元 13.1.4支持限定 举例 接口CC是非法的, 考虑下面的接口 nterface aaa 因为在aaa中所 predicates 支持的 insert/1 insert: (integer X procedure(o end interface 以aaa为源,而 interface bbb 在bbb中所支持 predicates 的 insert/1则是 insert: (integer X) procedure(j end interface 以bbb为源的 interface co supports aaa, bbb conflicting interfaces end interface 2004.113 A|程序设计
第三部分:第13章 编译单元 2004.11.3 AI程序设计 12 13.1.4 支持限定 举例 考虑下面的接口: interface aaa predicates insert : (integer X) procedure (i). end interface interface bbb predicates insert : (integer X) procedure (i). end interface interface cc supports aaa, bbb % conflicting interfaces end interface 接口cc是非法的, 因为在aaa中所 支持的insert/1 以aaa为源,而 在bbb中所支持 的insert/1则是 以bbb为源的
第三部分:第13章编译单元 13.2类声明 一个类声明( Class declarations)定义针对环境的类的外部特征:环境完 全可以看见和使用那些在类声明中提及的实体。我们说类的声明指定了类的公共 部分。 个类声明可以包含常量和论域的定义,以及谓词的声明。 在类声明中所提到的一切都属于该类,而不属于它所构造的对象。与该对象 相关的一切,必须在该类所构造的对象的构造类型中被声明。 特别值得注意的是,一个类声明并不描述任何与代码继承有关的内容。代码 继承是一个完全私有的事件,它只能在类实现中被声明。(这不像其它的面向对 象程序设计语言,它在实现中隐藏所有的细节) 2004.113 A|程序设计 13
第三部分:第13章 编译单元 2004.11.3 AI程序设计 13 13.2 类声明 一个类声明(Class Declarations)定义针对环境的类的外部特征:环境完 全可以看见和使用那些在类声明中提及的实体。我们说类的声明指定了类的公共 部分。 一个类声明可以包含常量和论域的定义,以及谓词的声明。 在类声明中所提到的一切都属于该类,而不属于它所构造的对象。与该对象 相关的一切,必须在该类所构造的对象的构造类型中被声明。 特别值得注意的是,一个类声明并不描述任何与代码继承有关的内容。代码 继承是一个完全私有的事件,它只能在类实现中被声明。(这不像其它的面向对 象程序设计语言,它在实现中隐藏所有的细节)
第三部分:第13章编译单元 13.2类声明 classDec/aration class className construction Type-opt scope Qualifications sections end class class№ame-opt constructionType interface Name className lowerCaseIdentifier 在类声明尾部的类名 class Name(如果存在的话)必须与其头部的类名 c| ass name一致 注意,可以使用与指定为该类的构造类型的接口名构造类型 constructionType相同的类名 class Name。写作: class interfaceAnd class Name interfaceAnd className 注意,类和接口可以声明域和常量,并且由于它们在同名的空间内结束,所 以一定不会发生冲突(因为它们只能以相同的接口名或类名限定)。 2004.113 A|程序设计 14
第三部分:第13章 编译单元 2004.11.3 AI程序设计 14 13.2 类声明 classDeclaration: class className constructionType-opt scopeQualifications sections end class className-opt constructionType : : interfaceName className : lowerCaseIdentifier 在类声明尾部的类名className(如果存在的话)必须与其头部的类名 className一致。 注意,可以使用与指定为该类的构造类型的接口名构造类型 constructionType相同的类名className。写作: class interfaceAndClassName : interfaceAndClassName 注意,类和接口可以声明域和常量,并且由于它们在同名的空间内结束,所 以一定不会发生冲突(因为它们只能以相同的接口名或类名限定)
第三部分:第13章编译单元 13.2类声明 作用域限定 scopeQualifications必须是开放限定 open Qualification 类的。 段 sections必须是下面的几种: 常量段 constants section 论域段 domains section 谓词段 predicates section 构造段 constructors section 条件段 conditionalsection 构造段 constructors sections只在该类声明为构造类型 constructionType时才是合法的 2004.113 A|程序设计 15
第三部分:第13章 编译单元 2004.11.3 AI程序设计 15 13.2 类声明 作用域限定scopeQualifications 必须是 开放限定openQualification 类的。 段sections必须是下面的几种: 常量段constantsSection 论域段domainsSection 谓词段predicatesSection 构造段constructorsSection 条件段conditionalSection 构造段 constructorsSections 只 在 该 类 声 明 为 构 造 类 型 constructionType时才是合法的