CN101882066B - 创建具体类的实现方法 - Google Patents

创建具体类的实现方法 Download PDF

Info

Publication number
CN101882066B
CN101882066B CN200910050882.1A CN200910050882A CN101882066B CN 101882066 B CN101882066 B CN 101882066B CN 200910050882 A CN200910050882 A CN 200910050882A CN 101882066 B CN101882066 B CN 101882066B
Authority
CN
China
Prior art keywords
class
concrete kind
function
concrete
interface
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
Application number
CN200910050882.1A
Other languages
English (en)
Other versions
CN101882066A (zh
Inventor
陈冬晓
陈榕
宋世军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI
Original Assignee
KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI filed Critical KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI
Priority to CN200910050882.1A priority Critical patent/CN101882066B/zh
Publication of CN101882066A publication Critical patent/CN101882066A/zh
Priority to HK11102973.4A priority patent/HK1148843A1/zh
Application granted granted Critical
Publication of CN101882066B publication Critical patent/CN101882066B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种创建具体类的实现方法,该方法包括:在构件程序中声明接口;定义声明了上述接口的泛类;声明实现所定义的泛类的具体类;编译构件程序并生成一个类厂函数;调用所述类厂函数实现具体类。本发明定义出一种泛类,该泛类抽象出各个一般类所具有的共同的类或接口特性,并且在定义该泛类的创建函数时,可以根据不同的策略自动选择创建不同的具体类。只要这些具体的类都是从该所定义的泛类继承来的,创建具体类时可以直接使用该泛类的创建函数完成,客户端就无需关心创建的是哪些具体类。

Description

创建具体类的实现方法
技术领域
本发明涉及一种在计算机技术领域中创建类的实现方法,尤其指创建具体类的实现方法。
背景技术
现在计算机软件编程技术从面向对象编程到面向构件、中间件编程,是网络时代编程技术的飞跃。
在面向对象编程中,对象的概念拘泥于数据结构加运算。对象实现了程序模块的封装,带来了更加清晰的程序结构。作为面向对象程序设计语言的C++,其编译生成的目标代码obj文件,不含有类信息,因此系统不可能利用类提供动态服务。
在面向构件编程中,构件化编程模型是建立在面向对象技术的基础之上,是完全面向对象的,提供了动态构造部件模块的机制。其中,Elastor操作系统的CAR(Component Application Runtime)作为一个面向构件的编程模型,表现为一组编程规范,包括构件、类、对象、接口等定义与访问构件对象的规定。CAR规定了一组构件间互相调用的标准,使得二进制构件能够自描述,能够在运行时实现动态链接。
但是在面向构件编程时,客户端需要考虑到底要创建哪些具体的类,增加了编程的复杂度。
发明内容
鉴于以上内容,有必要提供一种创建具体类的实现方法。该方法包括步骤:在构件程序中声明接口;定义声明了上述接口的泛类,所述泛类是通过一个generic关键字定义的,对一类构件的类及其函数实现的抽象描述;声明实现所定义的泛类的具体类;编译构件程序并生成一个类厂函数,所述类厂函数为一个创建函数;调用所述类厂函数实现具体类,在步骤调用所述类厂函数实现具体类中所使用的策略是:在该创建函数里通过一个随机数决定生成对应的具体类的实例;编译后的构件程序在运行时,动态检查所实现的具体类与所定义的泛类一致性。
本发明可以在编程时,定义出一种泛类,该泛类抽象出各个一般类所具有的共同的类或接口特性,并且在定义该泛类的创建函数时,可以根据不同的策略自动选择创建不同的具体类。只要这些具体类都是从该所定义的泛类继承来的,创建具体类时可以直接使用该泛类的创建函数完成,客户端就无需关心创建的是哪些具体类。
附图说明
图1是本发明较佳实施例所声明的类之间的继承关系示意图。
图2是本发明较佳实施例创建具体类的实现方法的流程图。
具体实施方式
首先讲述本发明涉及的术语:
CAR即Component Assemble at Runtime,为应用于Elastos操作系统上的构件技术;
CAR文件是Elastos操作系统中定义的用来描述构件(component)的接口(interface)特征的描述文件。
如图1所示,是本发明较佳实施例所声明的泛类与具体类之间的继承关系示意图。
在CAR(Component Assemble at Runtime)文件中,可以通过下列程序代码定义一个Generic泛类,在这里将Generic看作是一个规范:
Generic GCarrier{
interface ICarrier;
}
在上面的程序代码中,通过该Generic关键字定义了一个继承某些接口的Generic泛类,即GCarrier。
然后再在CAR文件中声明实现该Generic泛类的具体类,如:
如图1所示,在上面两段程序代码中,声明了两个实现所定义的泛类的具体类CGSMCarrier和CCDMACarrier。该两个具体类会继承和实现泛类GCarrier的所有接口。
如图2所示,是本发明较佳实施例创建具体类的实现方法的流程图。在本较佳实施例中,以得到一个GSM或CDMA或者WiFi网络的访问构件为例进行说明。
步骤S200,在CAR文件中,首先声明一些接口,再通过关键字Generic定义一个泛类,如GCarrier,该泛类实现上述声明的接口。如下列代码段所示:
Figure GSB0000120876490000032
步骤S202,在上述CAR文件中,声明实现该泛类的具体类,如CGSMCarrier和CCDMACarrier,该两个具体类实现了该泛类GCarrier所声明的所有接口,见下列代码段所示:
Figure GSB0000120876490000033
Figure GSB0000120876490000041
class CGSMCarrier::GCarrier{//声明一个CGSMCarrier类,实现GCarrier所声明的所有接口
interface ICarrier;
interface IGSMCarrier;
}
class CCDMACarrier::GCarrier{//声明一个CCDMACarrier类,实现GCarrier所声明的所有接口
interface ICarrier;
interface ICDMACarrier;
}
步骤S204,CAR编译工具编译上述CAR文件,生成代码框架,该代码框架中包含了IGSMCarrier和ICDMACarrier的所有函数,也隐含生成了ICarrier的所有函数。让该两个具体类CGSMCarrier和CCDMACarrier的实现者去填写具体代码。
步骤S206,对应于在CAR文件中的通过generic关键字所定义的继承ICarrier接口的泛类GCarrier,CAR编译工具生成一个如:GCarrier::New()的类厂函数,并实现该New()函数的方法,在本较佳实施例的叙述中,可将该New()函数称之为创建函数。这个GCarrier::New()函数的实现者在该函数里可以使用不同的策略决定生成具体哪一个继承GCarrier的具体类的实例。在上面的代码段里GCarrier::New()函数通过一个随机数决定生成哪一个具体类的实例。
步骤S204及步骤S206可参考下列代码段所示:
Figure GSB0000120876490000051
步骤S210,在用户端程序中,调用上述的GCarrier::New()函数,从而实例化一个上述泛类的具体类,如下述代码段所示:
Figure GSB0000120876490000052
Figure GSB0000120876490000061
在上面的代码段中可以看出,程序在运行时会动态地检查CGSMCarrier与GCarrier的一致性及/或CCDMACarrier与GCarrier的一致性,也就是说,在CAR文件中必须已经声明“classCGSMCarrier::GCarrier{...}”或“class CCDMACarrier::GCarrier{...}”。用户应用代码中只要写:“ECode ec=GCarrier::New(&pCarrier);”就可以得到一个GSM或CDMA或者WiFi网络的访问构件,从而也就实例化了一个具体类。
由以上结合代码的叙述可知,在编程时,定义出一种抽象出各个一般类所具有的共同的类或接口特性的泛类,并且在定义该泛类的创建函数时,还可以根据不同的策略自动选择创建不同的具体类。只要创建的这些具体类都是从该所定义的泛类继承来的,创建具体类时就可以直接使用该泛类的创建函数完成,客户端就不需要关心创建的是哪些具体的类。

Claims (4)

1.一种创建具体类的实现方法,其特征在于,该方法包括步骤:
在构件程序中声明接口;
定义声明了上述接口的泛类,所述泛类是通过一个generic关键字定义的,对一类构件的类及其函数实现的抽象描述;
声明实现所定义的泛类的具体类;
编译构件程序并生成一个类厂函数,所述类厂函数为一个创建函数;
调用所述类厂函数实现具体类,在步骤调用所述类厂函数实现具体类中所使用的策略是:在该创建函数里通过一个随机数决定生成对应的具体类的实例;及
编译后的构件程序在运行时,动态检查所实现的具体类与所定义的泛类一致性。
2.如权利要求1所述的创建具体类的实现方法,其特征在于,所声明的具体类实现了泛类所声明的所有接口。
3.如权利要求1所述的创建具体类的实现方法,其特征在于,步骤编译构件程序具体包括:
对构件程序进行编译,生成代码框架;
在该代码框架中填写所声明的具体类的代码。
4.如权利要求1所述的创建具体类的实现方法,其特征在于,所述步骤调用所述类厂函数实现具体类包括:
在该类厂函数中,使用不同的策略决定生成继承所述泛类的具体类的实例。
CN200910050882.1A 2009-05-08 2009-05-08 创建具体类的实现方法 Expired - Fee Related CN101882066B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200910050882.1A CN101882066B (zh) 2009-05-08 2009-05-08 创建具体类的实现方法
HK11102973.4A HK1148843A1 (zh) 2009-05-08 2011-03-24 創建具體類的實現方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910050882.1A CN101882066B (zh) 2009-05-08 2009-05-08 创建具体类的实现方法

Publications (2)

Publication Number Publication Date
CN101882066A CN101882066A (zh) 2010-11-10
CN101882066B true CN101882066B (zh) 2014-06-04

Family

ID=43054087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910050882.1A Expired - Fee Related CN101882066B (zh) 2009-05-08 2009-05-08 创建具体类的实现方法

Country Status (2)

Country Link
CN (1) CN101882066B (zh)
HK (1) HK1148843A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077033B (zh) * 2012-08-20 2016-08-24 南京南瑞继保电气有限公司 一种优化组态系统
CN104991452A (zh) * 2015-05-12 2015-10-21 广东瑞德智能科技股份有限公司 一种在面向对象编程中用于家电控制框架的设计方法
CN107038057A (zh) * 2016-10-31 2017-08-11 东软集团股份有限公司 创建类的方法及装置
CN110659017B (zh) * 2019-09-19 2024-03-29 上海客佳信息科技有限公司 一种外部请求处理方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6459441B1 (en) * 1999-03-03 2002-10-01 Dassault Systemes Software interface
CN1740970A (zh) * 2004-08-27 2006-03-01 微软公司 无缝地比较对象的系统和方法
CN101196813A (zh) * 2007-12-26 2008-06-11 上海科泰世纪科技有限公司 计算机软件系统中基于构件接口实现事件回调的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6459441B1 (en) * 1999-03-03 2002-10-01 Dassault Systemes Software interface
CN1740970A (zh) * 2004-08-27 2006-03-01 微软公司 无缝地比较对象的系统和方法
CN101196813A (zh) * 2007-12-26 2008-06-11 上海科泰世纪科技有限公司 计算机软件系统中基于构件接口实现事件回调的方法

Also Published As

Publication number Publication date
CN101882066A (zh) 2010-11-10
HK1148843A1 (zh) 2011-09-16

Similar Documents

Publication Publication Date Title
Voelter et al. Product line engineering using domain-specific languages
CN110825488A (zh) 一种业务处理方法、装置及电子设备和存储介质
CN104932905A (zh) 一种aadl到c语言的代码自动生成方法
Butting et al. Systematic language extension mechanisms for the MontiArc architecture description language
CN101185116A (zh) 在软件程序中使用强数据类型表示语音识别语法
CA2540361A1 (en) System and method for extending capabilities and execution efficiency of script based applications
CN101882066B (zh) 创建具体类的实现方法
Křikava et al. Actress: Domain-specific modeling of self-adaptive software architectures
CN103530097A (zh) 一种跨中间件平台的组件的实现方法和装置
CN102375743B (zh) 一种基于模型和模板开发soa系统的方法
CN110795181A (zh) 基于跳转协议的应用程序界面展示方法、装置及电子设备
Hansen et al. HAZOP analysis of UML-based software architecture descriptions of safety-critical systems
Butting et al. Architectural programming with montiarcautomaton
CN109377348A (zh) 应用于助贷业务系统的业务接口调用方法及助贷业务系统
Hartmann et al. Using MDA for integration of heterogeneous components in software supply chains
Kapova et al. Application of advanced model-driven techniques in performance engineering
Gérard et al. The uml–marte standardized profile
CN116483481A (zh) 一种固件库调用方法、装置、设备及存储介质
JP2008293186A (ja) 鉄鋼プラント制御プログラムの自動生成方法およびその装置
JP2010049439A (ja) ソフトウェアモデルを用いたシステム構築方法およびモデリング装置
Gutiérrez et al. Progress in robocomp
CN115421782A (zh) 应用于iOS端的SDK兼容方法、存储装置及智能终端
CN102567002A (zh) 一种电信增值业务开发环境中转换代码的方法
CN115033212A (zh) 航电系统图元模型一体化构建方法、装置、计算机设备
KR20070061212A (ko) Owl-s와 웹 서비스를 이용한 bpel4ws 생성시스템 및 그 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1148843

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1148843

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140604

Termination date: 20160508

CF01 Termination of patent right due to non-payment of annual fee