|||
由本人提出的面向资源的应用软件开发方法,为了实现“可在运行时设计”的特性,就必然要突破“设计-运行”之间的鸿沟。一旦软件开发工具提供了这样的特性,就意味着,软件,可以在运行中,一边运行,一边进行软件自身的设计和改进,也可以说,对软件的结构的设计改进,已经成了软件运行的一部分了。这意味着真正赋予了软件类似生命的特征,正如我们教育和培养下一代,是在他们“活着”的同时所进行的一样。我们不会将一个被教育者置回某种休克的设计状态,对他进行教育和培养,然后再换醒他活过来去更好地行动和思考。而现代软件工程对一个软件的开发和升级本质上还处于这种模式之下。面向资源的应用软件开发方法,就是要实现“编写活着的程序”。
于是,实现对象的可演进性成为实现真正的软件“随需应变”的必要技术,同时,也是实现“编写活着的程序”的开发应用模式的关键技术。在有能力提供这项技术之前,所有的“随需应变”都是在奢谈。
本人目前正试图在诚开智能软件开发平台的开发中,尝试向这一技术实现发出挑战。由于没有先例,开发的过程伴随着理论的探索和编程的实践交叉进行。在这种全身心的投入研究开发过程中,不断有新的发现,新的否定,真的是一种美妙的研究享受。
对象的例型和类型,例象和类象概念的发现,就是在可演进的对象模型探索中,获得的有趣的认识之一,特分享给网友们去体会。
概念由来在当今OO编程语言中,实际上已经显露过这两个不同的概念的区别了。
比如,在Java中,我们可以新建New一个类Class的实例对象Object,也可以以一个对象Object为蓝本,克隆Clone出另一个对象Object。
这里,克隆的目的在于重用蓝本对象的数据值。同时,也是按蓝本的类型创建的一个新的对象实例,也就是说,对象克隆,同时重用了蓝本对象的结构Class。
由于在现有OO编程语言中,不存在对象的可演进性,也就是说,不存在提供在程序运行中再来改变对象结构的特性的设计考虑。这是在当前“设计-运行”分离的软件应用模式下,不需要的特性,当然,也是该模式下应用开发的软件不可能真正实现“随需应变”的根本原因所在。
在之前的博文中,我已经介绍了,实现可演进的对象模型的关键,是在运行时彻底打通“属性-类型-对象”之间的相互衍生的三角关系。也就是说,要从当前的软件开发,是“从属性定义衍生到类型定义,再衍生到对象创建”这一单向的单程过程,改变为可双向循环互通衍生的过程。也就是说,要实现对象的可演进特性,关键是要实现除了上述单程单向开发路径外,还要能首尾衔接,反向贯通。具体地说,就是实现:
首位衔接:可将对象拆解为属性成员对象,可将拆解的成员对象克隆重新组合新的对象。
反向贯通:可根据非类型实例化创建的对象反向归纳出类,根据已经定义的类,定义新的属性类型。
例型和类型概念的提出,正是为了实现“属性-类型-对象”之间可双向循环互通衍生的理论需求之一而被发现的。
概念提出例型:以A对象为例克隆一个B对象,A对象为B对象的例型,B对象为A对象的例象。
类型:以A对象为类创建一个C对象,A对象为C对象的类型,C对象为A对象的类象。
关键特性:改变例型结构,不改变例象结构;改变类型结构,类象结构跟随改变。
主要性质:
l 一个对象可以是其他一些对象的例型,同时可以是另一些对象的类型。
l 一个对象,要么是例象,要么是类象,而且只能有唯一的例型或唯一的类型。
l 一个对象,不管是作为例象、类象、例型还是类型,其值的改变只改变自身,不改变其它任何对象的值。
l 只有作为类型的对象结构改变,才改变其类象的结构。
作用划分:
例型的作用在于重用对象的数值。
类型的作用在于可同时重用对象的数值和结构。
概念的意义可演进性设计的最终目标,是解决继承和发展之间的矛盾。
面向资源的可演进性对象模型为可演进性设计提供了新的设计时空。
回到前言...
2014-10-21
邱嘉文
于珠海诚开智能
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 06:40
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社