面向生成器图形的编程和执行制造技术

技术编号:5510037 阅读:205 留言:0更新日期:2012-04-11 18:40
一种用于面向生成器图形的编程和执行的方法和设备。根据本发明专利技术的一个方面,提供解释用于方法的生成器依赖性声明的运行时。生成器依赖性声明在运行时标识一组零个或多个生成器,其中生成器是运行时可实例化的结构,该结构至少包括实例和与该实例相关的方法。响应于感兴趣生成器的命名的接收,运行时自动生成和执行生成器图形,所述感兴趣生成器的方法具有生成器依赖性声明。生成器图形初始包括感兴趣生成器并基于生成器图形中已经存在的生成器的方法的生成器依赖性声明通过实例化而从感兴趣生成器到源生成器被生成。运行时对由生成器图形指示的生成器图形中的生成器的执行进行排序。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术的实施方式涉及计算机领域;且更具体地,涉及利用运行时 (runtime)来编程和执行代码的领域。
技术介绍
面向对象编程面向对象编程是一种计算机编程范例。在面向对象编程的后面的理念是 计算机程序可以被视为包括相互作用的单个单元(称为对象或实例)的集合, 而不是传统地将程序视为函数的集合或简单视为用于计算机的指令列表。对 象是用于将数据与操作该数据的方法绑定的语言机制。每一个对象能够通过 方法被调用、处理数据以及向其他对象提供结果。每一个对象可以被视为具 有独特角色或职责的独立机器或施动者。反射式面向对象的语言是具有特定的特性集合的编程语言(例如,类、 对象/实例、继承、反射等),但是反射式基于对象的语言有时用于标记具有 这些特性的一些子集(例如对象)的编程语言。出于本文的需要,短语"面 向对象源代码"以及"面向对象代码"用于指用具有这些特性的语言编写的 代码(例如,用反射式面向对象的语言编写的代码、用反射式基于对象的语 言编写的代码)。在过程语言、非发射式面向对象的语言以及非反射式基于 对象的语言是一般不支持这些特性的编程语言的情况下,转换技术可以用于 将这些特性提供给(例如,通过仿真)适合用这些语言编写的代码;且由此, 这些技术将这些语言转换成反射式基于对象的语言或反射式面向对象的语 言。(这些技术不需要仿真面向或基于对象的语言的所有特性,而是可以只 仿真对本文剩余部分感兴趣的这些特性)。出于本文的需要,短语"面向对象源代码"和"面向对象代码"还可以用于指这些转换后的过程语言代码、 非反射式面向对象、以及非反射式基于对象的语言代码。通过示例的方式而 并非限定,本文主要描述用反射式面向对象的语言编写面向对象源代码。同 样,术语对象和实例在这里可以互换使用。在面向对象编程中主要使用的术语方法指专门与类(称作类方法、静态方法或工厂方法(factory method))或对象(称为实例方法)相关联的一段 代码。如同过程编程语言中的过程,方法通常包括执行动作的语句序列、将 这些动作参数化的输入参数的集合以及可能还有返回的一些种类的输出值。 当程序员使用面向对象语言写程序时,产生的代码从概念上可以视为包 括四种基本类型的代码。第一种类型包括操作输入的实例以提供输出实例的 命令(这里称为"转换"代码); 一般被写为方法(这里称为"转换"方法)。 第二种类型包括引起运行时以实例化类实例的实例实例化命令(这里被称为"实例实例化"代码)。第三种包括调用以上实例的属性方法(存取程序、 转变器(mutator)等)的属性操作命令(这里称为"数据准备"代码)。第 四种包括命令序列,该命令序列使用合适的实例(其中合适的实例包括用作 参量(argument)的实例、实例方法使用的实例以及类方法使用的元类实例) 启动方法调用排序,以规定什么实例的什么转换方法被调用,以什么顺序, 以及利用哪些实例的哪些参数响应于数据准备代码做出的改变(这里称为"手动调用排序"代码)。手动调用排序代码有时被编写为与转换方法分开 的方法,且从而手动调用排序代码包括用于转换方法的调用命令序列。程序 一般在数据准备代码与手动调用排序代码(其还可以提取(dip into)实例实 例化代码)之间重复,所述手动调用排序代码可以再调用转换代码(其也可 以提取实例实例化代码和数据准备代码)。应当理解这是程序的概念性描述, 因此,不应当认为在看待程序上是绝对的。 运行时术语运行时在这里用于指运行用相同和/或不同语言编写的其他代码的 基本代码的程序或库。由此,运行时是在程序运行时(包括与操作系统一起 工作以提供功能诸如数学函数、输入和输出)支持程序的效用函数的集合。 这些使程序员没有必要不断地重新编写在编程语言中规定的或操作系统提 供的基本能力。由于运行时与操作系统之间的区分可能模糊,因此术语运行 时在这里用于指与操作系统分开的代码和/或是操作系统一部分的代码。早期运行时,例如FORTRAN的运行时,提供诸如数学运算的特征。其 他语言添加了更复杂的特征——例如存储器无用信息集合,通常与对象支持 相关联。最近的语言倾向于具有相当大的具有相当多功能的运行时。许多面 向对象的语言还包括已知为"调度程序"和"类装载器"的系统。Java Virtual Machine (JVM)是这种运行时的一个示例其还在运行时解译或汇编可动 二进制Java程序(字节代码)。公共语言运行时(CLR)框架是运行时的另 一个示例。编程和执行框架一种框架包括三个基本区域,在该框架中向终端用户提供应用。第一个 区域包括操作系统和运行时的创建。该第一个区域由具有非常高级编程技能 的程序员来执行。当在该区域工作时,程序员分别被称为操作系统程序员和 运行时程序员。当创建面向对象语言的运行时的时候,运行时程序员支持执 行在转换代码、实例实例化代码、数据准备代码以及手动调用排序代码中使 用的各种类型的命令(例如,实例实例化命令、数据准备命令以及方法调用 命令)。第二个区域包括由运行时运行的面向对象应用源代码的创建。第二个区 域再次由具有非常高级编程技能以及能理解应用的业务目的的程序员来执 行。当在该区域中工作时,程序员被称为应用程序员。当用面向对象的编程语言创建应用时,应用程序员为要被创建的特定应用编写特定的转换代码、 实例实例化代码、数据准备代码以及手动调用排序代码。作为这些的一部分, 如果应用需要图形用户界面,则应用程序员还为特定应用设计图形用户界面并编码;从而还被称为应用设计者。第三个区域包括由运行时运行的应用程序的使用。第三个区域由不需要 具有任何编程技能的终端用户来执行。手动调用排序代码与应用的创建相关联的最大的开销一般包括手动调用排序代码的调试 和/或优化。对于数据改变的每次时机,应用程序员必须考虑其影响并编写手 动调用排序代码以使合适实例的合适转换方法随着合适的输入以合适的顺 序被调用。应用程序员犯的典型错误包括1)以错误的顺序调用合适实例 的合适转换方法;2)响应于一些改变的数据忘记包括使一个或多个所需的 实例转换方法被调用的命令;3)响应于一些改变的数据包括使不需要的实 例转换方法被调用的命令(例如,包括调用不受数据改变影响的实例转换方 法的命令)等。通过举例的方式,生成手动调用排序代码的一种技术是使用观察者模式 (有时称为"发布订阅")以观察程序中实例的状态。在该观察者模式中, 一个或多个实例(称为观察者或监听者)被注册(或自己注册)以观察被观 察对象(主体)可能引发的事件。可以引发事件的被观察实例通常保留注册 的观察者的集合。当事件被引发时,每一个观察者从被观察实例接收回调(被 观察实例调用注册的观察者中的"通知"方法)。通知功能可以传递一些观 察者可以使用的参数(一般是关于发生的事件的信息)。每一个观察者执行 通知功能,最后在通知出现时定义其自身的行为。被观察实例一般具有用于添加新观察者的注册方法和用于在事件被引38发时从将被通知的实例列表中移除观察者的非注册方法。此外,被观察实例 还可以具有用于暂时停止然后重新启动调用以防止多个相关更新低效层叠 的方法。具体地,响应于属性值的改变而被调用的回调还常常改变一些其他 属性的值,触发另外的回调等。当使用观察者模式技术时本文档来自技高网...

【技术保护点】
一种用于执行面向对象的代码的设备,该设备包括: 运行时,该运行时解释用于所述面向对象的代码中的方法的生成器依赖性声明,所述生成器依赖性声明在运行时标识一组零个或多个生成器,其中生成器是运行时可实例化的结构,该结构包括至少一个实例和与该 实例相关联的方法,所述运行时包括: 自动生成器图形生成模块,用于接收感兴趣生成器的命名,将所述感兴趣生成器作为生成器图形的一部分来添加,以及基于已经在所述生成器图形中的所述生成器的方法的生成器依赖性声明通过链接和在需要时通过实例化其他 生成器来自动生成所述生成器图形的余项,以及 生成器图形执行模块,用于以由所述生成器图形所指示的顺序来执行所述生成器图形中的生成器,其中每个生成器的执行使所述生成器的方法在所述生成器的实例上被执行。

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

【专利技术属性】
技术研发人员:F沙米耶E埃德
申请(专利权)人:莫雷克斯公司
类型:发明
国别省市:FR[法国]

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

1