《面向对象语言》课程教学资源(PPT课件讲稿)第6章 类与对象

第二部分:第6章类与对象 第6章类与对象 本章主要介绍在 Visua| Prolog6中的面向对象的 概念,并将列举一些实例,以使读者尽快熟悉这个概念。 主要内容包括对象模型、类实体、模块、创建和访问对 象、接口对象类型、多重实现、包容多态性、 Support 类型扩展、 objec超类型、继承以及 Visua| Prolog5 与 Visual prolog6的差别等。 2004.11.3 A|程序设计
2004.11.3 AI程序设计 1 第二部分:第6章 类与对象 第6章 类与对象 本章主要介绍在Visual Prolog 6中的面向对象的 概念,并将列举一些实例,以使读者尽快熟悉这个概念。 主要内容包括对象模型、类实体、模块、创建和访问对 象、接口对象类型、多重实现、包容多态性、Support 类型扩展、Object超类型、继承以及Visual Prolog 5 与Visual Prolog 6的差别等

第二部分:第6章类与对象 第6章类与对象 6.1对象模型 6.2类实体 6.3模块 6.4创建和访问对象 6.5接口对象类型 6.6多重实现 6.7包容多态性 68 support类型扩展 6.9 objecti超类型 6.10继承 6.11对象体系的其他特点 6.12Ⅵ sual Prolog5与 Visual Prolog6的差异 本章小结与习题 2004.11.3 A|程序设计
2004.11.3 AI程序设计 2 第二部分:第6章 类与对象 第6章 类与对象 6.1 对象模型 6.2 类实体 6.3 模块 6.4 创建和访问对象 6.5 接口对象类型 6.6 多重实现 6.7 包容多态性 6.8 support类型扩展 6.9 object超类型 6.10 继承 6.11 对象体系的其他特点 6.12 Visual Prolog 5与Visual Prolog 6的差异 本章小结与习题

第二部分:第6章类与对象 6.1对象模型 ●在vip6中,对象模型的语义实体是对象、对象类型和类。有关这些 实体的概念是接口、类的声明及实现。接口是一组命名的谓词声明。 接口描述了对象之间的“界面”,并因此而得名,即它是从一个对 象之外进入到对象内部的入口。接口描述了对象类型。 ●考虑这个接口定义 interface person predicates getName:o-> string Name setName:(string Name) end intertace person ●这是一个名为" person"的接口的定义。在这里,所有" person"类的 对象都有两个谓词 getName"和" setName",其声明如上所示。 2004.11.3 A|程序设计
2004.11.3 AI程序设计 3 第二部分:第6章 类与对象 6.1 对象模型 ⚫ 在Vip6中,对象模型的语义实体是对象、对象类型和类。有关这些 实体的概念是接口、类的声明及实现。接口是一组命名的谓词声明。 接口描述了对象之间的“界面”,并因此而得名,即它是从一个对 象之外进入到对象内部的入口。接口描述了对象类型。 ⚫ 考虑这个接口定义: interface person predicates getName : () -> string Name. setName : (string Name). end interface person ⚫ 这是一个名为"person"的接口的定义。在这里,所有"person"类的 对象都有两个谓词"getName"和"setName",其声明如上所示

