• 其他特性 CLIPS还有许多的多字段槽函数,如下表所列:

     

    函数                               含义...
  • 重要特性 槽的集合引用两种类型字段之一,这两种类型是:(1)单字段,(2)多字段。术语cardinality指代一个集合。有界单字段槽仅包含一个字段,有界多字段槽可包含零或多个字段。每个有界单字段槽和多字段槽包含一个值,然而,一个多字段值也许包含多个字段。举个例子,(a b c)是一个单一的多字段值,该字段值包含三个字段。空字符串“”是一个单字段值,就像“a b c”一样。如此相反,一个无界槽没有值。

    与单、多字段变量相似,...
  • 第十章 奇妙的槽面 如果你想拥有类,那么就像是和老朋友一样,去互动,去尝试对话。

     

    在本章中,你将学到许多关于槽和利用一些槽面 (facets)来指定它们属性的方法。就像槽用来描述实例一样,槽面用来描述槽。槽面的使用是非常好的软件工程技术,它对于CLIPS而言避免了非法值的插入,从而降低了运行时错误或崩溃的可能性。有许多种槽面用来指定槽,总结在下面的表格中。

    槽面名

    ...
  • 类程式 现在,你已经学习了槽和实例,下面让我们来熟悉类程式(class etiquette)。这里的术语——规则,指的是一套做事情的指导方针。

    与标准的程序设计相比,OOP范式是类导向(class oriented)的。每个对象都与类有内在的联系,这些类是类等级的一部分。OOP程序员关注的是所有的类或类的结构层次(class architecture)和对象之间消息的传递,而不是首先考虑执行。因此,在普通的程序设计语言中,执行是显式表示的,而在OO...
  • 消息函数的作用 (send)函数是OOP的核心,因为它是对象间关联的唯一合适途径。通过对象封装原理,一个对象可以通过发送消息来获取另一对象的数据。

    举个例子,如果某人想知道你早餐吃了些什么,他们通常会问你,比如发一个信息给你。一个不太礼貌的回应或许是突然张开你的嘴巴,耸动一下你的喉结。如果对象的封装原理不起作用,任何对象对于其他对象的私有部分将毫无意义,这是个潜在的灾难性后果。

    (send)函数的一个非常有用的应用是用来打印对象的信息。到目前为止...
  • 删除实例尽管一个(reset)命令可以删除除了[initial-instance]外所有的实例,同时也可以用(definstances)命令来创建新的实例。如果你想永久的删除一个实例,那么你可以试试(unmake-instance)函数,它可以删除一个或所有的实例,删除时需指定参数以确定哪条该被删除,如果删除所有的,则用“*”。下面即为(unmake-instance)命令的例子: CLIPS>(unmake-instance *) ;删除所有的实例 TRUE CLIP...

  • 第九章 富有意义的消息取悦你上司的好处总是比取悦你的下属要多。---鲍文

    在本章中,你将学到许多关于类和对象调用实例的方法。同时,你也将学到怎样利用槽值指定类的属性,怎样发送消息到对象。

    OOP特性在第一章中,我们已经学习了继承的基本观点。OOP中的继承之所以如此重要,缘自于:继承允许了定制软件(customized software)的最简结构。对于“定制软件”,我们指的并不是胡乱拼凑起来的软件,而是,它接近于带有...

  • 有一个抽象类(abstract class)专门为继承设计。抽象类USER不能有直属实例(direct instance)为之定义,而是作为实例直接定义给类。除了类信息,类的优先继承也被表示。这是一个顺序表(ordered list),从顺序表左到右表示了实例的类的优先等级。继承优先列出了所有类到根类OBJECT的超类。同时,你也可以看到直接超类信息指示了这些超类为一个类的上部链接,同时继承优先表显示了所有的超类。

    即使一个类没有直接实例,如果它的子类有实例,则它也有直接实...
  • 查看 CLIPS提供了许多查看类信息的函数,如谓语函数,用来检测一个类是否为另一个类的超类或子类。

    如果<class1>为<class2>超类,superclassp函数返回TRUE,否则返回FALSE。如果<class1>为<class2>的子类,subclassp函数返回TRUR,否则返回FALSE。两函数的通用格式为:

     

    (function <cla...

  • 非法继承类 现在你已经对类有了初步的认识,让我们在图表1.1的UPPIE中增加一些其他的类,以使的例子更具有实际意义。通过增加低层类的开发类型正是OOP的方式,由最一般到最特殊的方式增加类。

    图1.5所示的是非合法YUKKIE的继承图表。为了简便,这里没有标出OBJECT和USER类。图1.5是一个树(tree)形分级系统,每个节点有唯一的父节点。



    一个常见的树形组织结构例子是经常用在公司中,由总裁,副总裁,部门领导,...