CN101216759B - 计算机系统中实现构件在语境中具备语境特征功能的方法 - Google Patents
计算机系统中实现构件在语境中具备语境特征功能的方法 Download PDFInfo
- Publication number
- CN101216759B CN101216759B CN2007101731165A CN200710173116A CN101216759B CN 101216759 B CN101216759 B CN 101216759B CN 2007101731165 A CN2007101731165 A CN 2007101731165A CN 200710173116 A CN200710173116 A CN 200710173116A CN 101216759 B CN101216759 B CN 101216759B
- Authority
- CN
- China
- Prior art keywords
- linguistic context
- component
- contextual feature
- component object
- contextual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000006116 polymerization reaction Methods 0.000 claims description 28
- 230000002776 aggregation Effects 0.000 claims description 16
- 238000004220 aggregation Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 15
- 230000003068 static effect Effects 0.000 claims description 5
- 230000006378 damage Effects 0.000 claims description 2
- 238000013459 approach Methods 0.000 abstract description 3
- 239000007787 solid Substances 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 32
- 238000005516 engineering process Methods 0.000 description 13
- 230000007613 environmental effect Effects 0.000 description 7
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 5
- 241000282326 Felis catus Species 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,包括系统实例化语境构件类得到语境构件对象实例、系统实例化外部构件类得到外部构件对象实例、对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作、调用所述的语境构件对象实例的接口、对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作。采用该种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,提高了构件应用的灵活性,降低了程序设计的复杂度,为构件编程提供了更宽广的空间,为软件工厂化提供了简便途径;提高了软件的可扩展性,能够更好地描述现实世界模型,方便用户对不同需求的扩展,为计算机构件化软件技术的进一步发展奠定了坚实基础。
Description
技术领域
本发明涉及计算机软件技术领域,特别涉及计算机构件化软件系统领域,具体是指一种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法。
背景技术
随着现代构件化计算机软件技术的进一步发展,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接口的构件对象。关于方面构件对象模型以及构件动态聚合的具体技术细节信息,请参阅发明专利申请:“实现计算机软件系统中的构件动态聚合的方x法”(申请号:200610027124.4,公开号:CN1851643,公开日:2006年10月25日)。
其中,动态聚合是通过IObject的Aggregate方法来完成的,因此构件编写者定义的每个构件对象都具有聚合其他aspect对象的能力。一般实现动态聚合都通过方面构件类提供的静态方法Attach(IObject* pObj)和Detach(IObject* pObj)方法来完成。
在现有技术的COM+中,当COM+激活对象时,它创建对象的环境(context),对象的环境与对象通过COM+紧紧附在一起。当COM+为对象创建环境时,它检查组件的目录项以便决定哪些属性需要被放到环境中。COM+的对象语境(context)紧密依赖对象,这样语境就失去了独立性。
但是在现实世界里,一个构件对象往往会随着环境改变而表现出(或拥有)不同的特征。当一个CChild对象被创建时,他是一个“小孩”,具有小孩的行为“玩”(Play),而把“小孩”送到学校,他就变成了学生,具有了学生的行为“学习”(Study),而当他从学校毕业,在进入新的环境(语境context)前他又变成了“小孩”。再比如宠物店的猫(构件对象),具有宠物和商品两方面的特征(aspect)。但猫刚生下来时却未必是宠物,更不会是商品;而一旦被售出,就不再是商品,但宠物特征却保留了下来。显而易见,让猫进入宠物店就拥有宠物和商品两方面特征,而离开宠物店后就丢弃商品特征,使用COM+是无法实现这种现实模型的,因为COM+本身不是一种随时聚合、随时拆卸的动态聚合模型,这样就制约了现代计算机软件技术的进一步发展。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种能够使得构件对象在不同的语境里具有不同特征、有效提高构件应用的灵活性、降低程序设计的复杂度、更好地描述现实世界模型、使用快捷方便、工作性能稳定可靠、适用范围较为广泛的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法。
为了实现上述的目的,本发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法如下:
该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其主要特点是,所述的方法包括以下步骤:
(1)系统进行初始化操作;
(2)系统实例化语境构件类得到语境构件对象实例;
(3)系统实例化外部构件类得到外部构件对象实例;
(4)系统根据用户操作,对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作;
(5)系统根据调用者的需要,调用所述的语境构件对象实例的构件接口;
(6)系统根据用户操作,对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作。
采用了该发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,由于其基于方面构件类模型和动态聚合技术实现了外部构件对象实例在进入不同的语境时能够具有不同的语境特征,也就是说可以使不同的外部构件对象实例不用各自编码就能够具备相应的环境特征,从而突破了COM+的对象语境(context)紧密依赖对象的限制,提高了构件应用的灵活性,在CAR构件的面向方面编程领域是一次重大的进步;同时降低了程序设计的复杂度,为构件面向方面编程提供了更宽广的空间,为软件工厂化提供了一条更简便的途径;而且提高了软件的可扩展性,能够更好地描述现实世界模型,方便了用户对不同需求的扩展,为计算机构件化软件技术的进一步发展奠定了坚实的基础。
附图说明
图1为本发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中外部构件对象实例进入语境构件对象实例的流程图。
图2为本发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法中外部构件对象实例离开语境构件对象实例的流程图。
图3a、3b、3c和3d为本发明的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法具体实现过程的原理示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图1和图2所示,该计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,包括以下步骤:
(1)系统进行初始化操作;
(2)系统实例化语境构件类得到语境构件对象实例;
(3)系统实例化外部构件类得到外部构件对象实例;
(4)系统根据用户操作,对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作,其中,语境构件类内包含有语境特征方面构件类属性,该语境特征方面构件类为所述的语境构件类内的静态属性,所述的处理操作包括以下步骤:
(a)所述的外部构件对象实例进行进入所述的语境构件对象实例前的制约处理;
(b)所述的语境构件对象实例创建语境特征方面构件类的对象实例;
(c)所述的外部构件对象实例动态聚合所述的语境特征方面构件类的对象实例;
(d)系统判断所述的外部构件对象实例是否已经动态聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例;
(e)如果否,则重复上述步骤(b);
(f)所述的外部构件对象实例已经动态聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例后的制约处理;
(5)系统根据调用者的需要,调用所述的语境构件对象实例的构件接口;
(6)系统根据用户操作,对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作,包括以下步骤:
(a)所述的外部构件对象实例进行离开所述的语境构件对象实例前的制约处理;
(b)所述的外部构件对象实例动态拆卸聚合所述的语境特征方面构件类的对象实例;
(c)销毁所述的语境特征方面构件类的对象实例;
(d)系统判断所述的外部构件对象实例是否已经动态拆卸聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例;
(e)如果否,则重复上述步骤(b);
(f)所述的外部构件对象实例已经动态拆卸聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例后的制约处理。
在实际应用当中,语境是对象运行时的环境,一个对象如果进入了语境,那么该对象将具有此语境的特征,一旦对象离开了语境,环境特征就会失去(但该对象很有可能又进入了另外一个语境,拥有新的环境特征)。CAR构件的语境特征实现的技术利用了aspect。
CAR构件语境是基于动态聚合实现的一种技术,所谓的具有语境特征或失去语境特征,就是语境会为对象动态的聚合或拆卸聚合一个或多个aspect对象。这些aspect对象是语境在car文件中定义时指定的。
Aspect只能作为一个主语(某个构件对象)的谓词存在。那么它通过什么和主语产生从属关系呢?一个对象如果进入了语境,那么该对象将具有此语境的特征,一旦对象离开了语境,环境特征就会失去。但该对象很有可能又进入了另外一个语境,拥有新的环境特征。这里环境特征就是方面aspect。当作为主语的构件对象进入了语境,那么这个语境中的Aspect构件对象就会与之聚合,就签订了主从的契约。当作为主语的构件对象离开了语境,那么这个语境中的Aspect构件对象就会与之拆离,就注销了主从的契约。
而动态聚合是通过IObject的Aggregate方法来完成的,因此构件编写者定义的每个构件对象都具有聚合其他aspect对象的能力。
在此,引入CAR文件中的Context关键字:
在CAR中,语境技术通过系统语境构件类CContext来实现普通类对象CClass进出普通语境类对象KContext,以及对已经进入KContext的多个普通类对象进行管理,并实现了一些通用的接口。用户定义的KContext也是一个构件类,它所具有的语境特征由其属性aspect来决定,并且context一般情况下要带属性aspect。在编写CAR文件时,context作为关键字用来定义一个普通语境构件类。例如:
module
{
interface IAspect{
Foo();
}
interface IHello{
Hello();
}
aspect AAspect{
interface IAspect;
}
[aspect(AAspect)]
context KContext{
interface IHello;
}
}
上述的示例中定义了一个名为KContext语境构件类,类中定义了一个普通的接口。
具有context关键字的Aspect只作为一个属性而存在,Aspect的功能只是静态存在context中,而不对context起作用。当其他构件进入这个context时,aspect就会动态聚合到这个构件中。
对于Context操作,通常包含了以下步骤:
·系统进行初始化操作;
·系统实例化Context构件;
·实例化普通构件;
·构件进入context;
·客户代码调用构件接口;
·构件离开context;
下面将详细说明Context构件对象语境的进入和离开:
如果一个构件对象进入了一语境,那么该对象会聚合语境的特征,也就是聚合了语境属性里的aspect对象,从而使该对象拥有了语境特征;如果该对象离开此语境,那么会拆卸聚合该语境属性里的aspect对象。
CAR构件库提供如下两个函数分别完成语境的进入和离开:
ECode CObject::EnterContext(PObject pObject,PContext pContext);
ECode CObject::LeaveContext(PObject pObject,PContext pContext);
EnterContext函数完成的功能是:由语境对象创建其特征实例(aspect对象),而构件对象进入语境时动态聚合这些aspect对象。包含了以下步骤:
(1)语境对象调用消息函数OnObjectEntering通知构件对象正在进入语境;
(2)语境对象创建语境特征Aspect;
(3)构件对象动态聚合语境特征Aspect;
(4)循环运行上述步骤(2)、(3),把context所有的语境特征aspect与构件对象聚合;
(5)语境对象调用消息函数OnObjectEntered通知构件对象已进入语境。
LeaveContext实现的功能是对象进入者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 pObj);
//对象进入前调用,可以在这里检查对象是否满足要求。
virtual CARAPI OnObjectEntered(PObject pObj);
//对象进入后(已经聚合上context定义的aspects)调用。
virtual CARAPI OnObjectLeaving(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所示,新的构建对象进入语境环境,重复上面的(1)至(4)。
(6)客户程序调用CObject::LeaveContext(pObject,pContext)使构件对象pObject离开语境对象pContext。其中CObject::LeaveContext函数直接调用pContext->ObjectLeft(pObject)。ObjectEnter是由CAR编译器直接根据CAR文件信息直接生成的函数。
在下面的代码示例中,其描述的是一个child(构件)进入school(语境)变成student(语境特征)的例子。
module car.elastos.com/native/Go2SchoolDemo.dll
{
interface IChild{
Play();
}
class CChild{
interface IChild;
}
interface IStudent{
Study();
GetID([out]Int32*pId);
}
aspect AStudent{
interface IStudent;
}
interface ISchool{
Open();
}
[aspect(AStudent)]
context KSchool{
interface ISchool;
}
}
在该示例中定义了一个方面构件类(AStudent)和一个语境构件类(KSchool)。KSchool语境拥有特征AStudent。
当一个CChild对象被创建时,他是一个“小孩”,具有小孩的行为“玩”(Play),而把“小孩”送到学校,他就变成了学生,具有了学生的行为“学习”(Study),而当他从学校毕业,在进入新的环境(语境context)前他又变成了“小孩”。
换成代码描述就是:一个构件对象(CChild)被创建,它只具有Play()方法,在它进入了一个语境(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]*/PObject pObject)
{
CConsole::WriteLine(L″->KSchool::OnObjectEntering()...″);
//这里检查对象是否达到入学成绩或年龄
}
ECode KSchool::OnObjectEntered(
/*[in]*/PObject pObject)
{
CConsole::WriteLine(L″->KSchool::OnObjectEntered()...″);
//这里可以用来为学生分班级和学号
}
ECode KSchool::OnObjectLeaving(
/*[in]*/PObject pObject)
{
CConsole::WriteLine(L″->KSchool::OnObjectLeaving()...″);
//这里控制是否允许对象离开,比如判断其是否毕业成绩达标。
}
ECode KSchool::OnObjectLeft(
/*[in]*/PObject pObject)
{
CConsole::WriteLine(L″->KSchool::OnObjectLeft()...″);
//这里可以用来做善后工作。比如要张榜公告一下毕业名单之类的
}
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]*/PObject pObject)
{
CConsole::WriteLine(L″->AStudent::OnAspectDetaching()...″);
}
ECode AStudent::Study()
{
//打印″谁″′s studying.″);
}
ECode AStudent::GetID(
/*[out]*/Int32*pId)
{
//取学专.
}
最后,实现一个普通的构件对象CChild,希望这个构件对象进入KSchool这个context的时候能够自动的聚合AStudent这个方面对象,并在聚合了这个对象之后打印出一些信息:
#include″CChild.h″
#include″_CChild.cpp″
ECode CChild::OnAspectAttaching(
/*[in]*/PObject pAspect)
{
CConsole::WriteLine(L″->CChild::OnAspectAttaching()...″);
}
ECode CChild::OnAspectDetaching(
/*[in]*/PObject pAspect)
{
CConsole::WriteLine(L″->CChild::OnAspectDetaching()...″);
}
ECode CChild::Play()
{
//打印″谁″′s playing.
}
对于客户端,具体客户端的代码实现如下:
#import″Go2SchoolDemo.dll″
ECode ElastosMain(const WStringArray& args)
{
IChild* pChild=NULL;
ISchool* pSchool=NULL;
//创建一个名字为Sophie的CChild对象
//
ECode ec=CChild::New(L″Sophie″,&pChild);
pChild1->Play();
//判读pChild是否为一个学生
IStudent* pStudent;
ec=IStudent::WeakQuery(pChild,&pStudent);
if(FAILED(ec)){
//打印″Sophie′s not a student yet.″;
}
//创建一个KSchool对象
ec=KSchool::New(&pSchool);
pSchool->Open();
//对象pChild进入学校
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::LeaveContext(pChild,pSchool);
if(FAILED(ec)){
//没达到毕业要求
}
///判读pChild是否为一个学生
ec=IStudent::WeakQuery(pChild1,&pStudent);
if(FAILED(ec)){
//打印″Sophie′s not a student anymore.″
}
}
编译后运行的结果为:
Sophie′s playing.
Sophie′s not a student yet.
The school opens.
->KSchool::OnObjectEntering()...
->CChild::OnAspectAttaching()...
->AStudent::OnAspectAttaching()...
->KSchool::OnObjectEntered()...
Sophie′s studying.
Sophie′s student ID is 101
->KSchool::OnObjectLeaving()...
->CChild::OnAspectDetaching()...
->AStudent::OnAspectDetaching()...
->KSchool::OnObjectLeft()...
Sophie′s not a student anymore.
采用了上述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,由于其基于方面构件类模型和动态聚合技术实现了外部构件对象实例在进入不同的语境时能够具有不同的语境特征,也就是说可以使不同的外部构件对象实例不用各自编码就能够具备相应的环境特征,从而突破了COM+的对象语境(context)紧密依赖对象的限制,提高了构件应用的灵活性,在CAR构件的面向方面编程领域是一次重大的进步;同时降低了程序设计的复杂度,为构件面向方面编程提供了更宽广的空间,为软件工厂化提供了一条更简便的途径;而且提高了软件的可扩展性,能够更好地描述现实世界模型,方便了用户对不同需求的扩展,为计算机构件化软件技术的进一步发展奠定了坚实的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
Claims (8)
1.一种计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的方法包括以下步骤:
(1)系统进行初始化操作;
(2)系统实例化语境构件类得到语境构件对象实例;
(3)系统实例化外部构件类得到外部构件对象实例;
(4)系统根据用户操作,对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作;
(5)系统根据调用者的需要,调用所述的语境构件对象实例的构件接口;
(6)系统根据用户操作,对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作。
2.根据权利要求1所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的语境构件类内包含有语境特征方面构件类属性,其中步骤(4)包括以下步骤:
(41)所述的语境构件对象实例创建语境特征方面构件类的对象实例;
(42)所述的外部构件对象实例动态聚合所述的语境特征方面构件类的对象实例;
(43)系统判断所述的外部构件对象实例是否已经动态聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例;
(44)如果否,则返回上述步骤(41)。
3.根据权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的对该外部构件对象实例进行进入所述的语境构件对象实例的处理操作中的步骤(41)之前还包括以下步骤:
(40)所述的外部构件对象实例进行进入所述的语境构件对象实例前的制约处理。
4.根据权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,在步骤(44)之前还包括以下步骤:
(45)所述的外部构件对象实例已经动态聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例后的制约处理。
5.根据权利要求2所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的语境特征方面构件类为所述的语境构件类内的静态属性。
6.根据权利要求2至5中任一项所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作,包括以下步骤:
(61)所述的外部构件对象实例动态拆卸聚合所述的语境特征方面构件类的对象实例;
(62)销毁所述的语境特征方面构件类的对象实例;
(63)系统判断所述的外部构件对象实例是否已经动态拆卸聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例;
(64)如果否,则返回上述步骤(61)。
7.根据权利要求6所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作中的步骤(61)之前还包括以下步骤:
(60)所述的外部构件对象实例进行离开所述的语境构件对象实例前的制约处理。
8.根据权利要求6所述的计算机软件系统中实现构件对象在语境对象中自动具备语境特征功能的方法,其特征在于,所述的对该外部构件对象实例进行离开所述的语境构件对象实例的处理操作中的步骤(64)之前还包括以下步骤:
(65)所述的外部构件对象实例已经动态拆卸聚合了所述的语境构件对象实例中所有的语境特征方面构件类的对象实例后的制约处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101731165A CN101216759B (zh) | 2007-12-26 | 2007-12-26 | 计算机系统中实现构件在语境中具备语境特征功能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101731165A CN101216759B (zh) | 2007-12-26 | 2007-12-26 | 计算机系统中实现构件在语境中具备语境特征功能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101216759A CN101216759A (zh) | 2008-07-09 |
CN101216759B true CN101216759B (zh) | 2011-05-25 |
Family
ID=39623198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101731165A Expired - Fee Related CN101216759B (zh) | 2007-12-26 | 2007-12-26 | 计算机系统中实现构件在语境中具备语境特征功能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101216759B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006019506A1 (en) * | 2004-07-16 | 2006-02-23 | Graphlogic Inc. | Object process graph application controller-viewer |
CN1275148C (zh) * | 2004-06-16 | 2006-09-13 | 北京大学 | 构件化软件中非功能特征组装方法 |
CN1851643A (zh) * | 2006-05-30 | 2006-10-25 | 上海科泰世纪科技有限公司 | 实现计算机软件系统中的构件动态聚合的方法 |
-
2007
- 2007-12-26 CN CN2007101731165A patent/CN101216759B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1275148C (zh) * | 2004-06-16 | 2006-09-13 | 北京大学 | 构件化软件中非功能特征组装方法 |
WO2006019506A1 (en) * | 2004-07-16 | 2006-02-23 | Graphlogic Inc. | Object process graph application controller-viewer |
CN1851643A (zh) * | 2006-05-30 | 2006-10-25 | 上海科泰世纪科技有限公司 | 实现计算机软件系统中的构件动态聚合的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101216759A (zh) | 2008-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9916136B2 (en) | Interface infrastructure for a continuation based runtime | |
US20030200533A1 (en) | Method and apparatus for creating software objects | |
EP2587372B1 (en) | Sharing of first class objects across multiple interpreted programming languages | |
Greifenberg et al. | A comparison of mechanisms for integrating handwritten and generated code for object-oriented programming languages | |
CN102789450A (zh) | 基于规则的可定义式语义解析系统及方法 | |
Alfonso et al. | Building besser: an open-source low-code platform | |
CN103838711A (zh) | 基于规则的可定义式语义解析系统及方法 | |
Thomas et al. | Software real-time resource modeling | |
CN101216759B (zh) | 计算机系统中实现构件在语境中具备语境特征功能的方法 | |
JP2003500739A5 (zh) | ||
CN101714236A (zh) | 一种参与者类型自动扩展方法及装置 | |
Andrade et al. | Aspectj-based idioms for flexible feature binding | |
CN101158901A (zh) | 一种桥接企业级与普通级javabean的方法 | |
US20080295066A1 (en) | Programming model for modular development | |
CN103186388A (zh) | 软件安装方法及装置 | |
Ubayashi et al. | An AOP implementation framework for extending join point models | |
CN107329755A (zh) | 一种hzphp框架 | |
Dascalu et al. | Design patterns automation with template library | |
Johnsen et al. | A dynamic binding strategy for multiple inheritance and asynchronously communicating objects | |
US20060195434A1 (en) | Multiple Invocation Style Integration Framework | |
Vojtko et al. | Adaptability of an embedded operating system: A generator of a platform dependent code | |
Ubayashi et al. | A reflective aspect-oriented model editor based on metamodel extension | |
Ciobanu et al. | Coordination by Timers for Channel-Based Anonymous Communications | |
CN100462914C (zh) | 构件初始化过程中的构造方法 | |
Wolter et al. | StepDP: A Step Towards Expressive and Pervasive Dialogue Platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110525 Termination date: 20151226 |
|
EXPY | Termination of patent right or utility model |