1975年Minsky提出了框架,它基本上等同于C语言里的结构体,是专家系统的面向对象编程的应用。
框架被定义为槽(slot)的集合,槽等同于对象的属性。一般说来,槽可以包含下列信息:
1、框架名;
2、和其它框架的关系;
3、槽值;
4、默认槽值;
5、槽的取值范围;
6、处理过程。通常有两种处理过程被附加到槽上:WHEN CHANGED和WHEN NEEDED。这样的处理过程被称为demon。
基于框架的专家系统还通过facet的应用对槽-值结构体进行扩展。facet是提供关于框架属性的扩展知识的一种方法。一般来说,基于框架的专家系统允许我们向属性附加"值"、"提示"、和"推理"等facet。值facet指定属性的默认和初始值。提示facet让终端用户可以在和专家系统的会话里在线输入属性值,推理facet让我们可以在特定属性的值改变时停止推理过程。
根据问题的本质将其分解成框架,进而分解成槽和facet。框架既可以表示类,也可以表示对象。通常对象直接有三种关系:泛化(a-kind-of或is-a)、聚合和关联。
继承的缺点在于,基于框架的系统不能区分本质属性(该类必须具备的属性)和偶然属性(该类所有实例刚好都具有的属性)。由于在继承层次的任何地方都可以覆写属性,在多重继承时并不能表示把几个类组合在一起的概念。
多数基于框架的专家系统里,也会使用规则,这些规则通常使用模式匹配语句。规则在方法调用时触发,比如WHEN CHANGED。
阅读(6113) | 评论(0) | 转发(0) |