亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

創(chuàng)建具體類的實現(xiàn)方法

文檔序號:6482594閱讀:163來源:國知局
專利名稱:創(chuàng)建具體類的實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在計算機技術(shù)領(lǐng)域中創(chuàng)建類的實現(xiàn)方法,尤其指創(chuàng)建具體類的實 現(xiàn)方法。
背景技術(shù)
現(xiàn)在計算機軟件編程技術(shù)從面向?qū)ο缶幊痰矫嫦驑?gòu)件、中間件編程,是網(wǎng)絡(luò)時代 編程技術(shù)的飛躍。在面向?qū)ο缶幊讨?,對象的概念拘泥于?shù)據(jù)結(jié)構(gòu)加運算。對象實現(xiàn)了程序模塊的 封裝,帶來了更加清晰的程序結(jié)構(gòu)。作為面向?qū)ο蟪绦蛟O(shè)計語言的C++,其編譯生成的目標(biāo) 代碼Obj文件,不含有類信息,因此系統(tǒng)不可能利用類提供動態(tài)服務(wù)。在面向構(gòu)件編程中,構(gòu)件化編程模型是建立在面向?qū)ο蠹夹g(shù)的基礎(chǔ)之上,是完全 面向?qū)ο蟮模峁┝藙討B(tài)構(gòu)造部件模塊的機制。其中,Elastor操作系統(tǒng)的CAR (Component Application Runtime)作為一個面向構(gòu)件的編程模型,表現(xiàn)為一組編程規(guī)范,包括構(gòu)件、 類、對象、接口等定義與訪問構(gòu)件對象的規(guī)定。CAR規(guī)定了一組構(gòu)件間互相調(diào)用的標(biāo)準(zhǔn),使得 二進(jìn)制構(gòu)件能夠自描述,能夠在運行時實現(xiàn)動態(tài)鏈接。但是在面向構(gòu)件編程時,客戶端需要考慮到底要創(chuàng)建哪些具體的類,增加了編程 的復(fù)雜度。

發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種創(chuàng)建具體類的實現(xiàn)方法。該方法包括步驟在構(gòu)件 程序中聲明接口 ;定義聲明了上述接口的泛類;聲明實現(xiàn)所定義的泛類的具體類;編譯構(gòu) 件程序并生成一個類廠函數(shù);調(diào)用所述類廠函數(shù)實現(xiàn)具體類。本發(fā)明可以在編程時,定義出一種泛類,該泛類抽象出各個一般類所具有的共同 的類或接口特性,并且在定義該泛類的創(chuàng)建函數(shù)時,可以根據(jù)不同的策略自動選擇創(chuàng)建不 同的具體類。只要這些具體類都是從該所定義的泛類繼承來的,創(chuàng)建具體類時可以直接使 用該泛類的創(chuàng)建函數(shù)完成,客戶端就無需關(guān)心創(chuàng)建的是哪些具體類。


