动态模型编程本身没有规定如何构建一个事物,即一个模型是怎么创建出来的,用什么方法编辑它,动态模型编程本身没有规定。但是没有一个清晰的构建事物的方法也不行,因为这会让我们束手无措,不知道该干什么,所以我们需要一个简单清晰的基本的构建事物的方法。本文则将说明XWorker的构建事物的基本方法和原理。
XWorker的构建事物的基本方法是用一个事物的描述者来编辑一个事物,即把一个事物作为描述者,然后通过描述者动态生成表单界面来编辑事物。
在XWorker中如何具体编辑事物请参看编辑器的文档,这里就不详细说明了。
在这里我们需要给出XWorker的构建事物方法的完备性证明,因为如果这种方法是完备的,那么就可以说明用这个方法可以编辑出任何你想要的事物模型,从而避免编辑不出事物而可能要重启系统的尴尬,同时也说明它可以是一个构建事物的基本方法。
在这里我们要证明系统最初只存在有限个模型的情况下,就可以通过这些模型直接或者间接的构造出其它任何模型来。实际上我们要证明系统只要存在一个模型就可以直接或者间接的构造出其它任意模型了,这个模型我们称为元事物。
在这里我们提出一个构建模型的方法,模型可以简单的理解为XML,所以我们使用XML的结构来编辑XML的方法。
现在我们要证明任意模型的结构的结构是唯一的,这样系统最初只要存在这个结构的结构,那么就可以通过它直接或者间接的编辑出其它模型来了。
一个模型是有属性和子节点构成的,所以我们先定义属性和子节点的结构。在这里我们使用XML来表示。
属性的结构,在XML中属性一般用<attributeName>="<value>"的格式表示属性,比如name="Tom" age="10"等,在动态模型编程中我们定义它的结构为:<attribute name="<attributeNmae>"/>,即只描述属性的名称。
节点的结构,在XML中节点的格式一般是<<nodeName> ...../>的格式,比如<Person ...../>,在动态模型编程中我们定义它的结构为:<thing name="<ndoeName>"/>,即只描述节点的名称。
由于属性是嵌套在节点中的,而子节点也是嵌套到父节点中的,所以可以使用嵌套的方式定义完整的模型的结构。比如:
<Person name="Tom" age="40“> <Child name="Smith" age="10"/> </Person>
它的结构是:
<thing name="Person"> <attribute name="name"/> <attribute name="age"/> <thing name="Child"> <attribute name="name"/> <attribute name="age"/> </thing> </thing>
如果计算任意一个模型的结构的结构,即等价于计算任意一个XML的结构的结构,那么就会发现结果是:
<thing name=”thing”> <attribute name=”name”/> <thing name=”attribute”> <attribute name=”name”/> </thing> <ting name=”thing”> <attribute name="name"/> <thing name="attribute"> <attribute name="name"/> </thing> <thing name="thing"> ... </thing> </thing> </thing>
这是一个每层节点都一样的且有无限层节点的一个XML,我们把它称为元事物。
由于我们找到了元事物,所以证明完毕,它说明了XWorker的构建事物的方法是可行的。
最后我们说一下元事物的一些巧合,这属于事物构建方法的额外内容,大家自行把握。
Copyright © 2007-2019 XWorker.org 版权所有 沪ICP备08000575号