人第三部分;第10章 sual Prolog语言元素 10.2对象系统 Visua| Prolog的对象系统( object systen) 包括外部视图( Externa|VieW)和内部视图 ( Interna|VieW)。 2004.11.3 A|程序设计 6
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 6 10.2 对象系统 Visual Prolog的对象系统(object system), 包括外部视图(External View)和内部视图 (Internal View)
人第三部分;第10章 sual Prolog语言元素 10.2.1外部视图 Visua| Prolog的类的概念基于以下3项语义实体: ·对象( object):一个对象是指若干命名对象成员谓词和一组支持 接口的集合。实际上对象也有一个状态,这个状态只能通过成员谓 词来改变或观察。我们称对象中的这种状态为封装。 ·接口( interface):一个接口是一种对象类型。它有一个名字且定 义了一组命名对象谓词。 类(C|ass):一个类是一个命名的对象工厂。它可以创建与某一接 口相对应的对象。任何对象都由类创建。 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 7 10.2.1 外部视图 Visual Prolog的类的概念基于以下3项语义实体: • 对象(object):一个对象是指若干命名对象成员谓词和一组支持 接口的集合。实际上对象也有一个状态,这个状态只能通过成员谓 词来改变或观察。我们称对象中的这种状态为封装。 • 接口(interface):一个接口是一种对象类型。它有一个名字且定 义了一组命名对象谓词。 • 类(Class):一个类是一个命名的对象工厂。它可以创建与某一接 口相对应的对象。任何对象都由类创建
人第三部分;第10章 sual Prolog语言元素 10.2.1外部视图 由一特定类创建的所有对象共享统一的对象成员谓词定义,但是每 个对象又有其自身的状态。这样,对象成员谓词实际上是类的一部分, 然而对象的状态却是对象自身的一部分。 个类也包括另外一系列命名的谓词及一个封装的状态,分别作为 类的成员和类的状态。类的成员和类的状态存在于每一个基类中,然而 对象成员和对象状态存在于每一个基对象中。类的状态既可以通过类的 成员访问,也可以通过对象成员访问。 注意,由一个类定义的一系列对象成员谓词是该类的接口中声明的 谓词的联合。这特别意味着,如果不同的两个接口中声明了同一谓词, 那么该类就只能为该谓词提供惟一的定义。因此,该类只有在含义清楚 的时候才有效,也就是说,在这两个继承性的谓词的预定语义相同的情 况下,该类才合理。 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 8 10.2.1 外部视图 由一特定类创建的所有对象共享统一的对象成员谓词定义,但是每 一个对象又有其自身的状态。这样,对象成员谓词实际上是类的一部分, 然而对象的状态却是对象自身的一部分。 一个类也包括另外一系列命名的谓词及一个封装的状态,分别作为 类的成员和类的状态。类的成员和类的状态存在于每一个基类中,然而 对象成员和对象状态存在于每一个基对象中。类的状态既可以通过类的 成员访问,也可以通过对象成员访问。 注意,由一个类定义的一系列对象成员谓词是该类的接口中声明的 谓词的联合。这特别意味着,如果不同的两个接口中声明了同一谓词, 那么该类就只能为该谓词提供惟一的定义。因此,该类只有在含义清楚 的时候才有效,也就是说,在这两个继承性的谓词的预定语义相同的情 况下,该类才合理
人第三部分;第10章 sual Prolog语言元素 10.2.1外部视图 同一性( Identity):每个对象都是惟一的:对象有可变的状态, 并且由于对象的状态可以通过它们的成员谓词进行观测,因此一个对象 只与自身完全相同。也就是说,即使两个对象的状态完全相同,对象也 是不同的,因为改变一个对象的状态并不能改变另一个对象的状态。 不能直接访问对象的状态,我们通常通过该对象的引用访问对象状 态,同时一个对象是与自身同一的。同一对象可以有许多的引用。这样, 就可以通过许多不同的引用访问同一对象。 类和引用也是惟一的:它们通过自身的名字进行识别。两个引用或 类在同一程序中不能有相同的名字。 实质上,对象、类或接口的结构相同并不意味着它们就一样 2004.11.3 A|程序设计
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 9 10.2.1 外部视图 同一性(Identity): 每个对象都是惟一的:对象有可变的状态, 并且由于对象的状态可以通过它们的成员谓词进行观测,因此一个对象 只与自身完全相同。也就是说,即使两个对象的状态完全相同,对象也 是不同的,因为改变一个对象的状态并不能改变另一个对象的状态。 不能直接访问对象的状态,我们通常通过该对象的引用访问对象状 态,同时一个对象是与自身同一的。同一对象可以有许多的引用。这样, 就可以通过许多不同的引用访问同一对象。 类和引用也是惟一的:它们通过自身的名字进行识别。两个引用或 类在同一程序中不能有相同的名字。 实质上,对象、类或接口的结构相同并不意味着它们就一样
人第三部分;第10章 sual Prolog语言元素 10.2.2内部视图 前面一节从外部行为的角度介绍了对象、类和接口,本节将从内部问题的角 度展开这些描述。 类的程序语义:这些内部问题更具有程序语义上的自然属性。可以考虑将类 分为声明部分和实现部分。 从程序语义上的角度看,类是核心项,类中包含了代码。 接口主要具有静态价值。事实上,接口只存在于程序的正文描述中,并没有 直接的运行描述。另一方面,对象则主要具有动态价值。在程序中对象并不能 直接可见,它只有在程序真正运行时才存在 一个类由声明和实现两部分组成。声明部分声明了类的公共存取部分以及产 生的对象。实现部分则定义了类声明中声明的实体。谓词的基本实现自然是子 句,但是谓词也可以借助于继承进行定义,或由外部程序库解决。 2004.11.3 A|程序设计 10
第三部分:第10章 Visual Prolog语言元素 2004.11.3 AI程序设计 10 10.2.2 内部视图 前面一节从外部行为的角度介绍了对象、类和接口,本节将从内部问题的角 度展开这些描述。 类的程序语义:这些内部问题更具有程序语义上的自然属性。可以考虑将类 分为声明部分和实现部分。 从程序语义上的角度看,类是核心项,类中包含了代码。 接口主要具有静态价值。事实上,接口只存在于程序的正文描述中,并没有 直接的运行描述。另一方面,对象则主要具有动态价值。在程序中对象并不能 直接可见,它只有在程序真正运行时才存在。 一个类由声明和实现两部分组成。声明部分声明了类的公共存取部分以及产 生的对象。实现部分则定义了类声明中声明的实体。谓词的基本实现自然是子 句,但是谓词也可以借助于继承进行定义,或由外部程序库解决