计算机系统中实现构件在语境中具备语境特征功能的方法

文档序号:6613551阅读:134来源:国知局
专利名称:计算机系统中实现构件在语境中具备语境特征功能的方法
技术领域
本发明涉及计算机软件技术领域,特别涉及计算机构件化软件系统领域,具体是指一种 计算才几软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法。
背景技术
随着现代构件化计算机软件技术的进一步发展,CAR (Component Assembly Runtime)构 件技术是一种面向构件编程(Component Oriented Programming, 简称COP)技术,它定义 了一套网络编程时代的构件编程模型和编程规范,规定了一组构件间相互调用的标准,使得 二进制构件能够自描述,能够在运行时动态链接。目前,CAR构件技术已在某些先进的嵌入式操作系统上实现,在该嵌入式操作系统的 SDK ( Software Development Kit)下,用户很容易编写出自己的构件。CAR构件技术的基础思想来源于微软的COM,但它对微软的COM进行了拓展,并且二 者不兼容。CAR构件技术由CAR语言(构件描述语言,描述构件的元数据信息)、CAR编 译器、自动代码生成工具以及CAR构件基础库支持。CAR构件技术体现了网络编程时代的 特性,编程界面简单。方面(aspect)构件对象模型是一种特殊的构件类实现,aspect对象的特征是可以被其它 构件对象聚合,该构件类必须实现IAspect接口, aspect对象就是实现了 IAspect接口的构件 对象。关于方面构件对象模型以及构件动态聚合的具体技术细节信息,请参阅发明专利申请 "实现计算机软件系统中的构件动态聚合的方法,,(申请号200610027124.4,公开号 CN1851643,
公开日2006年10月25日)。其中,动态聚合是通过IObject的Aggregate方法来完成的,因此构件编写者定义的每个 构件对象都具有聚合其他aspect对象的能力。 一般实现动态聚合都通过方面构件类提供的静 态方法Attach(IObject* pObj)和Detach(IObjeet* pObj)方法来完成。在现有技术的COM+中,当COM +激活对象时,它创建对象的环境(context),对象的 环境与对象通过COM +紧紧附在一起。当COM +为对象创建环境时,它检查组件的目录项 以便决定哪些属性需要被放到环境中。COM+的对象语境(context)紧密依赖对象,这样语境就失去了独立性。但是在现实世界里, 一个构件对象往往会随着环境改变而表现出(或拥有)不同的特征。 当一个CChild对象被创建时,他是一个"小孩",具有小孩的行为"玩"(Play),而把"小孩,,送 到学校,他就变成了学生,具有了学生的行为"学习,,(Study),而当他从学校毕业,在进入 新的环境(语境context)前他又变成了"小孩"。再比如宠物店的猫(构件对象),具有宠物和 商品两方面的特征(aspect)。但猫刚生下来时却未必是宠物,更不会是商品;而一旦被售出, 就不再是商品,但宠物特征却保留了下来。显而易见,让猫进入宠物店就拥有宠物和商品两 方面特征,而离开宠物店后就丢弃商品特征,使用COM +是无法实现这种现实模型的,因为 COM +本身不是一种随时聚合、随时拆卸的动态聚合模型,这样就制约了现代计算机软件技 术的进一步发展。发明内容本发明的目的是克服了上述现有技术中的缺点,提供一种能够使得构件对象在不同的语 境里具有不同特征、有效提高构件应用的灵活性、降低程序设计的复杂度、更好地描述现实 世界模型、使用快捷方便、工作性能稳定可靠、适用范围较为广泛的计算机软件系统中实现 构件对象在语境对象中自动具备语境特征功能的方法。为了实现上述的目的,本发明的计算机软件系统中实现构件对象在语境对象中自动具备 语境特征功能的方法如下该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其主要 特点是,所述的方法包括以下步骤 U)系统进行初始化操作;(2) 系统实例化语境构件类得到语境构件对象实例;(3) .系统实例化外部构件类得到外部构件对象实例;(4) 系统根据用户操作,对该外部构件对象实例进行进入所述的语境构件对象实例的处 理操作;(5) 系统根据调用者的需要,调用所述的语境特征对象实例的构件接口;(6) 系统根据用户操作,对该外部构件对象实例进行离开所迷的语境构件对象实例的处 理操作。该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中的语境 构件类内包含有语境特征方面构件类属性,所述的对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作,包括以下步骤(41) 所述的语境构件对象实例创建语境特征方面构件类的对象实例;(42) 所述的外部构件对象实例动态聚合所述的语境特征方面构件类的对象实例;(43 )系统判断所述的外部构件对象实例是否已经动态聚合了所述的语境构件对象实例 中所有的语境特征方面构件类的对象实例;(44) 如果否,则重复上述步骤(41)。该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中的对该 外部构件对象实例进行进入所述的语境构件对象实例的处理操作中的步骤(41)之前还包括 以下步骤(40)所迷的外部构件对象实例进行进入所述的语境构件对象实例前的制约处理。 4、才M^权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特 征功能的方法,其特征在于,所述的对该外部构件对象实例进行进入所述的语境构件对象实 例的处理操作中的步骤(44)之前还包括以下步骤(45) 所述的外部构件对象实例已经动态聚合了所述的语境构件对象实例中所有的语境 特征方面构件类的对象实例后的制约处理。该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中的语境 特征方面构件类为所述的语境构件类内的静态属性。该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中的对该 外部构件对象实例进行离开所述的语境构件对象实例的处理操作,包括以下步骤(61) 所述的外部构件对象实例动态拆卸聚合所述的语境特征方面构件类的对象实例;(62) 销毁所述的语境特征方面构件类的对象实例;(63) 系统判断所述的外部构件对象实例是否已经动态拆卸聚合了所述的语境构件对象 实例中所有的语境特征方面构件类的对象实例;(64) 如果否,则重复上述步骤(6U。该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中的对该 外部构件对象实例进行离开所述的语境构件对象实例的处理操作中的步骤(61)之前还包括 以下步骤(60)所迷的外部构件对象实例进行离开所述的语境构件对象实例前的制约处理。 该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中的对该 外部构件对象实例进行离开所迷的语境构件对象实例的处理操作中的步骤(64)之前还包括(65)所述的外部构件对象实例已经动态拆卸聚合了所述的语境构件对象实例中所有的 语境特征方面构件类的对象实例后的制约处理。采用了该发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的 方法,由于其基于方面构件类模型和动态聚合技术实现了外部构件对象实例在进入不同的语 境时能够具有不同的语境特征,也就是说可以使不同的外部构件对象实例不用各自编码就能 够具备相应的环境特征,从而突破了 COM+的对象语境(context)紧密依赖对象的限制,提 高了构件应用的灵活性,在CAR构件的面向方面编程领域是一次重大的进步;同时降低了程 序设计的复杂度,为构件面向方面编程提供了更宽广的空间,为软件工厂化提供了一条更简 便的途径;而且提高了软件的可扩展性,能够更好地描述现实世界模型,方便了用户对不同 需求的扩展,为计算机构件化软件技术的进一步t艮奠定了坚实的基础。


图1为本发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的 方法中外部构件对象实例进入语境构件对象实例的流程图。图2为本发明的计算M件系统中实现构件对象在语境对象中自动具备语境特征功能的 方法中外部构件对象实例离开语境构件对象实例的流程图。图3a、 3b、 3c和3d为本发明的计算才几软件系统中实现构件对象在语境对象中自动具备 语境特征功能的方法具体实现过程的原理示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。 请参阅图1和图2所示,该计算机软件系统中实现构件对象在语境对象中自动具备语境 特征功能的方法,包括以下步骤(1) 系统进行初始化操作;(2) 系统实例化语境构件类得到语境构件对象实例;(3) 系统实例化外部构件类得到外部构件对象实例;(4) 系统冲艮据用户操作,对该外部构件对象实例进行ii^所述的语境构件对象实例的处 理:^作,其中,语境构件类内包含有语境特征方面构件类属性,该语境特征方面构件类为所 述的语境构件类内的静态属性,所述的处理操作包括以下步骤(a)所迷的外部构件对象实例进行进入所述的语境构件对象实例前的制约处理;(b) 所述的语境构件对象实例创建语境特征方面构件类的对象实例;(c) 所述的外部构件对象实例动态聚合所述的语境特征方面构件类的对象实例;(d) 系统判断所述的外部构件对象实例是否已经动态聚合了所述的语境构件对象实 例中所有的语境特征方面构件类的对象实例;(e) 如果否,则重复上述步骤(b);(f) 所述的外部构件对象实例已经动态聚合了所述的语境构件对象实例中所有的语 境特征方面构件类的对象实例后的制约处理;(5) 系统根据调用者的需要,调用所述的语境特征对象实例的构件接口;(6) 系统4艮据用户操作,对该外部构件对象实例进行离开所述的语境构件对象实例的处 理操作,包括以下步骤(a) 所述的外部构件对象实例进行离开所述的语境构件对象实例前的制约处理;(b) 所述的外部构件对象实例动态拆卸聚合所述的语境特征方面构件类的对象实例;(c) 销毁所述的语境特征方面构件类的对象实例;(d) 系统判断所迷的外部构件对象实例是否已经动态拆卸聚合了所述的语境构件对 象实例中所有的语境特征方面构件类的对象实例;(e) 如果否,则重复上述步骤(b);(f) 所述的外部构件对象实例已经动态拆卸聚合了所述的语境构件对象实例中所有 的语境特征方面构件类的对象实例后的制约处理。在实际应用当中,语境是对象运行时的环境, 一个对象如果进入了语境,那么该对象将 具有此语境的特征, 一旦对象离开了语境,环境特征就会失去(但该对象很有可能又进入了 另外一个语境,拥有新的环境特征)。CAR构件的语境特征实现的技术利用了 aspect。CAR构件语境是基于动态聚合实现的一种技术,所谓的具有语境特征或失去语境特征, 就是语境会为对象动态的聚合或拆卸聚合一个或多个aspect对象。这些aspect对象是语境在 car文件中定义时指定的。Aspect只能作为一个主语(某个构件对象)的谓词存在。那么它通过什么和主语产生从 属关系呢? 一个对象如果^了语境,那么该对象将具有此语境的特征,一^t象离开了语 境,环境特征就会失去。但该对象很有可能又进入了另外一个语境,拥有新的环境特征。这 里环境特征就是方面aspect。当作为主语的构件对象进入了语境,那么这个语境中的Aspect 构件对象就会与之聚合,就签订了主从的契约。当作为主语的构件对象离开了语境,那么这 个语境中的Aspect构件对象就会与之拆离,就注销了主从的契约。而动多聚合是通过IObject的Aggregate方法来完成的,因此构件编写者定义的每个构件 对象都具有聚合其他aspect对象的能力。在此,引入CAR文件中的Context关键字在CAR中,语境技术通过系统语境构件类CContext来实现普通类对象CClass进出普通语境类对象KContext,以及对已经进入KContext的多个普通类对象进行管理,并实现了 一些通用的接口 。用户定义的KContext也是一个构件类,它所具有的语境特征由其属性aspect来决定,并且context—般情况下要带属性aspect,在编写CAR文件时,context作为关键字用来定义一个普通语境构件类。例如 moduleinterface IAspect { Foo ()}interface IHello { Hello ()}aspect AAspect {interface IAspect'.[aspect(AAspect)]context KContext{ interface IHello,.上述的示例中定义了一个名为KContext语境构件类,类中定义了一个普通的接口。 具有context关键字的Aspect只作为一个属性而存在,Aspect的功能只是静态存在context中,而不对context起作用。当其他构件iiA这个context时,aspect就会动态聚合到这个构件中。对于Context^Mt,通常包含了以下步骤 系统进行初始化操作; 系统实例化Context构件; 实例化普通构件; 攀 构件iS^v context; 客户代码调用构件接口; 构件离开context;下面将详细说明Context构件对象语境的进入和离开如果一个构件对象进入了一语境,那么该对象会聚合语境的特征,也就是聚合了语境属 性里的aspect对象,从而使该对象拥有了语境特征;如果该对象离开此语境,那么会拆卸聚合该语境属性里的aspect对象。CAR构件库提供如下两个函数分别完成语境的进入和离开ECode CObject: - EnterContext: (PObject pObject, PContext pContext),' ECode CObject:: IieaveContext (PObject pObject, PContext pContext),'EnterContext函数完成的功能是由语境对象创建其特征实例(aspect对象),而构件对象 进入语境时动态聚合这些aspect对象。包含了以下步骤(1) 语境对象调用消息函数OnObjectEntering通知构件对象正在进入语境;(2) 语境对象创建语境特征Aspect;(3 )构件对象动态聚合语境特征Aspect;(4) 循环运行上述步骤(2 )、 (3),把context所有的语境特征aspect与构件对象聚合;(5) 语境对象调用消息函数OnObjectEntered通知构件对象已进入语境。 LeaveContext实现的功能是对象iiX者pObj拆卸聚合语境pContext的特征,包括以下步(1) 语境对象调用消息函数OnObjectLeaving通知构件对象正在退出语境;(2) 构件对象拆卸语境特征Aspect;(3) 销毁语境特征Aspect;(4) 循环上述步骤(2 )、 ( 3 ),把pObj所有的语境特征aspect拆卸;(5) 语境对象调用消息函数OnObjectLeft (pObj)通知构件对象已退出语境。 关于语境进入者、语境以及语境特征三者的关系有如下几点(1) 构件对象进入语境后,构件对象并不聚合语境本身所实现的接口功能,对象只是聚 合语境的特征(aspect对象)。(2) 语境的特征只是语境的属性,在实现上是aspect对象,但语境本身并不具有这些 aspect对象的功能。如宠物店语境并不具有宠物和商品对象实例的功能。(3 )语境的特征只是语境的静态属性。(4) 一个对象可以进入多个语境,每个语境可被多个对象进入。(5) 在实际上不是所有的对象都可进入某个语境的,语境可对进入者设置条件,只有条 件满足者才可"。(6) 也不是所有的对象都可随便离开某个语境,语境可对对象设置条件,只有条件满足 者才可离开。对于每个context构件类,可重栽如下几个函数来满足构件对象的进入和离开时的制约处理virtual CARAPI OnObjectEntering (PObject pOb j ) 〃对象进入前调用,可以在这里检查对象是否满足要求。 virtual CARAPI OnObjectEntered (PObject pOb j )〃对象i^A后(已经聚合上context定义的aspects )调用。 virtual CARAPI OnObjectlieaving (PObject pObj ) //对象离开前调用,context可以在这里控制是否允许对象离开。 virtual CARAPI OnObjectLeft (PObject pObj ) //对象离开后调用,在这里做善后工作。再请参阅图3a至图3d所示,其中本发明的方法的具体实现原理如下(1) 请参阅图3a所示,客户程序创建构件对象pObject并调用其接口方法。(2) 请参阅图3b所示,客户程序创建语境对象pContext。(3 )客户程序调用CObject:: EnterContext(pObject, pContext)使构件对象pObject进入语 境对象pContext。其中CObject::EnterContext函数直接调用pContext->ObjectEnter(pObject)。 ObjectEnter是由CAR编译器直接根据CAR文件信息直接生成的函数。(4) 请参阅图3c所示,客户程序调用语境特征的接口函数。(5) 请参阅图3d所示,新的构建对象ii^语境环境,重复上面的(1)至(4)。(6) 客户程序调用CObject:: LeayeContext(pObject, pContext)使构件对象pObject离开 语境对象pContext。其中CObject:: LeaveContext函数直接调用pContext-〉ObjectLeft(pObject)。 Objecffinter是由CAR编译器直接根据CAR文件信息直接生成的函数。在下面的代码示例中,其描述的是一个child (构件)进入school (语境)变成student (语境特征)的例子。module car elastos.com/native/Go2SchoolDemo dllinterface工Child { Play()class CChilci {interface IChild,'interface istudent { Study ()GetID([out] Int32* pld)aspect AStudent {interface 工Studentinter:face工School { Open();[aspect(AStudent)] context KSchool {interface ISchool,'在该示例中定义了 一个方面构件类(AStudent)和一个语境构件类(KSchool )。 KSchool 语境拥有特征AStudent.当一个CChild对象被创建时,他是一个"小孩,,,具有小孩的行为"玩"(Play),而把"小 孩"送到学校,他就变成了学生,具有了学生的行为"学习"(Study),而当他从学校毕业,在 进入新的环境(语境context)前他又变成了 "小孩"。换成代码描述就是 一个构件对象(CChild)被创建,它只具有PlayO方法,在它进入了 一个语境(KSchool),那么该对象会聚合语境的特征(AStudent ),也就是聚合了语境属性里 的aspect对象(AStudent),从而具有了 Study()方法;如果该对象离开此语境,那么会拆卸聚 合该语境属性里的aspect对象。对于服务端对于每个context构件类,可重载如下几个函数在对象进入和离开时做一些事情(1) OnObjectEntering在对象准备进入语境时发生,可以用来检查对象是否达到入学成 缋或年龄。(2) OnObjectEntered在对象已经进入语境时发生,可以用来为学生分班级和学号。(3) OnObjectLeaving在对象准备离开语境时发生,可以用来控制是否允许对象离开, 比如判断其是否毕业成绩达标。(4) ,OnObjectLeft在对象已经离开语境时发生,可以用来做善后工作。比如要张榜公告 一下毕业名单之类的。继续上面的"小孩""学生"和"学校"的例子KSchool.cpp对应语境(context) KSchool的实现代码如下#include "KSchool,h" #include "—KSchool.cpp" ECode KSchool::OnObjectEntering( /★ [in] V PObject pObject)CConsole: : WriteLine > KSchool: :OnObjectEntering () ")' 〃这里检查对象是否达到入学成绩或年龄ECode KSchool::OnObjectEntered( /★ [in] ★/ PObject pObject)CConsole- -W:rite:Line (I/'-> KSchool - - OnObjectEntered ()"), //这里可以用来为学生分班级和学号ECode KSchool: :OnObject:Leaving ( /* [in} V PObject pObject)CConsole: : WriteLine (!/'—> KSchool: : OnOb j ectiLeaving () "), 〃这里控制是否允许对象离开,比如判断其是否毕业成绩达标。}ECode KSphool: :OnObject!Left ( /★ [in〗 V PObject pObject)CConsole.. :Writeliine (1/'-> KSchool: :OnObjectljeft (),,."), 〃这里可以用来做善后工作。比如要张榜公告一下毕业名单之类的ECode KSchool::Open()CConsole: :WriteLine (L"The school opens. ")' return NOERROR'.对于aspect方面对象AStudent,我们希望在它被自动聚合时也能够做一些相应的工作,编写AStudent.cpp如下#include "AStudent,h" #include "—AStudent,cpp"ECode AStudent::OnAspectAttaching( /★ [in] */ PObject pObject)CConsole: :WriteLine (L"-> AStudent: : OnAspectAttaching ()..."),.ECode AStudent::OnAspectDetaching( /★ [in] V PObject pObject)CConsole: :iteliine (I/' -> AStudent: : OnAspectDetaching () ")' ECode AStudent::Study()〃打印"谁"'s studying. ")ECode AStudent: :Get.ID (/★ [out] */ Int32 ★ pld)〃取学号.最后,实现一个普通的构件对象CChild,希望这个构件对象进入KSchool这个context的时候能够自动的聚合AStudent这个方面对象,并在聚合了这个对象之后打印出一些信息#include "CChild,h" #include "_CChild,cpp" ECode CChild::OnAspectAttaching( /* [in] ★/ PObject pAspect)CConsole: :Writeldne (I/'-> CChild-ECode CChild:s OnAspectDetaching( /* [inI */ PObject pAspect)CConsole: :W:riteIjine (L"-> CChild:}.ECode CChild::Play()OnAspectAttaching ()" "),.OnAspectDetaching ()" "), 〃打印"谁"'s playing.对于客户端,具体客户端的代码实现如下#import "Go2SchoolDemo,dll"ECode ElastosMain(const WStringArray& args)IChild* pChild = NULIi,-ISchool* pSchool = NUIiIj'. 〃创建一个名字为Sophie的CChild对象 〃ECode ec = CChild: :New(L"Sophie", &pChild)pChildl->Play ()//判读pChild是否为一个学生IStudent* pStudent'.ec = IStudent"WeakQuery (pChild, &pStudent) if (FAILED(ec)) {/7打印"Sophie' s not a student yet,〃创建一个KSchool对象ec = KSchool: :New(&pSchool),.pSchool->Open ()〃对象pChildi4yV学校ec = CObject::EnterContext(pChild, pSchool), if (FAILED(ec)) { 〃不符合条件;〃判读pChild是否为一个学生 ec = IStudent: :WeakQuery (pChild, &pStudent) if (SUCCEEDED(ec)) {〃调用Study ()函数pStudent->Study ()〃调用GetID函数pStudent—>GetID(&id) '*〃毕业了现在要离开学校 ec = CObject J :LeaveContext (pChild, pSchool) if (FAILED(ec)) { 〃没达到毕业要求}〃/判读pChild是否为一个学生= IStudent: :WeakQue:ry (pChildl, &pStudent) if (FAILED (ech {//打印"Sophie' s not a student anymore,"编译后运行的结果为Sophie's playing.Sophie's not a "student yet.The school opens,-> KSchoolr:OnObjectEntering()…-> CChild::OnAspectAttaching() ,--> AStudent::OnAspectAttaching()-> KSchool::OnObjectEntered()… Sophie's studying, Sophie's stud,nt ID is 101 一> KSchool: :OnObjectLieaving () , 一> CChi4d::OnAspectDetaching()," 一> AStudent::OnAspectDetaching(),., -> KSchool: :OnObjectlieft ()… Sophie' s riot a student anymore.采用了上述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方 法,由于其基于方面构件类模型和动态聚合技术实现了外部构件对象实例在进入不同的语境 时能够具有不同的语境特征,也就是说可以使不同的外部构件对象实例不用各自编码就能够具备相应的环境特征,从而突破了 COM+的对象语境(context)紧密依赖对象的限制,提高 了构件应用的灵活性,在CAR构件的面向方面编程领域是一次重大的进步;同时降低了程序 设计的复杂度,为构件面向方面编程提供了更宽广的空间,为软件工厂化提供了一条更简便 的途径;而且提高了软件的可扩展性,能够更好地描述现实世界模型,方便了用户对不同需 求的扩展,为计算机构件化软件技术的进一步发展奠定了坚实的基础。在此说明书中,本发明已参照其特定的实施例作了描迷。但是,很显然仍可以作出各种 修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限 制性的。
权利要求
1、一种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的方法包括以下步骤(1)系统进行初始化操作;(2)系统实例化语境构件类得到语境构件对象实例;(3)系统实例化外部构件类得到外部构件对象实例;(4)系统根据用户操作,对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作;(5)系统根据调用者的需要,调用所述的语境特征对象实例的构件接口;(6)系统根据用户操作,对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作。
2、 才艮据权利要求1所述的计算初教件系统中实现构件对象在语境对象中自动具备语境特 征功能的方法,其特征在于,所述的语境构件类内包含有语境特征方面构件类属性,所述的 对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作,包括以下步骤(41) 所述的语境构件对象实例创建语境特征方面构件类的对象实例;(42) 所迷的外部构件对象实例动态聚合所述的语境特征方面构件类的对象实例;(43 )系统判断所述的外部构件对象实例是否已经动态聚合了所述的语境构件对象实例 中所有的语境特征方面构件类的对象实例; (44)如果否,则重复上述步骤(41)。
3、 才艮据权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特 征功能的方法,其特征在于,所述的对该外部构件对象实例进行进入所迷的语境构件对象实 例的处理操作中的步骤(41)之前还包括以下步骤(40)所述的外部构件对象实例进4亍进入所述的语境构件对象实例前的制约处理。
4、 根据权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特 征功能的方法,其特征在于,所述的对该外部构件对象实例进行进入所述的语境构件对象实 例的处理操作中的步骤(44)之前还包括以下步骤(45 )所述的外部构件对象实例已经动态聚合了所述的语境构件对象实例中所有的语境 特征方面构件类的对象实例后的制约处理。
5、 根据权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的语境特征方面构件类为所述的语境构件类内的静态属性。
6、 根据权利要求》至5中任一项所迷的计算M件系统中实现构件对象在语境对象中自 动具备语境特征功能的方法,其特征在于,所述的对该外部构件对象实例进行离开所述的语 境构件对象实例的处理操作,包括以下步骤(61) 所述的外部构件对象实例动态拆卸聚合所述的语境特征方面构件类的对象实例;(62) 销毁所述的语境特征方面构件类的对象实例;(63 )系统判断所述的外部构件对象实例是否已经动态拆卸聚合了所述的语境构件对象 实例中所有的语境特征方面构件类的对象实例; (64)如果否,则重复上述步骤(61)。
7、 根据权利要求6所述的计算机軟件系统中实现构件对象在语境对象中自动具备语境特 征功能的方法,其特征在于,所述的对该外部构件对象实例进行离开所述的语境构件对象实 例的处理搮作中的步骤(61)之前还包括以下步骤(60)所述的外部构件对象实例进行离开所述的语境构件对象实例前的制约处理。
8、 根据权利要求6所述的计算4^件系统中实现构件对象在语境对象中自动具备语境特 征功能的方法,其特征在于,所述的对该外部构件对象实例进行离开所述的语境构件对象实 例的处理操作中的步骤(64)之前还包括以下步骤(65 )所述的外部构件对象实例已经动态拆卸聚合了所述的语境构件对象实例中所有的 语境特征方面构件类的对象实例后的制约处理。
全文摘要
本发明涉及一种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,包括系统实例化语境构件类得到语境构件对象实例、系统实例化外部构件类得到外部构件对象实例、对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作、调用所述的语境特征对象实例的接口、对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作。采用该种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,提高了构件应用的灵活性,降低了程序设计的复杂度,为构件编程提供了更宽广的空间,为软件工厂化提供了简便途径;提高了软件的可扩展性,能够更好地描述现实世界模型,方便用户对不同需求的扩展,为计算机构件化软件技术的进一步发展奠定了坚实基础。
文档编号G06F9/44GK101216759SQ20071017311
公开日2008年7月9日 申请日期2007年12月26日 优先权日2007年12月26日
发明者宋世军, 梁宇洲, 牛靖宇, 苏翼鹏, 榕 陈, 陈冬晓 申请人:上海科泰世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1