圖1是本發(fā)明較佳實施例所聲明的類之間的繼承關(guān)系示意圖。圖2是本發(fā)明較佳實施例創(chuàng)建具體類的實現(xiàn)方法的流程圖。
具體實施例方式首先講述本發(fā)明涉及的術(shù)語CAR S卩 Component Assemble at Runtime,為應(yīng)用于 Elastos 操作系統(tǒng)上的構(gòu)件技 術(shù);CAR文件是Elastos操作系統(tǒng)中定義的用來描述構(gòu)件(component)的接口(interface)特征的描述文件。如圖1所示,是本發(fā)明較佳實施例所聲明的泛類與具體類之間的繼承關(guān)系示意 圖。在CAR (Component Assemble at Runtime)文件中,可以通過下列程序代碼定義一 個Generic泛類,在這里將Generic看作是一個規(guī)范Generic GCarrier {interface ICarrier ;}在上面的程序代碼中,通過該Generic關(guān)鍵字定義了 一個繼承某些接口的 Generic 泛類,艮口 GCarrier0然后再在CAR文件中聲明實現(xiàn)該Generic泛類的具體類,如Class CGSMCarrier:GCarrier{interface ICarrier ;interface IGSMC arrier ;}及Class CCDMACarrierGCarrier{interface ICarrier ;interface ICDMACarrier ;}如圖1所示,在上面兩段程序代碼中,聲明了兩個實現(xiàn)所定義的泛類的具體類 CGSMCarrier和CCDMACarrier。該兩個具體類會繼承和實現(xiàn)泛類GCarrier的所有接口。如圖2所示,是本發(fā)明較佳實施例創(chuàng)建具體類的實現(xiàn)方法的流程圖。在本較佳實 施例中,以得到一個GSM或CDMA或者WiFi網(wǎng)絡(luò)的訪問構(gòu)件為例進(jìn)行說明。步驟S200,在CAR文件中,首先聲明一些接口,再通過關(guān)鍵字Generic定義一個泛 類,如GCarrier,該泛類實現(xiàn)上述聲明的接口。如下列代碼段所示interface ICarrier { // j^X ICarrier ^ ΠConnect ();Disconnect ();GetName(WStringBuf_<50>name);}generic GCarrier { //定義一個 GCarrier 泛類interface ICarrier ;}步驟S202,在上述 CAR文件中,聲明實現(xiàn)該泛類的具體類,如CGSMCarrier和 CCDMACarrier,該兩個具體類實現(xiàn)了該泛類GCarrier所聲明的所有接口,見下列代碼段所 示interface IGSMCarrier { //定義一個 IGSMCarrier 接口DoSomethingffithGSM();}
interface ICDMACarrier { //定義一個 ICDM ACarrier 接口DoSomethingffithCDMA();}class CGSMCarrier: :GCarrier{//聲明一個CGSMCarrier類,實現(xiàn)GCarrier所聲 明的所有接口interface ICarrier ;interface IGSMCarrier ;}class CCDMACarrier GCarrieH//聲明一個 CCDMACarrier 類,實現(xiàn)GCarrier 所 聲明的所有接口interface ICarrier ;interface ICDMACarrier ;}步驟S204,CAR編譯工具編譯上述CAR文件,生成代碼框架,該代碼框架中包含了 IGSMCarrier和ICDMACarrier的所有函數(shù),也隱含生成了 ICarrier的所有函數(shù)。讓該兩個 具體類CGSMCarrier和CCDMACarrier的實現(xiàn)者去填寫具體代碼。步驟S206,對應(yīng)于在CAR文件中的通過generic關(guān)鍵字所定義的繼承ICarrier 接口的泛類GCarrier,CAR編譯工具生成一個如GCarr i er New ()的類廠函數(shù),并實現(xiàn)該 New()函數(shù)的方法,在本較佳實施例的敘述中,可將該New()函數(shù)稱之為創(chuàng)建函數(shù)。這個 GCarrier::New()函數(shù)的實現(xiàn)者在該函數(shù)里可以使用不同的策略決定生成具體哪一個繼 承GCarrier的具體類的實例。在上面的代碼段里GCarrier: New ()函數(shù)通過一個隨機數(shù) 決定生成哪一個具體類的實例。步驟S204及步驟S206可參考下列代碼段所示ECode GCarrier:New(/氺[out]氺/ICarrier氺氺ppICarrier){ECode ec ;//pretend to find a GSM or CDMA networkIlsrand(time (NULL));Int32 i = rand() % 10 -JI通過一個隨機數(shù)決定生成的具體類的實例if (i <= 5) {ec = CGSMCarrierNew(ppICarrier);}else {ec = CCDMACarrier:New(ppICarrier);}//可以根據(jù)不同的策略調(diào)用PickCarrierWiFi. dll中的WiFi network//ec = GCarrierNewByImplementor(L" PickCarrierffiFi. dll",
pp I Carrier);return ec ;} 步驟S210,在用戶端程序中,調(diào)用上述的GCarrier::NeW()函數(shù),從而實例化一 個上述泛類的具體類,如下述代碼段所示ECode ElastosMain(const BufferOf<WString>& args){ICarrier^pCarrier = NULL ;ECode ec = GCarrierNew(&pCarrier);if (FAILED (ec)) {CConsole: iffriteLineC Sorry, no carrier available 丨〃);return ec ;}Il比較是否為generic的具體類pClsId = (ClassId*)pCarrier- > Probe(EIID_GENERIC_INF0);if(*pClsId ! = ECLSID_GCarrier) {pCarrier- > Release ();return E_CLASS_N0T_AVAILABLE ;}WStringBuf_<40>name ;pCarrier- > GetName(&name);CConsole::WriteLine(name);pCarrier- > Connect ();//do something…;;;;pCarrier-> Disconnect ();pCarrier- > Release ();eProcess: :Exit(O);return N0ERR0R ;}在上面的代碼段中可以看出,程序在運行時會動態(tài)地檢查CGSMCarrier 與GCarrier的一致性及/或CCDMACarrier與GCarrier的一致性,也就是說, 在 CAR 文件中必須已經(jīng)聲明 “class CGSMCarrier GCarrier {···} ” 或"class CCDMACarrier GCarrier {...} ”。用戶應(yīng)用代碼中只要寫"ECode ec = GCarrier: :New (&pCarrier); ”就可以得到一個GSM或CDMA或者WiFi網(wǎng)絡(luò)的訪問構(gòu)件,從 而也就實例化了一個具體類。由以上結(jié)合代碼的敘述可知,在編程時,定義出一種抽象出各個一般類所具有的 共同的類或接口特性的泛類,并且在定義該泛類的創(chuàng)建函數(shù)時,還可以根據(jù)不同的策略自 動選擇創(chuàng)建不同的具體類。只要創(chuàng)建的這些具體類都是從該所定義的泛類繼承來的,創(chuàng)建具體類時就可以直接使用該泛類的創(chuàng)建函數(shù)完成,客戶端就不需要關(guān)心創(chuàng)建的是哪些具體 的類 。
權(quán)利要求
一種創(chuàng)建具體類的實現(xiàn)方法,其特征在于,該方法包括步驟在構(gòu)件程序中聲明接口;定義聲明了上述接口的泛類;聲明實現(xiàn)所定義的泛類的具體類;編譯構(gòu)件程序并生成一個類廠函數(shù);調(diào)用所述類廠函數(shù)實現(xiàn)具體類。
2.如權(quán)利要求1所述的創(chuàng)建具體類的實現(xiàn)方法,其特征在于,所聲明的具體類實現(xiàn)了 泛類所聲明的所有接口。
3.如權(quán)利要求1所述的創(chuàng)建具體類的實現(xiàn)方法,其特征在于,步驟編譯構(gòu)件程序具體 包括對構(gòu)件程序進(jìn)行編譯,生成代碼框架;在該代碼框架中填寫所聲明的具體類的代碼。
4.如權(quán)利要求1所述的創(chuàng)建具體類的實現(xiàn)方法,其特征在于,所述步驟調(diào)用所述類廠 函數(shù)實現(xiàn)具體類包括在該類廠函數(shù)中,使用不同的策略決定生成繼承所述泛類的具體類的實例。
5.如權(quán)利要求4所述的創(chuàng)建具體類的實現(xiàn)方法,其特征在于,所述類廠函數(shù)為一個創(chuàng) 建函數(shù),在步驟調(diào)用所述類廠函數(shù)實現(xiàn)具體類中所使用的策略是在該創(chuàng)建函數(shù)里通過一個隨機數(shù)決定生成對應(yīng)的具體類的實例。
6.如權(quán)利要求1所述的創(chuàng)建具體類的實現(xiàn)方法,其特征在于,所述步驟定義一個泛類 是通過一個generic關(guān)鍵字定義的,該generic關(guān)鍵字是對一類構(gòu)件的類及其函數(shù)實現(xiàn)的 抽象描述。
7.如權(quán)利要求1所述的創(chuàng)建具體類的實現(xiàn)方法,其特征在于,該方法還包括步驟編譯后的構(gòu)件程序在運行時,動態(tài)檢查所實現(xiàn)的具體類與所定義的泛類一致性。
全文摘要
本發(fā)明提供一種創(chuàng)建具體類的實現(xiàn)方法,該方法包括在構(gòu)件程序中聲明接口;定義聲明了上述接口的泛類;聲明實現(xiàn)所定義的泛類的具體類;編譯構(gòu)件程序并生成一個類廠函數(shù);調(diào)用所述類廠函數(shù)實現(xiàn)具體類。本發(fā)明定義出一種泛類,該泛類抽象出各個一般類所具有的共同的類或接口特性,并且在定義該泛類的創(chuàng)建函數(shù)時,可以根據(jù)不同的策略自動選擇創(chuàng)建不同的具體類。只要這些具體的類都是從該所定義的泛類繼承來的,創(chuàng)建具體類時可以直接使用該泛類的創(chuàng)建函數(shù)完成,客戶端就無需關(guān)心創(chuàng)建的是哪些具體類。
文檔編號G06F9/44GK101882066SQ20091005088
公開日2010年11月10日 申請日期2009年5月8日 優(yōu)先權(quán)日2009年5月8日
發(fā)明者宋世軍, 陳冬曉, 陳榕 申請人:上??铺┦兰o(jì)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1