專利名稱:構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種構(gòu)件的繼承方法,尤其涉及一種構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法。
背景技術(shù):
在C++或JAVA等面向?qū)ο笳Z(yǔ)言中,可以通過(guò)源代碼級(jí)繼承來(lái)達(dá)到重用已有實(shí)現(xiàn)的 目的。 傳統(tǒng)的C++編程中的繼承方法,C++是基于代碼和實(shí)現(xiàn)的繼承,也就是說(shuō),對(duì)于派 生類來(lái)說(shuō),基類的源代碼和實(shí)現(xiàn)是必須完全開放的,在此基礎(chǔ)上才能被繼承。如果基類的成 員變量發(fā)生變化或者非常微小的代碼變化,都要引起派生類重新編譯,同時(shí)也會(huì)影響使用 派生類對(duì)象的用戶代碼。 隨著計(jì)算機(jī)軟件技術(shù)的不斷發(fā)展,構(gòu)件化軟件技術(shù)已經(jīng)越來(lái)越普及,各種各樣的 構(gòu)件技術(shù)和支持這些構(gòu)件技術(shù)的相應(yīng)的嵌入式操作系統(tǒng)也應(yīng)運(yùn)而生。例如,基于基構(gòu)件和 派生構(gòu)件架構(gòu)的構(gòu)件技術(shù),在該架構(gòu)中,派生構(gòu)件繼承于基構(gòu)件,用于實(shí)現(xiàn)基于基構(gòu)件的特 定功能,而基于該架構(gòu)的嵌入式操作系統(tǒng)由于存在基構(gòu)件與派生構(gòu)件的繼承關(guān)系實(shí)現(xiàn)了作 業(yè)的時(shí)效性、針對(duì)性、便捷性。因此,如何解決構(gòu)件化軟件系統(tǒng)中基構(gòu)件與派生構(gòu)件之間繼 承的關(guān)聯(lián)性問(wèn)題已經(jīng)成為人們必須面對(duì)的課題。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,可以使基構(gòu)
件與派生構(gòu)件之間的繼承具有源代碼和實(shí)現(xiàn)的無(wú)關(guān)性。
—種構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,該方法包括如下步驟 步驟l,在構(gòu)件化軟件系統(tǒng)聲明虛接口指針時(shí),為聲明的虛接口指針創(chuàng)建對(duì)應(yīng)的派
生構(gòu)件的實(shí)例對(duì)象,將創(chuàng)建的實(shí)例對(duì)象輸出給聲明的虛接口指針; 步驟2,通過(guò)Probe函數(shù)從聲明的虛接口指針獲得普通接口的接口指針; 步驟3,通過(guò)普通接口的接口指針從外部調(diào)用基構(gòu)件實(shí)現(xiàn)的方法; 步驟4,通過(guò)聲明的虛接口指針調(diào)用對(duì)應(yīng)的派生構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)派生構(gòu)件重
載基構(gòu)件實(shí)現(xiàn)的方法; 步驟5,在所述對(duì)應(yīng)的派生構(gòu)件實(shí)現(xiàn)的方法中,調(diào)用基構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)派生
構(gòu)件內(nèi)部調(diào)用基構(gòu)件已有實(shí)現(xiàn)的方法;及 步驟6,釋放創(chuàng)建的派生構(gòu)件實(shí)例對(duì)象,執(zhí)行結(jié)束。 相較于現(xiàn)有技術(shù),本發(fā)明通過(guò)繼承其他構(gòu)件的方式來(lái)重用被繼承構(gòu)件所實(shí)現(xiàn)的接 口 ,重載被繼承構(gòu)件的虛接口 ,實(shí)現(xiàn)了替代基構(gòu)件的實(shí)現(xiàn)方法,使得基構(gòu)件與派生構(gòu)件之間 的繼承具有源代碼和實(shí)現(xiàn)的無(wú)關(guān)性。
圖1是本發(fā)明構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法較佳實(shí)施例的主流程圖。
圖2是圖1中步驟S20的細(xì)化流程圖。
圖3是圖1中步驟S40的細(xì)化流程圖。
具體實(shí)施例方式
如圖1所示,是本發(fā)明構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法的較佳實(shí)施例的流程 圖。該方法適用于能運(yùn)行構(gòu)件化軟件系統(tǒng)的數(shù)據(jù)處理設(shè)備。該數(shù)據(jù)處理設(shè)備是指手機(jī)、個(gè) 人數(shù)字助理(Personal DigitalAssistant, PDA)等裝置。所述構(gòu)件化軟件系統(tǒng)為嵌入式 操作系統(tǒng)。該方法具有重用基構(gòu)件已有實(shí)現(xiàn)、重載基構(gòu)件的虛接口及接口調(diào)用時(shí)的多態(tài)性。 派生構(gòu)件能夠重載基構(gòu)件的虛接口 ,虛接口的方法能夠指向不同的派生構(gòu)件的實(shí)現(xiàn),因此 在這種構(gòu)件繼承方法中具有多態(tài)性。在本較佳實(shí)施例中,基構(gòu)件為CAnimal,派生構(gòu)件為 CDog及CCat,所述派生構(gòu)件繼承于基構(gòu)件,所聲明的接口為虛接口 IGreeting及普通接口 IAnimal。
Animal, car構(gòu)件代碼文件 Interface IGreeting{
Greet();〃為接口聲明一個(gè)方法
Interface IAnimal{
SetName (WString name);〃為接口聲明一個(gè)方法 GetName (WStringBuf_〈50>name);〃為接口聲明一個(gè)方法
class CAnimal(〃聲明一個(gè)基構(gòu)件
virtual interface IGreeting//聲明該基構(gòu)件實(shí)現(xiàn)IGreeting接 口 ,且將IGreeting作為虛接口
interface IAnimal class CDog :CAnimal {,
派生構(gòu)件繼承于CAnimal interface IGreeting
將重載基構(gòu)件的實(shí)現(xiàn)
class CCat :CAnimal {/ 生構(gòu)件繼承于CAnimal
interface IGreeting
將重載基構(gòu)件的實(shí)現(xiàn)
聲明該基構(gòu)件實(shí)現(xiàn)IAnimal接口 /聲明一個(gè)名稱為CDog的派生構(gòu)件,該
〃聲明實(shí)現(xiàn)IGreeting接口 ,這是個(gè)虛接口 ,
聲明一個(gè)名稱為CCat的派生構(gòu)件,該派
聲明實(shí)現(xiàn)IGreeting接口 ,這是個(gè)虛接口 , } 其中,該Animal, car文件定義了兩個(gè)接口分別為IGreeting和IAnimal ,同時(shí)也定 義了一個(gè)基構(gòu)件CAnimal,該基構(gòu)件實(shí)現(xiàn)IGreeting和IAnimal接口。后面的class CDog : CAnimal或class CCat :CAnimal表示派生構(gòu)件CDog和CCat繼承于基構(gòu)件CAnimal 。這樣派生構(gòu)件CDog和CCat就有了 IGreeting和IAnimal這兩個(gè)接口的定義與實(shí)現(xiàn)。virtual 關(guān)鍵字表示該接口為"虛接口 ",與C++語(yǔ)言中虛函數(shù)對(duì)應(yīng),虛接口中的接口方法Greet () 可被派生構(gòu)件CDog和CCat重載,并且可以從基構(gòu)件CAnimal中調(diào)用重載后的派生構(gòu)件 CDog和CCat接口實(shí)現(xiàn)的方法。在本較佳實(shí)施例中,基構(gòu)件CAnimal的實(shí)現(xiàn),是調(diào)用虛接口 IGreeting中的Greet ()方法得到,其中,Greet ()方法會(huì)跳到派生構(gòu)件CDog或CCat實(shí)現(xiàn) 的方法Greet ()中執(zhí)行。 CAnimal基構(gòu)件的實(shí)現(xiàn)代碼(CAnimal. cpp): Ecode CAnimal: : Greet () { Return E_NOTJMPLEMENT〃這里CAnimal沒(méi)有做任何操作 } ECode CAnimal: : SetName (WString name) 〃IAnimal接口方法 SetName在基構(gòu)件CAnimal中的實(shí)現(xiàn) { m_name. Copy (name) ;//將參數(shù)name的內(nèi)容保存到成員變量m_name return N0ERR0R ; } ECode CAnimal: : GetName (WStringBuf*name) 〃IAnimal接口方 法GetName在基構(gòu)件CAnimal中的實(shí)現(xiàn) { name->Copy (m_name);〃將成員變量m_name的內(nèi)容復(fù)制至lj out參數(shù)name return N0ERR0R ; } 其中,CAnimal: :Greet ()是IGreeting接口方法Greet ()在基構(gòu)件CAnimal中的 實(shí)現(xiàn),該實(shí)現(xiàn)沒(méi)有做任何操作(ReturnE_N0T_MPLEMENT),需要派生構(gòu)件重載。 CDog派生構(gòu)件的實(shí)現(xiàn)(CDog. cpp): ECode CDog: :Greet () { WStringBuf_〈100>out ; Super: :GetName (&out);〃在CDog里通過(guò)"Super::"調(diào)用基構(gòu)件 實(shí)現(xiàn)的GetName方法,獲得animal的名字,并輸出到out變量里。 out《"Wang Wang ,,; CConsole: :WriteLine(out);〃調(diào)用控制臺(tái)輸出函數(shù),將out的內(nèi)容 打印到屏幕上 return N0ERR0R ; } IInterface氺CDog::Probe(EIID iid) {
5
If (iid == EIID—IInterface) ret證(IInterface氺)this ;
If (iid == EIID_IGreeting) return (IGreeting氺)this ;
} 其中,ECode CDog::Greet()是IGreeting接 口方法Greet ()在派生 構(gòu)件CDog中的實(shí)現(xiàn),以實(shí)現(xiàn)重載基構(gòu)件CAnimal的實(shí)現(xiàn)CAnimal: : Greet ()。 IInterface*CDog: :Probe(EIID iid)是實(shí)現(xiàn)一個(gè)構(gòu)件類在不同接口之間的轉(zhuǎn)換,通過(guò)獲 取對(duì)應(yīng)接口類型指針實(shí)現(xiàn)不同接口之間的轉(zhuǎn)換。所述獲取對(duì)應(yīng)接口類型指針的方法通 過(guò)Probe函數(shù)進(jìn)行調(diào)用。Probe函數(shù)用于通過(guò)其中的一個(gè)接口指針獲取其它接口指針,實(shí) 現(xiàn)各種類型的接口指針之間的轉(zhuǎn)換。具體而言,在本較佳實(shí)施例中,假設(shè)用戶聲明的一個(gè) IGreeting類型的虛接口指針pDog和一個(gè)IAnimal類型的普通接口 pAnimal,用戶可以通 過(guò)pDog虛接口指針獲取pAnimal接口指針。具體代碼如下
IAnimal*pAnimal = IAnimal::Probe(pDog); 以上代碼中,用戶通過(guò)IGreeting類型的虛接口指針pDog獲取一個(gè)IAnimal類型 的普通接口的接口指針pAnimal 。 CCat. c卯派生構(gòu)件的實(shí)現(xiàn)代碼(CCat. cpp): ECode CCat: : Greet () 〃IGreeting接口方法Greet ()在派生構(gòu)件CCat
中的實(shí)現(xiàn),該實(shí)現(xiàn)將重載CAnimal: : Greet ()
{WStringBuf_〈100>out ;Super: :GetName (&out);〃在CDog里通過(guò)"Super::"調(diào)用基構(gòu)件實(shí)
現(xiàn)的GetName方法,獲得animal的名字,并輸出到out變量里。
out《"Miao Miao ";CConsole: :WriteLine(out);〃調(diào)用控制臺(tái)輸出函數(shù),將out的內(nèi)容打 印到屏幕上return N0ERR0R ; } 其中,ECode CCat: :Greet ()是IGreeting接口方法Greet ()在派生構(gòu)件
CCat中的實(shí)現(xiàn),將重載CAnimal: : Greet ()。 在構(gòu)建上述代碼之后,對(duì)上述代碼進(jìn)行編譯,生成DLL (DynamicLinkable Library :動(dòng)態(tài)鏈接庫(kù))文件,生成的DLL文件提供兩個(gè)接口以供主程序調(diào)用,主程序通過(guò)聲 明接口指針調(diào)用所述生成的DLL文件。在主程序Main()控制下,如圖1所示的流程圖,執(zhí) 行以下步驟 步驟S10 :在構(gòu)件化軟件系統(tǒng)聲明虛接口指針時(shí),為聲明的虛接口指針創(chuàng)建對(duì)應(yīng) 的派生構(gòu)件的實(shí)例對(duì)象,將創(chuàng)建的實(shí)例對(duì)象輸出給聲明的虛接口指針。具體而言,在本較佳 實(shí)施例中,聲明一個(gè)虛接口 IGreeting類型的虛接口指針pDog,創(chuàng)建一個(gè)派生構(gòu)件CDog的 實(shí)例對(duì)象,將該對(duì)象輸出給pDog。具體代碼如下
IGreeting氺pDog =亂L ; CDog: :New (&pDog);〃創(chuàng)建一個(gè)CDog類型的實(shí)例對(duì)象,并通過(guò)pDog輸出。
步驟S20 :通過(guò)Probe函數(shù)從聲明的虛接口指針獲得該派生構(gòu)件繼承的基構(gòu)件的
6普通接口的接口指針。具體而言,在本較佳實(shí)施例中,具體代碼如下
IAnimal*pAnimal = IAnimal::Probe(pDog); 上述代碼中,因?yàn)閜Dog指向 一 個(gè)派生構(gòu)件CDog的實(shí)例對(duì)象,CDog繼承于 CAnimal,具有基構(gòu)件CAnimal實(shí)現(xiàn)的IAnimal接口 ,因此可以通過(guò)Probe函數(shù)從虛接口指 針pDog獲得普通接口 IAnimal的接口指針pAnimal 。 步驟S30 :通過(guò)普通接口的接口指針指針從外部調(diào)用基構(gòu)件實(shí)現(xiàn)的方法。該步驟 的關(guān)鍵在于獲得基構(gòu)件所實(shí)現(xiàn)的接口指針。具體而言,在本較佳實(shí)施例中,具體代碼如下
pAnimal_>SetName(L,,Dog,,); 上述代碼中,通過(guò)pAnimal接口指針調(diào)用IAnimal接口方法SetName (),該
pAnimal接口指針最終調(diào)用到基構(gòu)件CAnimal實(shí)現(xiàn)的SetName ()方法。 步驟S40 :通過(guò)聲明的虛接口指針調(diào)用派生構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)派生構(gòu)件重載
基構(gòu)件實(shí)現(xiàn)的方法,即實(shí)現(xiàn)派生構(gòu)件重載基構(gòu)件的實(shí)現(xiàn)。具體而言,在本較佳實(shí)施例中,具
體代碼如下 pDog_>Greet (); 上述代碼中,通過(guò)虛接口指針pDog調(diào)用IGreeting接口的Greet ()方法,由于 IGreeting是一個(gè)虛接口 , pDog實(shí)際指向的是CDog對(duì)象,所以,這里最終調(diào)用的Greet ()方 法是由派生構(gòu)建類CDog實(shí)現(xiàn)的,這樣就實(shí)現(xiàn)了派生構(gòu)件CDog重載基構(gòu)件CAnimal實(shí)現(xiàn)的 方法Greet ()。 步驟S50 :在所述派生構(gòu)件實(shí)現(xiàn)的方法中,調(diào)用基構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)派生構(gòu)件 內(nèi)部調(diào)用基構(gòu)件已有實(shí)現(xiàn)。具體而言,在所述派生構(gòu)件實(shí)現(xiàn)的方法Greet ()中,通過(guò)在構(gòu)件 化軟件系統(tǒng)中定義的關(guān)鍵字調(diào)用基構(gòu)件CAnimal實(shí)現(xiàn)的方法GetName ()。在本較佳實(shí)施例 中,所述關(guān)鍵字為"Super",當(dāng)用戶輸入關(guān)鍵字"Super"時(shí),表明調(diào)用基構(gòu)件實(shí)現(xiàn)的方法。具 體代碼如下 Super::GetName(&out); 上述代碼中,在派生構(gòu)建類CDog里通過(guò)"Super::"調(diào)用基構(gòu)件實(shí)現(xiàn)的GetName方 法。在其他實(shí)施例中,所述關(guān)鍵字可以為其它字符,如"Father "。 步驟S60 :釋放創(chuàng)建的派生構(gòu)件實(shí)例對(duì)象,執(zhí)行結(jié)束。具體而言,釋放創(chuàng)建的派生 構(gòu)件實(shí)例對(duì)象PDog和pCat,具體代碼如下
pDog_>Release();
釋放對(duì)象之后,執(zhí)行結(jié)束。 此外,用戶在聲明其它虛接口指針時(shí),該虛指針的類型與上述聲明的虛接口類型,創(chuàng) 建另外一個(gè)派生構(gòu)件的實(shí)例對(duì)象,將創(chuàng)建的實(shí)例對(duì)象輸出給聲明的虛接口指針,通過(guò)另外一個(gè)
虛接口指針調(diào)用派生構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)了調(diào)用時(shí)的多態(tài)性。具體而言,具體代碼如下
IGreeting氺pCog =亂L ; CCat: :New(&pCat);〃創(chuàng)建一個(gè)CCat類型的實(shí)例對(duì)象,并通過(guò)pCat輸出。
上述代碼中,聲明一個(gè)IGreeting的接口指針,通過(guò)pCat虛接口指針調(diào)用派生 構(gòu)件實(shí)現(xiàn)的方法Greet (),調(diào)用到派生構(gòu)件CCat實(shí)現(xiàn)的方法Greet (),同樣是IGreeting 接口的虛接口指針pDog和pCat,調(diào)用相同的Greet ()方法,但輸出的結(jié)果卻完全不同,虛 接口指針pDog調(diào)用Greet ()方法輸出的結(jié)果是"Dog :Wang Wang ",而虛接口指針pCat調(diào)用Greet ()方法輸出的結(jié)果是"Cat :Miao Miao ",實(shí)現(xiàn)了調(diào)用時(shí)的多態(tài) 性。類似于0++的虛方法的多態(tài)性,使用IGreetingA類型的指針調(diào)用Greet ()方法,不同 的對(duì)象具有不同的實(shí)現(xiàn),如果IGreetingA類型的指針指向CDog,則調(diào)用CDog: :Greet,如果 IGreetingA類型的指針指向的是CCat,則調(diào)用CCat: :Greet。但對(duì)于調(diào)用代碼來(lái)說(shuō),都是相 同的pGreet-〉Greet(),不同的派生構(gòu)件實(shí)現(xiàn)的虛接口 IGreeting具有不同的語(yǔ)義和行為, 由此實(shí)現(xiàn)了基于構(gòu)件接口的多態(tài)性。 如圖2所示,是圖1中步驟S20中獲得普通接口的接口指針的細(xì)化流程圖。
步驟S200,根據(jù)虛接口指針調(diào)用派生構(gòu)件中的Probe函數(shù)。具體而言,在本較佳實(shí) 施例中,通過(guò)虛接口指針pDog調(diào)用派生構(gòu)件CDog中的Probe函數(shù)。 步驟S201,判斷派生構(gòu)件是否實(shí)現(xiàn)了普通接口的方法。具體而言,在本較佳實(shí)施例 中,判斷派生構(gòu)件CDog是否實(shí)現(xiàn)了普通接口 IAnimal的方法,普通接口 IAnimal的方法包 括GetName ()或SetName ()。 步驟S202,若派生構(gòu)件沒(méi)有實(shí)現(xiàn)普通接口的方法,則調(diào)用基構(gòu)件中的Probe函數(shù)。 具體而言,在本較佳實(shí)施例中,調(diào)用基構(gòu)件CAnimal中的Probe函數(shù)。 步驟S203,通過(guò)基構(gòu)件中的Probe函數(shù),獲得基構(gòu)件的普通接口的接口指針。具體
而言,在本較佳實(shí)施例中,獲得基構(gòu)件CAnimal的普通接口的接口指針pAnimal 。 在步驟S201中,若派生構(gòu)件實(shí)現(xiàn)了普通接口的方法,則于步驟S205中,獲得派生
構(gòu)件的虛接口指針,之后轉(zhuǎn)到上述步驟S40。 如圖3所示,是圖1中步驟S40中實(shí)現(xiàn)派生構(gòu)件重載基構(gòu)件的實(shí)現(xiàn)的細(xì)化流程圖。 所謂重載基構(gòu)件的實(shí)現(xiàn),就是當(dāng)基構(gòu)件和派生構(gòu)件都實(shí)現(xiàn)了某個(gè)虛接口時(shí),派生構(gòu)件可以 用自己的實(shí)現(xiàn)重載基構(gòu)件的實(shí)現(xiàn)。該步驟的關(guān)鍵在于獲得派生構(gòu)件的虛接口指針。其中, 當(dāng)基構(gòu)件和派生構(gòu)件都有自己虛接口的實(shí)現(xiàn)時(shí),用戶調(diào)用這個(gè)接口必須要先通過(guò)Probe函 數(shù)來(lái)獲得虛接口指針,那么優(yōu)先獲得派生構(gòu)件實(shí)現(xiàn)的接口指針,如果派生構(gòu)件沒(méi)有實(shí)現(xiàn),再 獲得基構(gòu)件實(shí)現(xiàn)的接口指針。 步驟S400,判斷虛接口指針是否指向?qū)?yīng)的派生構(gòu)件的實(shí)例對(duì)象。具體而言,在本 較佳實(shí)施例中,判斷虛接口指針pDog是否是CDog的實(shí)例對(duì)象。 步驟S401,若虛接口指針是指向?qū)?yīng)的派生構(gòu)件的實(shí)例對(duì)象,則調(diào)用派生構(gòu)件中 的Probe函數(shù)。具體而言,在本較佳實(shí)施例中,若pDog指向的是CDog對(duì)象,則調(diào)用派生構(gòu) 件CDog中的Probe函數(shù)。 步驟S402,判斷派生構(gòu)件是否實(shí)現(xiàn)了該虛接口的方法。具體而言,在本較佳實(shí)施例 中,判斷CDog是否實(shí)現(xiàn)了 IGreeting接口方法Greet ()。 步驟S403,若派生構(gòu)件實(shí)現(xiàn)了該虛接口的方法,則獲得該派生構(gòu)件的虛接口指針, 通過(guò)獲得的虛借口指針實(shí)現(xiàn)派生構(gòu)件重載基構(gòu)件實(shí)現(xiàn)的方法。具體而言,在本較佳實(shí)施例 中,派生構(gòu)件CDog實(shí)現(xiàn)了 IGreeting接口方法Greet (),則獲得派生構(gòu)件CDog的接口指針 pDog。 在步驟S400中,若虛接口指針沒(méi)有指向?qū)?yīng)的派生構(gòu)件的實(shí)例對(duì)象,則于步驟 S404,調(diào)用基構(gòu)件中的Probe函數(shù)。具體而言,若虛接口指針pDog指向的不是派生構(gòu)件CDog 的實(shí)例對(duì)象,則調(diào)用CAnimal的Probe函數(shù)。 步驟S405,獲得基構(gòu)件的普通接口的接口指針。具體而言,獲得基構(gòu)件CAnimal的普通接口的接口指針pAnimal 。 在步驟S402中,若派生構(gòu)件沒(méi)有實(shí)現(xiàn)該虛接口的方法,則轉(zhuǎn)到步驟S404。具體 而言,若派生構(gòu)件CDog沒(méi)有實(shí)現(xiàn)該虛接口 IGreeting的方法Greet (),則調(diào)用CAnimal的 Probe函數(shù),獲得基構(gòu)件CAnimal的普通接口的接口指針。 最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參 照以上較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本 發(fā)明的技術(shù)方案進(jìn)行修改或等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
一種構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,適用于能運(yùn)行構(gòu)件化軟件系統(tǒng)的數(shù)據(jù)處理設(shè)備,其特征在于,該方法包括如下步驟步驟1,在構(gòu)件化軟件系統(tǒng)中聲明虛接口指針時(shí),為聲明的虛接口指針創(chuàng)建對(duì)應(yīng)的派生構(gòu)件的實(shí)例對(duì)象,將創(chuàng)建的實(shí)例對(duì)象輸出給聲明的虛接口指針;步驟2,通過(guò)Probe函數(shù)從聲明的虛接口指針獲得該派生構(gòu)件繼承的基構(gòu)件的普通接口的接口指針;步驟3,通過(guò)普通接口的接口指針從外部調(diào)用該基構(gòu)件實(shí)現(xiàn)的方法;步驟4,通過(guò)聲明的虛接口指針調(diào)用對(duì)應(yīng)的派生構(gòu)件實(shí)現(xiàn)的方法,以實(shí)現(xiàn)派生構(gòu)件重載基構(gòu)件實(shí)現(xiàn)的方法;步驟5,在所述對(duì)應(yīng)的派生構(gòu)件實(shí)現(xiàn)的方法中,調(diào)用基構(gòu)件實(shí)現(xiàn)的方法,以實(shí)現(xiàn)派生構(gòu)件內(nèi)部調(diào)用基構(gòu)件已有實(shí)現(xiàn)的方法;及步驟6,釋放創(chuàng)建的派生構(gòu)件實(shí)例對(duì)象,執(zhí)行結(jié)束。
2. 如權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,其特征在于,所述構(gòu)件化 軟件系統(tǒng)為嵌入式操作系統(tǒng)。
3. 如權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,其特征在于,所述數(shù)據(jù)處 理設(shè)備為手機(jī)或個(gè)人數(shù)字助理。
4. 如權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,其特征在于,所述Probe 函數(shù)通過(guò)其中的一個(gè)接口指針獲取其它接口指針,從而實(shí)現(xiàn)各種類型的接口指針之間的轉(zhuǎn) 換。
5. 如權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,其特征在于,所述步驟2具 體包括根據(jù)聲明的虛接口指針調(diào)用派生構(gòu)件中的Probe函數(shù); 判斷派生構(gòu)件是否實(shí)現(xiàn)了普通接口的方法;若派生構(gòu)件實(shí)現(xiàn)了普通接口的方法,則獲得派生構(gòu)件的虛接口指針,否則,若派生構(gòu)件 沒(méi)有實(shí)現(xiàn)普通接口的方法,則調(diào)用基構(gòu)件中的Probe函數(shù);及通過(guò)基構(gòu)件中的Probe函數(shù),獲得基構(gòu)件的普通接口的接口指針。
6. 如權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,其特征在于,所述步驟4實(shí) 現(xiàn)派生構(gòu)件重載基構(gòu)件實(shí)現(xiàn)的方法的關(guān)鍵在于獲得派生構(gòu)件的虛接口指針,所述獲得派生 構(gòu)件的虛接口指針具體步驟如下判斷虛接口指針是否指向?qū)?yīng)的派生構(gòu)件的實(shí)例對(duì)象;若虛接口指針是指向?qū)?yīng)的派生構(gòu)件的實(shí)例對(duì)象,則調(diào)用派生構(gòu)件中的Probe函數(shù); 判斷派生構(gòu)件是否實(shí)現(xiàn)了該虛接口的方法;及若派生構(gòu)件實(shí)現(xiàn)了該虛接口的方法,則獲得該派生構(gòu)件的虛接口指針。
7. 如權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,其特征在于,所述步驟5實(shí) 現(xiàn)派生構(gòu)件內(nèi)部調(diào)用基構(gòu)件已有實(shí)現(xiàn)的方法是通過(guò)在構(gòu)件化軟件系統(tǒng)中定義的關(guān)鍵字進(jìn) 行調(diào)用的。
全文摘要
一種構(gòu)件化軟件系統(tǒng)中構(gòu)件的繼承方法,該方法包括如下步驟步驟1,在構(gòu)件化軟件系統(tǒng)聲明虛接口指針時(shí),為聲明的虛接口指針創(chuàng)建對(duì)應(yīng)的派生構(gòu)件的實(shí)例對(duì)象,將創(chuàng)建的實(shí)例對(duì)象輸出給聲明的虛接口指針;步驟2,通過(guò)Probe函數(shù)從聲明的虛接口指針獲得普通接口的接口指針;步驟3,通過(guò)普通接口的接口指針從外部調(diào)用基構(gòu)件實(shí)現(xiàn)的方法;步驟4,通過(guò)聲明的虛接口指針調(diào)用對(duì)應(yīng)的派生構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)派生構(gòu)件重載基構(gòu)件實(shí)現(xiàn)的方法;步驟5,在所述對(duì)應(yīng)的派生構(gòu)件實(shí)現(xiàn)的方法中,調(diào)用基構(gòu)件實(shí)現(xiàn)的方法,實(shí)現(xiàn)派生構(gòu)件內(nèi)部調(diào)用基構(gòu)件已有實(shí)現(xiàn)的方法;步驟6,釋放創(chuàng)建的派生構(gòu)件實(shí)例對(duì)象,執(zhí)行結(jié)束。
文檔編號(hào)G06F9/44GK101770360SQ200810208049
公開日2010年7月7日 申請(qǐng)日期2008年12月29日 優(yōu)先權(quán)日2008年12月29日
發(fā)明者宋世軍, 陳榕 申請(qǐng)人:上??铺┦兰o(jì)科技有限公司