用动态语言生成子类系统对象模型类的方法和装置制造方法及图纸

技术编号:2890476 阅读:267 留言:0更新日期:2012-04-11 18:40
一个用于为一个动态的面向对象的语言生成子类系统对象模型(SOM)类对象的方法和装置。首先使用动态语言生成一个指向SOM类对象的代理类对象。然后生成一个动态语言子类。随后使用SOM接口生成一个SOM类对象,这导致某些SOM方法被动态语言再调度根程序所重置。动态语言重置SOM调度过程并用它自己的过程取代调度程序。新的调度过程将对消息响应,首先在动态语言类对象方法表中搜寻一个方法,若未找到,将消息重定向至SOM环境。(*该技术在2016年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及数据处理系统,更具体地说,使用系统对象模型(SOM)经过动态语言边界生成子类对象。经过多年争辩和讨论之后,面向对象的程序设计语言(OOP)正成为主流程序设计技术。OOP语言提供改进的程序员生产力,可重用代码和易于维护。由IBM公司生产的IBM系统对象模型(SOM)产品是一个语言中性的面向对象的对象模型,可用于生成用户工具(系统对象模型System Objeet Model是IBM公司的一个商标)。对这样一个用户工具的一个重要要求是生成子类工具箱中包括的对象的能力。如本专利技术所用,一个对象具有封装性、继承性和多态性。封装性系指一个对象的实现细节的隐藏。继承性系指确定一对象类的种类和行为。这一对象类称为派生类或子类,作为从另一类称为文类或超类中增加的差异。多态性系指在一个公共接口后隐藏不同实现,简化对象之间通信的能力。对象的子类生成提供了构造可与工具箱中对象协作的全新应用对象的机制。这允许对象用于与工具箱一起提供的应用构造器中。早期的面向对象的对象模型仅允许为C/C++这样的静态语言生成子类。然而,近来的努力集中于为诸如Smalltalk、REXX、Common LISP(CLOS)这样的动态的面向对象的语言提供生成子类的能力。一个方法公开了一个用动态语言写的将类输入到SOM的过程。此过程包括书写一个描述动态语言方法接口的类定义文件。类定义文件包含了动态语言方法的所有原型。随后,生成一个包含方法体的类实现文件,此文件即是将控制传给动态语言方法调度程序的特定根程序。类对象作为参数传给动态语言方法调度程序,调度程序启动查找类的方法。一个SOM编译器处理类定义文件并产生一个包含文件。使用类对象生成实例和发送消息。使用由SOM编译器产生的包含文件完成了子类生成。另一个过程公开了一种产生一个SOM代理对象以表示实际的SOM对象的动态语言。此代理对象一个指向实际SOM对象的实例变量,动态语言使用此实例变量向SOM对象发送消息。此种设想依赖于允许“未知”方法的动态语言的类属方法的实现,当对象收到一个动态语言不能识别的消息时类属方法被调用。由于SOM消息对动态语言而言是局外的,“未知”方法允许将消息重定向到SOM对象。因此,需要一种机制为面向对象的动态语言提供系统对象模型工具箱中类对象的子类生成。本专利技术涉及用于动态面向对象语言的生成子类系统对象模型(SOM)对象方法和装置。生成子类允许用户使用动态语言改变对象的默认行为。使用动态语言产生一个指向SOM类对象的代理类对象。代理类对象包含每一个SOM类的根程序方法。根程序方法的激活引起相应的SOM方法的调用。下一步,生成一个动态语言子类。随后使用SOM接口“somCreateDynamicClass”生成一个SOM类对象,这又使某些SOM方法被动态语言再调度根程序所重置。动态语言使“somDispatch”接口被重置并且被它自己的调度过程取代。新的调度过程首先在动态语言类对象方法表中搜寻一个方法,若未找到,则将消息重定向至SOM环境。附图说明图1是可应用此专利技术的计算机/工作站框图。图2是IBM系统对象模型结构功能块的框图。图3是用动态语言生成代理类对象和子类对象的过程流程图。图4是生成一个SOM类对象的过程的流程图。图5是使用动态语言增加新方法的流程图。图6是使用动态语言重置SOM方法的流程图。图7用动态语言生成实例变量(类数据)的流程图。图8是用动态语言生成类实例的流程图。图9是用动态语言向类对象发送消息的流程图。本专利技术为面向对象的动态语言提供了一种生成子类系统对象模型(SOM)类对象的方法和装置。生成子类SOM对象更适合应用于驻留于可从IBM公司得到的IBM#PS/2操作系统环境中的计算机。图1描述了一个典型的硬件环境,说明了依据有关专利技术的工作站的典型硬件配置,具有一个中央处理部件10,诸如常规的微处理器,以及通过系统总线12互联的许多其它部件。图1所示的工作站包括一个随机访问存储器(RAM)14,只读存储器(ROM)16,一个用于联接诸如磁盘部件20这样外设至总线的I/O适配器18,一个用于联接键盘24,鼠标26,扬声器28,话筒32,和/或诸如触屏(未列出)这样的用户接口设备至总线的用户接口适配器22,一个用于联接工作站至数据处理网络的通信适配器34和一个用于将显示器38联接至总线的显示适配器36。在最佳实施方式中的工作站其上驻留OS/2操作系统和作为一个工具箱包含在内组成此专利技术的计算机软件。OS/22.x(OS/2是一个由IBM公司生产的商标及产品)操作系统包括一个称为系统对象模型(SOM)的语言中性的面向对象的程序设计机制。图2说明了一个基础SOM数据结构。一个状态数据结构210用于说明一个特定对象其第一个全字220包含此对象的方法过程表240的地址。方法过程表240含有类对象数据结构245的地址。和特定对象250和260的各种方法的地址。地址245指向类对象数据结构248。与此对象属于同一类的所有对象同样包含指向此方法过程表240的地址。当对象所继承的所有方法在祖先类的方法过程表240中出现时将在内存的相同偏移处有它们的方法过程地址。含有两个方法过程的指令序列的计算机内存块的地址在250和260陈述。位置270和280位于计算机内存中且含有250和260处地址所指向的特定方法过程的指令序列。IBM系统对象模型的完整说明可在以下文献查到,IBM存档AT9-91-072,序列号07/805,778,美国专利号5,421,016,名称为“从一种为静态方法调用设计的应用程序中动态地调用对象模型的系统和方法”,编排在这里作为参考。图3说明了本专利技术用名为“Graduate”的一个动态的面向对象语言类生成一个名为“Student”的SOM类子类的新的子类生成机制。过程从框300开始,在310生成一个动态语言代理类对象,指向“Student”SOM类对象。一个代理对象是一个用于接收消息并将消息发送到一个是代理的对象,并如同实际对象作出应答那样返回一个应答的对象。如框320所示,代理类对象含有SOM类中的每个方法的一个根程序方法。当如框340所示激活根程序方法时,它调用框360的“somClassDispatch”机制以调用相应的SOM方法。根程序方法仅搜寻如框380所示的“Student”类或其上定义的那些SOM方法。过程继续到框390,为“ Graduate”类生成了一个动态语言子类“Student”。如框400所示,动态语言类对象具有一个跟踪用动态语言实现的新的或重置的方法的方法表。动态语言类对象同样保留有关类数据的信息。现在转向图4,过程在410继续,前进到框420,通过使用SOM接口生成了一个名为“Graduate”的SOM类对象。SOM接口“somCreateDynamicClass”用于生成类对象“Graduate”。熟练的技术人员懂得可由动态语言自动完成类对象“Graduate”的生成。当SOM接口生成了“Graduate”类时,如框430所示除“somDispatch”和“somClassDispatch”外所有方法指针被再调度根程序重置。如框440所示再调度根程序的主要作用是将控制流重新定向到“SomDispatch”发送到此类本文档来自技高网...

【技术保护点】
一个在计算机系统中实现的用面向对象的动态语言生成了类系统对象模型对象的方法,包括步骤:在系统对象模型环境中提供具有特定名称的类对象;在所述系统对象模型环境中用所述动态语言生成一个具有一个指向所述类对象指针的代理类对象;在所述系统 对象模型环境中用所述动态语言生成一个具有所述类对象的特定名称的子类;以及由所述代理类对象中调用一个调度程序,以便在所述系统对象模型环境的一个方法中搜寻所述类对象。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:迈克尔黑登康纳纳坎科斯维西姆森克里斯托弗纳什戴维西格伦肖
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1