为系统目标模型建立动态角色的方法和装置 本发明涉及数据处理系统,特别涉及在系统目标模型(SOM)中,为面向目标的应用程序设计提供动态目标。
经过多年的争辩和讨论,面向目标的编程语言(或称OOP)变为程序设计技术的主流。OOP语言使程序设计的工作效率得到改进,提供了代码的复用性,并且便于维护。面向目标的编程模块的中心部分称作方法解析。这个机制就是为某个目标选择一个特定的方法以及该方法的ID和该方法的参数。在某些现有技术的目标模型中,方法解析主要是通过对程序原码的分析来确定某个目标特有的“过程入口点表”中的位移量。这些目标称之谓静态目标。在程序执行过程中,静态目标没有选择方法的可能。程序一旦开始执行,静态目标希望为特定方法ID和特定目标所选择执行的这个方法保持不变。大多数静态目标允许进行一次性解析,在使用同一目标的情况下,所选方法可以反复调用,而不必经过解析。
另一种现有技术的面向目标编程语言提供动态模型,它在运行时,能用目标名来确定一个特定的方法。在动态模型中选择哪个方法,可以在程序执行中变化。不象静态目标,只要进行了解析,就可以为同一目标反复调用所选的一个方法而无需另行解析,而动态模块就不能进行这样的过程,因为某个类别从其父类那里继承的一组方法可以在程序执行过程中作出改变,由此在程序执行的同时,改变了由某个特定方法ID和特定目标所确定地解析方法。
不论静态还是动态目标都必须适应不同角色的要求。比如某个人可以代表一个学生、教师或父亲等。为了使同一实体在不同上下文中具有不同的职能,现有技术采用多继承的面向目标机制。多继承代表的目标由不同类继承。因此,这些目标必须满足各种上下文的各种复杂要求。
我们需要这样一种机制:它能够根据目标的上下文动态地增加其角色,而不超过其限定的开销。
本项发明涉及一种在面向目标的编程环境下,为目标提供动态角色的方法和装置。这一机制能够根据产生有效程序的目标的上下文,为该目标动态地增加角色。IBM系统目标模型(SOM)是提供这一功能的主要构件。IBM系统目标模型可完成三类方法解析,第一类是位移解析,它根据对程序原码的分析,确定某个目标特定的过程入口点表的位移量;第二类是动态解析,它在运行中用目标名确定某个特定的方法;第三类是调度解析,用它来提供本发明的功能。在调度解析中,方法解析是由执行“Som Dispatch”法来决定的。本项发明在新的类别中重写了“Som Dispatch”法,以便实现调度机制的实际应用。动态目标用目标列表来表示。目标可以随时加入这个列表。比如,当一个程序启动时,某个“人员目标”仅有一个学生目标。在调用需要教师目标特性的函数之前,要为该“人员目标”加上教师角色。当这些函数调用结束返回时,如果不再需要该角色,则从“人员目标”上删除教师角色。
总之,动态角色目标与一个角色列表目标相关联。需要能够为目标增加或删除一个角色的方法。这是通过重写“SomDispatch”法来达到的,在此过程中搜索角色目标列表中的所有目标,以便找出第一个具有所需方法的目标。
图1为本发明可以使用的计算机/工作站的方框图
图2为面向目标环境中的一个目标
图3为面向目标环境中系统目标模型(SOM)的数据结构的方框图
图4-8为具有本发明的动态角色目标的列表目标的方框图
图9为使用本发明动态角色目标的应用的流程图
本项发明提供了一种在面向目标编程环境中为目标创立动态角色的方法和装置。本项发明最好用于IBM公司提供的IBM PS/2计算机上驻留的操作系统。图1列出了典型的硬件环境,描述了根据本发明的一个典型的工作站的硬件配置,具有中央处理器10(例如一个一般的微处理器)和一些通过系统总线12相互连接的其它部件。图1中的工作站包括随机访问存储器(RAM)14;只读存储器(ROM)16;将外部设备,如磁盘单元20连接到总线的一个I/O适配器18;一个用户接口适配器22,用于连接键盘24、鼠标26、扬声器28、话筒32和/或其它用户接口设备,如一个触摸屏(未注明);一个通信适配器34,用于把工作站连到数据处理网络;以及一个显示适配器36,用于把显示设备38连到总线上。在优选实施例中,工作站具有驻留其上的OS/2操作系统和使本项发明能够实施的计算机软件,该软件是作为一个工具集提供的。
图2是根据发明优选实施方案所描述的一个面向目标的系统中的目标框图。该目标包含了数据和处理数据所需要的方法。目标可表示为一个“饼图”,如图2所示。目标数据42表示在饼图中心,外围是可用的方法44-54,数据42只可以被该目标的方法所修改。根据从其它目标收集到的信息调用方法44-54。一个典型的面向目标系统,具有一个消息路由器56,它在目标之间传输消息。因此,目标58通过向消息路由器56发送消息55,而路由器接着将消息53发送给目标40的方法48,来调用方法48。一个目标,就象本项发明中所采用的那样,均具有包容性、继承性和多态性等特性。包容性指的是掩盖了目标实施的细节;继承性指的是由称作父类或母类的另一类确定称作派生类或子类的形状和特性的技术,作为增量差分。多态性指的是在同一界面后面掩盖实施差异的能力,以便简化目标间的通讯。
目标按其相关性分为“类”。“类说明”包含与这“类”中所有目标共同相关的信息,它包括由每个目标和每个有效“目标方法”所维持的实例变量的描述。目标实例是根据该信息建立的,并且具有在目标类中限定的特性。比如,目标类“狗”,可包含的实例变量是:狗的种类、狗名以及对吠叫信息作出响应的“叫”法。狗的实例,如Rover,自已保持类型和名称实例变量,而且对犬吠消息作出反应。
“抽象类”可用来描述某一类想使用的那些界面和方法,无需提供实施这些方法的细节。在实施细节由实施者决定的情况下,“抽象类”是很有用的。“具体类”是作为抽象类的子类来建立的,并且由具体类组成那些抽象类。
图3是SOM的基本数据结构。作为一个特定目标,60是一个静态数据结构,它的第一个完整字62中存放了该目标的方法过程表66的地址。这个方法过程表66中有该类目标数据结构68的地址,以及用于特定目标72和74各方法的地址。地址68指向该类目标数据结构70。所有与该类目标同类的目标有一个指向这个方法过程表66的地址。被这些目标继承的任何方法,当它们出现在方法过程表66时都有它们在存储器中相同位移上的方法过程地址。计算机存储器中,包含两个方法过程的指令串的块地址被设定在72和74。计算机存储器中的位置76和78,存有某个特定方法过程的指令串,它们由72和74来指定。在IBM案卷AT9-91-072中,序号为07/805,778,美国专利号5,421,016可找到IBM系统目标模型的完整说明,标题为“根据应用要求,在使用静态方法时,动态调用目标方法的系统和方法(System and Method forDynamically Invoking Object Methods from an Applicantion Designedfor Static Method Invocation)”,也列入其中,可以作为参考。
图4表示的是用一个列表的方式来为一个动态目标增加或减少角色的方框图。列表目标80中包含指针,指向SOM目标,它们表示人员目标82,学生目标84,教师目标86。本发明描述了一种技术,它能根据上下文动态地为此目标增加角色。人员目标82可能拥有某特定个体的信息,如出生日期、出生地点、名字等,学生目标84拥有学生的特定信息,包括平均分(GPA)、专业、某班级的名次等,教师目标86具有教师的特定信息,包括工资、专长、班上的学生等。任何本专业人员都会看到,在列表目标80中可以增加任何数量的具有各种角色的动态目标。
图5-8描述访问包含有动态目标的列表目标的技术。应用程序启动之后,比如要求所有在Texas,Austin出生的人,只得到了人员目标82。如图5所示,要搜索列表目标80,只有人员目标会被装上。同样,假定应用程序需计算所有GPA为4.0的学生,列表目标80将被搜索,如图6所示,只有学生目标84会被装上。同样,应用程序寻找所有数学教师,将搜索列表目标80,在图7中,只装入教师目标86。当寻找数学教师,而且上历史课,年纪小于50岁的教师,那么所有的动态目标都要装上。如图8所示,要查寻列表目标80,人员目标82,学生目标84,教师目标86都要装上。再回来看图4,很明显对于本专业技术人员来说,给定一个列表目标80,另外加上有多种角色的动态目标(比如82,84,86),随时可以添加到列表清单80上。对于本专业技术人来说,同样很明显,当应用程序启动只要求人员目标82,后来要求有教师特性时,教师目标86可以装上去,当函数调用返回时,如果不再用教师目标86,可以把它删掉。
图9显示的是本项发明动态角色目标的执行流程图,本项发明允许在应用中调用动态角色目标。动态调用指的是程序能在执行过程中作出决定调用哪种方法,而不在该应用被编译时进行。动态解析系统需要采用“运行时间信息”去精确地确定方法调用。如图9所示,某项应用使用本项发明的SOM动态角色目标,从块90开始进行到块92。在块92,此过程实现动态链接,并且装入动态SOM目标94,基于图5的列表目标和SOM运行时间库96。在块98上,应用开始启动,建立所需的类和目标,如功能块100中的设置那样。最后,应用按功能块102中所示的那样进行,并在终端块104上结束控制。
以上根据本发明描述了本发明的优选实施例,但应清楚地看到,本领域的技术人员在不背离本发明的精神和范围内可做出各种修改和变型,因此,在此所公开的本发明将仅限于所附权利要求。