应用程序类扩展制造技术

技术编号:2867290 阅读:363 留言:0更新日期:2012-04-11 18:40
一个用于扩展一个第一应用程序类的方法(图2)包括,在所述第一应用程序类中集成一个用来存放所扩展特性的第一数据缓存,以及利用一个基于规则的引擎来确定和所述第一应用程序类相关联的一个或多个所述扩展特性的值。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及扩展应用程序类的行为及特性,尤其涉及在运行时间内、在无需修改现有代码的情况下提供这些扩展。
技术介绍
在C++或其他任何直接被编译成机器代码的编程语言中,没有对应用程序类进行运行时扩展的已知方法,以使得原始程序保持在未修改状态。现在,需要一个兼容于所有正在使用的系统的编译器,必须撰写并编译适当的应用程序代码,然后则必须要有联接最终可执行程序所需的二进制文件。这就导致了一个全新程序的出现,以及随之而来的对扩展性回归测试及验证的需求。能够在不改变原始程序的情况下扩展应用程序类的行为及特性将是十分有利的,这样就排除了使用兼容的编译器及二进制文件的需要,也排除了对回归测试及验证的需要。
技术实现思路
本专利技术在于一种用于扩展应用程序类的技术,即改变一个现有类的结构,创建新的类,或者修改一个类实例的上下文结构。这些应用程序类扩展在运行时执行,而无需改变原始程序。本专利技术的运作是通过在现有类中集成一个通用的、可调整大小的数据缓存,可用来保存由所述扩展特性所代表的数据,以及通过提供一个基于规则的引擎,该引擎能够根据应用程序类的特性确定其关系及行为,从而得到如下的机制,其中应用程序的用户可以在无需编程或修改原始程序的情况下修改应用程序系统的特性及行为。在一个实施方式中,本专利技术包括一个方法,用于扩展第一应用程序类。此方法包括,在所述第一应用程序类中集成一个用于存放所扩展特性的第一数据缓存,以及利用一个基于规则的引擎来确定与所述第一应用程序类的一个或多个扩展特性相关联的值。在另一个实施方式中,本专利技术在于一个计算机程序产品,包括一个具有计算机可读代码装置的计算机可用媒介,其中所包含的计算机可读代码装置用于使计算机扩展第一应用程序类。所述计算机程序产品中的计算机可读代码装置包括用于使计算机在所述应用程序类中集成一个用来存放所扩展特性的第一数据缓存的计算机可读程序代码装置,以及用于使计算机利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的计算机可读程序代码装置。在又一个实施方式中,本专利技术在于一个控制器,用于一个基底处理设备。所述控制器包括用于扩展第一应用程序类的第一电路,其包括用于在所述应用程序类中集成一个用来存放所扩展特性的第一数据缓存的电路,以及用于利用一个基于规则的引擎来确定与所述第一应用程序类相关联的一个或多个扩展特性的电路。附图说明下面,联系附图说明本专利技术的上述各方面及其他特征,其中图1是一个类结构图,示出了元数据和类属性的关系。图2是一个类结构图,示出了一个类工厂及其与所述类元数据的集成。图3是一个类结构图,示出了扩展类,永久对象以及动态扩展特性间的关系。图4是一个典型设备的一个实施方式的框图,所述设备合并了本专利技术的各特征。具体实施例方式虽然下面将参照附图中所示的实施方式描述本专利技术,但应该了解到本专利技术可以实现于多种不同形式的实施方式。此外,可以使用任何大小、形状或类型合适的的元件或原材料。图1是一个类结构图,示出了特性映射1005中的各特性,永久元数据1010,元数据1015,属性集1020,属性缺省值1025和对象值范围1035,属性类型1030,类型化属性1040,类型化永久属性1050,以及永久属性1045之间的关系。图2示出了一个类工厂(class factory)1055,其与类元数据1015的集成,以及其与类初始化软件1060和一个工厂构造器1065的关系。图3示出了扩展类1090,永久对象1075,虚拟对象1085,动态扩展特性1080,以及永久元数据1070之间的关系。如图1中所示,本专利技术通常包括一个用充足的信息描述一个类结构的装置,以使得图2中所示的类工厂1055能构造出所述类的实例。图3描述了在运行时附加特性1080如何能够与一个对象1075动态关联,而无需修改该对象所属类的结构。图3还示出了扩展类1090,永久对象1075,以及动态扩展特性之间的关系。在面向对象编程中,一个类被定义成一个类型化的数据结构,其中包括用来定义所述类实例状态的特性。一个对象通常认为是一个类的实例,其状态特性确定了该对象的身份。至少是用于本专利技术的目的,属性1020、1040、1045、1050包括了关于一个特定类特性的信息,该信息允许在仅知道所述特性名称的情况下对其进行构造、访问、设置及消灭。一个特性可以是一个类属性,其设置组成了所述类的结构,其值确定了所述类的任何特定实例的状态。元数据1010、1015被定义成关于一个应用程序中数据的结构的信息。元数据可被表示成具有所有相关特性及属性的一个类的定义。根据本专利技术,一个应用程序可以改变一个现有类的结构,创建可以像所述应用程序中任何其它的预定义类一样被使用的全新的类,或者在运行时根据特定对象运行时的上下文修改一个类实例的结构。依照本专利技术,这可以通过将这些改变列入一个储藏库并将其载入所述运行中的应用程序来实现,而无需编写代码、编译、或以任何形式改变所述应用程序自身的现有代码或结构。这就使得一个应用程序能够实现上述改变而无需修改现有计算机代码,也无需生成一个新的应用程序。这里描述的改变一个类、创建一个类或修改一个类的结构的这一能力被称为应用程序类扩展(ACE)。举例来说,Java或Visual Basic语言要求把对一个应用程序的结构的修改写入所述适当的计算机语言并重编译。这改变了所述程序的基本结构及行为,反之,如下面所说明的一样,依照本专利技术的应用程序类扩展则无需这类改变。ACE包括建立关于一个类的结构及其特性的详细信息,以及建立一个类工厂以使用这一结构和特性信息来改变结构、创建新类、或者根据上下文修改一个实例的结构。关于类结构的信息可以被包括在元数据中。应用程序类的扩展要求关于一个类的结构及其特性的详细信息,即所述类元数据1010、1015。这一信息可以被编译入所述应用程序,也可以存储在一个储藏库中并在运行时被载入所述应用程序内存。当通过名称或ID被识别后,所述类元数据被类工厂1055利用来创建一个类的新实例,或当被类似的识别时访问类特性。换句话说,所述类工厂能够通过名称或ID查找所述元数据或任何类,然后能够使用该信息来正确构造所述类的一个新实例,其中包括了所述类的扩展特性。本专利技术允许一个应用程序往一个类的元数据添加新特性,这将会改变由所述类工厂构造的实例的结构。在C++这样的编译语言中,一个类的布局在该类被编译时确定。这就需要一个为这些新特性分配存储空间并执行其初始化代码(必要时)的机制,以使得所述类的实例具有这些新特性。本专利技术提出了一个方法以使每个特性与一个属性类相关联。对于每个类特性都有一个属性类实例被生成,并与所述类元数据一同保存。所述属性实例是所述类元数据的实体,其中所述属性实例定义了属于所述类的各实例的每个特性。用于各个类的所述元数据包括一般信息,首先是类名称及ID以使得所述类工厂能够通过名称或ID查找一个类。其他信息为isA(类)及isKindOf(类)之类的运行时类型识别函数提供支持,并提供到基类的链接,以及一个到所述类的一个属性集(特性定义)的链接。一个类的每个特性都具有一个与所述类元数据相关联的属性对象。此对象包含的信息使得所述类构造器能够定位所述特性的内存并在所述构造器被终止前将其正确初始化。被编译入一个类的本文档来自技高网...

【技术保护点】
一种方法,用于扩展一个第一应用程序类,包括:将一个第一数据缓存集成到所述第一应用程序类中,用于存放扩展特性;以及利用一个基于规则的引擎来确定与所述第一应用程序类的一个或多个扩展特性相关联的值。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:威廉O博伊尔
申请(专利权)人:布鲁克斯自动控制公司
类型:发明
国别省市:US[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1