第二部分:第6章类与对象 6.1对象模型 ●接口只定义对象的类型;而对象由类产生。一个类包含类的声明和 类的实现。一个创建 person对象的类可以这样声明: class person_ class: person constructors new:(string Name end class person_ class ●这是一个名为 person_class的类的声明,可以由 person_class类 构造 person类型的对象。这个类有一个名为new的构造函数,给 neW-个Name就能创建一个对象(属于 person类型)。 2004.11.3 A|程序设计
2004.11.3 AI程序设计 4 第二部分:第6章 类与对象 6.1 对象模型 ⚫ 接口只定义对象的类型;而对象由类产生。一个类包含类的声明和 类的实现。一个创建person对象的类可以这样声明: class person_class : person constructors new : (string Name). end class person_class ⚫ 这是一个名为person_class 的类的声明,可以由person_class类 构造person类型的对象。这个类有一个名为new的构造函数,给 new一个Name就能创建一个对象(属于person类型)

第二部分:第6章类与对象 6.1对象模型 ●这个类还需要一个实现,如下面的代码所示: implement person_class facts name string clauses new(Name): -name:= Name clauses getName(= name clauses setName(Name): -name: Name end implement person_class 2004.11.3 A|程序设计
2004.11.3 AI程序设计 5 第二部分:第6章 类与对象 6.1 对象模型 ⚫ 这个类还需要一个实现,如下面的代码所示: implement person_class facts name : string. clauses new(Name) :- name := Name. clauses getName() = name. clauses setName(Name) :- name := Name. end implement person_class

第二部分:第6章类与对象 6.1对象模型 ●这是名为 person_ class的类实现。这个实现必须为诸如neW、 getName和 setName的每个公共谓词和构造函数提供定义。这个 实现也可以局部声明和定义附加实体,这种实体仅在这个实现中可 见。在这个例子中,这个类声明了一个名为name的事实变量以存储 人的名字。 ●对于事实变量name,每个对象都有自己的实例。上面子句中的代码 都能引用具有事实变量的那个特例。我们把这种谓词称为对象谓词, 把这个事实变量称为对象事实。 2004.11.3 A|程序设计 6
2004.11.3 AI程序设计 6 第二部分:第6章 类与对象 6.1 对象模型 ⚫ 这是名为person_class的类实现。这个实现必须为诸如new、 getName和setName的每个公共谓词和构造函数提供定义。这个 实现也可以局部声明和定义附加实体,这种实体仅在这个实现中可 见。在这个例子中,这个类声明了一个名为name的事实变量以存储 人的名字。 ⚫ 对于事实变量name,每个对象都有自己的实例。上面子句中的代码 都能引用具有事实变量的那个特例。我们把这种谓词称为对象谓词, 把这个事实变量称为对象事实

令第二部分:第6童类与对象 6.2类实体 ●一个类也可以有为这个类的所有对象共享的实体。我们举个例子, 将上面的例子扩展,添加代码来为 person_ class类创建的对象个数 计数。这个数字会随着每个对象的创建而增加,且永不减少。 ●我们用一个谓词,即谓词 getcreateCount,将类声明予以扩展,这 个谓词用于返回当前计数值: class person_class: person constructors new:(string Name) predicates getcreated Count:->unsigned Count. end class person class 2004.11.3 A|程序设计
2004.11.3 AI程序设计 7 第二部分:第6章 类与对象 6.2 类实体 ⚫ 一个类也可以有为这个类的所有对象共享的实体。我们举个例子, 将上面的例子扩展,添加代码来为person_class类创建的对象个数 计数。这个数字会随着每个对象的创建而增加,且永不减少。 ⚫ 我们用一个谓词,即谓词getCreateCount,将类声明予以扩展,这 个谓词用于返回当前计数值: class person_class : person constructors new : (string Name). predicates getCreatedCount : () -> unsigned Count. end class person_class

令第二部分:第6童类与对象 6.2类实体 ●注意,公共可访问类谓词在类声明中进行声明,而公共可访问对象 谓词在接口中声明。这个规则没有例外:不可能在类声明中声明对 象谓词,也不可能在一个接口中声明类谓词。 ●这个谓词需要在类实现中定义。此外,还需要一个事实来存储计数 值。这个事实必须是一个类事实,即它为所有对象所共享。在一个 类的实现里,可以声明并定义私有对象实体以及私有类实体。声明 类实体时,在相关的声明段前加关键词 Iclass。 2004.11.3 A|程序设计 8
2004.11.3 AI程序设计 8 第二部分:第6章 类与对象 6.2 类实体 ⚫ 注意,公共可访问类谓词在类声明中进行声明,而公共可访问对象 谓词在接口中声明。这个规则没有例外:不可能在类声明中声明对 象谓词,也不可能在一个接口中声明类谓词。 ⚫ 这个谓词需要在类实现中定义。此外,还需要一个事实来存储计数 值。这个事实必须是一个类事实,即它为所有对象所共享。在一个 类的实现里,可以声明并定义私有对象实体以及私有类实体。声明 类实体时,在相关的声明段前加关键词class

令第二部分:第6童类与对象 6.2类实体 ●注意,我们的 person_class类的实现如下: implement person class class facts ●在本例中,我们添加了一个类 created Count: unsigned: =0 事实 create count,并将其初始 clauses 化为零。并且为谓词 getCreated Count(= created Count getcreate Count添加了一个子 facts 句 用于返回事实 name: string created count的当前值。最后, clauses new(Name) 我们在构造函数中添加代码,使 name:= Name 变量 created Count递增。 created Count created Count 1 ●注意,在构造函数中,有两处 clauses getName(= name 赋值形式相同,但一个是更新对 象状态的,另一个是更新类的状 clauses setName (Name): -name:= Name 态的 end implement person_ class 2004.11.3 A|程序设计
2004.11.3 AI程序设计 9 第二部分:第6章 类与对象 6.2 类实体 ⚫ 注意,我们的person_class类的实现如下: implement person_class class facts createdCount : unsigned := 0. clauses getCreatedCount() = createdCount. facts name : string. clauses new(Name) :- name := Name, createdCount := createdCount+1. clauses getName() = name. clauses setName(Name) :- name := Name. end implement person_class ⚫在本例中,我们添加了一个类 事实createCount,并将其初始 化为零 。 并且为谓词 getCreateCount添加了一个子 句 , 用 于 返 回 事 实 createdCount的当前值。最后, 我们在构造函数中添加代码,使 变量createdCount递增。 ⚫注意,在构造函数中,有两处 赋值形式相同,但一个是更新对 象状态的,另一个是更新类的状 态的

令第二部分:第6童类与对象 6.3模块 ●类的一种特殊变体根本不能产生对象,所以就它们所起的作用来讲, 应称之为“模块”而不是类。 class io no type here predicates write:(string ToWrite) write: (unsigned ToWrite) end class io ●这样一个不能创建对象的类很明显是不能包含对象实体的,也不可 能有构造函数。 2004.11.3 A|程序设计 10
2004.11.3 AI程序设计 10 第二部分:第6章 类与对象 6.3 模块 ⚫ 类的一种特殊变体根本不能产生对象,所以就它们所起的作用来讲, 应称之为“模块”而不是类。 class io % no type here predicates write : (string ToWrite). write : (unsigned ToWrite). end class io ⚫ 这样一个不能创建对象的类很明显是不能包含对象实体的,也不可 能有构造函数
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《面向对象语言》课程教学资源(PPT课件讲稿)第5章 Prolog基础.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第4章 Visual Prolog概述.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第3章 A编程基础.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第2章 知识表示方法.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第1章 人工智能概述.ppt
- 《面向对象语言》课程教学资源(讲稿)表14-3内部谓词简述.doc
- 《面向对象语言》课程教学资源(讲稿)class predicates.doc
- 《面向对象语言》课程教学资源(PPT课件讲稿)主目录.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)附录 术语表.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第15章 与其他编程语言接口.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第14章 内部论域、谓词和常量.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第13章 编译单元.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第12章 Visual Prolog程序元素.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第11章 Visual Prolog数据元素.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第10章 Visual Prolog语言元素.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第9章 编码风格.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第8章 编写CGI程序.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第7章 Visual Prolog编程.ppt
- 同济大学计算机系:《小波分析与应用》讲义(宣国荣).ppt
- 《网络工程师模拟试卷》(附答案).doc
- 北京大学计算机系:《Java》课程讲义(PPT课件)第一章 Java的类.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第七章 Java线程(多线程).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第三章 Java事件(事件处理).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第九章 分布式对象技术体系(1/2).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第九章 分布式对象技术体系(2/2).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第二章 Java小程序小应用.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第五章 Java显示AWT(构成用户界面的窗口环境).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第八章 Java网络功能.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第六章 Java流(数据流的运用).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第四章 Java异常处理.ppt
- 《CAXA2000电子图板教程》ppt电子课件.ppt
- 《电子商务的技术基础》第四章(4-1) 国际互联网.ppt
- 北京邮电大学自动化学院:《数据结构》第一章 绪论(杨福兴).ppt
- 北京邮电大学自动化学院:《数据结构》第一章(1-1)什么是数据结构.ppt
- 北京邮电大学自动化学院:《数据结构》第七章 图.ppt
- 北京邮电大学自动化学院:《数据结构》第三章 栈和队列.ppt
- 北京邮电大学自动化学院:《数据结构》第九章 排序.ppt
- 北京邮电大学自动化学院:《数据结构》第二章 线性表.ppt
- 北京邮电大学自动化学院:《数据结构》第五章 数组和广义表.ppt
- 北京邮电大学自动化学院:《数据结构》第八章 查找.ppt