第三部分:第10章Ⅵ sual Prolog语言元素 第10章isua| Prolog语言元素 本章介绍Ⅵsua| Prolog6程序设计语言的语法和语义。 Visual Prolog是基于逻辑程序设计语言 Prolog的一种强类型的面向对象的程序 设计语言。一个 Visual Prolog程序包括一个目标、大量的接口声明和类 的实现程序。 接口、类声明和类实现包括 Prolog实体的定义和声明,即 论域 常量 谓词 事实数据库 Visual Prolog程序的实际代码中的谓词定义由谓词声明和子句定义 来声明。 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 1 第10章 Visual Prolog语言元素 本章介绍Visual Prolog 6程序设计语言的语法和语义。Visual Prolog是基于逻辑程序设计语言Prolog的一种强类型的面向对象的程序 设计语言。一个Visual Prolog程序包括一个目标、大量的接口声明和类 的实现程序。 接口、类声明和类实现包括Prolog实体的定义和声明,即 • 论域 • 常量 • 谓词 • 事实数据库 Visual Prolog程序的实际代码中的谓词定义由谓词声明和子句定义 来声明
第三部分:第10章Ⅵ sual Prolog语言元素 第10章isua| Prolog语言元素 10.1类型 10.2对象系统 10.3作用域和可视性 10.4词法结构 本章小结 本章习题 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 2 第10章 Visual Prolog语言元素 10.1 类型 10.2 对象系统 10.3 作用域和可视性 10.4 词法结构 本章小结 本章习题
人第三部分;第10章 sual Prolog语言元素 10.1类型 Visua| Prolog的类型(Type)分为对象类型和数值类型。对象类型是可 变的,而数值类型是不可变的。 对象类型由接口( interface)进行定义。 数值类型包括:数值型、字符串型、字符型以及复合论域。复合论域也可 以看作代数类型数据。复合论域的简化形式是结构和枚举类型,而更多的复杂 形式是树型结构。 此外, Visua| Prolog还有一种特殊类型,叫做引用论域,它可以由任意其 它类型派生而来。引用类型与 Prolog执行模型或语义密切相关。在下面将详细 进行介绍。 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 3 10.1 类型 Visual Prolog的类型(Type)分为对象类型和数值类型。对象类型是可 变的,而数值类型是不可变的。 对象类型由接口(interface)进行定义。 数值类型包括:数值型、字符串型、字符型以及复合论域。复合论域也可 以看作代数类型数据。复合论域的简化形式是结构和枚举类型,而更多的复杂 形式是树型结构。 此外,Visual Prolog还有一种特殊类型,叫做引用论域,它可以由任意其 它类型派生而来。引用类型与Prolog执行模型或语义密切相关 。在下面将详细 进行介绍
人第三部分;第10章 sual Prolog语言元素 10.1类型 类型以子类型层次结构进行组织。子类型用来引入包容多态性:希望某种类 型的一个值能够同样接受任意的一个子类型值的任何上下文。或者我们倒过来说, 在需要时把一定类型的值自动地转化为任意超类型,这样可以不需要显式的类型 转换而访问该超级类型。 子类型可源于除代数数据类型外的其它任意数值类型。源于代数数据类型的 类型是同义类型而不是子类型,也就是说它们是同一类型而不是一子类型。 子类型的概念与子集概念密切相关。但是特别值得注意的是,尽管一个类型 是另一类型子集的精确描述,但它并不需要成为一个子类型。一个类型只在特别 声明时才是另一类型的子类型。例如 domains t1是一个整型变量,取值从1到17(包括端点在内) 同样,t2取值从5到13,但是t2不是t1的子类型。另 t2=[5.13].、外,t3(包含与t2-样的取值则是t的子类型,因 t3=t1[5.13].为这是声明了的。 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 4 10.1 类型 类型以子类型层次结构进行组织。子类型用来引入包容多态性:希望某种类 型的一个值能够同样接受任意的一个子类型值的任何上下文。或者我们倒过来说, 在需要时把一定类型的值自动地转化为任意超类型,这样可以不需要显式的类型 转换而访问该超级类型。 子类型可源于除代数数据类型外的其它任意数值类型。源于代数数据类型的 类型是同义类型而不是子类型,也就是说它们是同一类型而不是一子类型。 子类型的概念与子集概念密切相关。但是特别值得注意的是,尽管一个类型 是另一类型子集的精确描述,但它并不需要成为一个子类型。一个类型只在特别 声明时才是另一类型的子类型。例如 domains t1 = [1..17]. t2 = [5..13]. t3 = t1 [5..13]. t1是一个整型变量,取值从1到17(包括端点在内)。 同样,t2取值从5到13,但是t2不是t1的子类型。另 外,t3 (包含与t2一样的取值)则是t1的子类型,因 为这是声明了的
人第三部分;第10章 sual Prolog语言元素 10.1类型 语言中包含了少数隐含的子类关系,但其它情况下子类 关系都是在类型定义中具体规定的。 对象类型采用子类型层次结构组织,该结构是源于预定 义对象类型的对象的,也就是说,任意对象类型是一个对 象的子类型。对象类型用接口相互支持的方式来规定。如 果一个对象是支持某一其它接口的接口或对象类型,那么 该对象也具有那个类型并且能够不受限制地作为这样的对 象应用。 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 5 10.1 类型 语言中包含了少数隐含的子类关系,但其它情况下子类 关系都是在类型定义中具体规定的。 对象类型采用子类型层次结构组织,该结构是源于预定 义对象类型的对象的,也就是说,任意对象类型是一个对 象的子类型。对象类型用接口相互支持的方式来规定。如 果一个对象是支持某一其它接口的接口或对象类型,那么 该对象也具有那个类型并且能够不受限制地作为这样的对 象应用