欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)構(gòu)件在語境中具備語境特征功能的方法

文檔序號:6613551閱讀:157來源:國知局
專利名稱:計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)構(gòu)件在語境中具備語境特征功能的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別涉及計(jì)算機(jī)構(gòu)件化軟件系統(tǒng)領(lǐng)域,具體是指一種 計(jì)算才幾軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法。
背景技術(shù)
隨著現(xiàn)代構(gòu)件化計(jì)算機(jī)軟件技術(shù)的進(jìn)一步發(fā)展,CAR (Component Assembly Runtime)構(gòu) 件技術(shù)是一種面向構(gòu)件編程(Component Oriented Programming, 簡稱COP)技術(shù),它定義 了一套網(wǎng)絡(luò)編程時(shí)代的構(gòu)件編程模型和編程規(guī)范,規(guī)定了一組構(gòu)件間相互調(diào)用的標(biāo)準(zhǔn),使得 二進(jìn)制構(gòu)件能夠自描述,能夠在運(yùn)行時(shí)動態(tài)鏈接。目前,CAR構(gòu)件技術(shù)已在某些先進(jìn)的嵌入式操作系統(tǒng)上實(shí)現(xiàn),在該嵌入式操作系統(tǒng)的 SDK ( Software Development Kit)下,用戶很容易編寫出自己的構(gòu)件。CAR構(gòu)件技術(shù)的基礎(chǔ)思想來源于微軟的COM,但它對微軟的COM進(jìn)行了拓展,并且二 者不兼容。CAR構(gòu)件技術(shù)由CAR語言(構(gòu)件描述語言,描述構(gòu)件的元數(shù)據(jù)信息)、CAR編 譯器、自動代碼生成工具以及CAR構(gòu)件基礎(chǔ)庫支持。CAR構(gòu)件技術(shù)體現(xiàn)了網(wǎng)絡(luò)編程時(shí)代的 特性,編程界面簡單。方面(aspect)構(gòu)件對象模型是一種特殊的構(gòu)件類實(shí)現(xiàn),aspect對象的特征是可以被其它 構(gòu)件對象聚合,該構(gòu)件類必須實(shí)現(xiàn)IAspect接口, aspect對象就是實(shí)現(xiàn)了 IAspect接口的構(gòu)件 對象。關(guān)于方面構(gòu)件對象模型以及構(gòu)件動態(tài)聚合的具體技術(shù)細(xì)節(jié)信息,請參閱發(fā)明專利申請 "實(shí)現(xiàn)計(jì)算機(jī)軟件系統(tǒng)中的構(gòu)件動態(tài)聚合的方法,,(申請?zhí)?00610027124.4,公開號 CN1851643,
公開日2006年10月25日)。其中,動態(tài)聚合是通過IObject的Aggregate方法來完成的,因此構(gòu)件編寫者定義的每個(gè) 構(gòu)件對象都具有聚合其他aspect對象的能力。 一般實(shí)現(xiàn)動態(tài)聚合都通過方面構(gòu)件類提供的靜 態(tài)方法Attach(IObject* pObj)和Detach(IObjeet* pObj)方法來完成。在現(xiàn)有技術(shù)的COM+中,當(dāng)COM +激活對象時(shí),它創(chuàng)建對象的環(huán)境(context),對象的 環(huán)境與對象通過COM +緊緊附在一起。當(dāng)COM +為對象創(chuàng)建環(huán)境時(shí),它檢查組件的目錄項(xiàng) 以便決定哪些屬性需要被放到環(huán)境中。COM+的對象語境(context)緊密依賴對象,這樣語境就失去了獨(dú)立性。但是在現(xiàn)實(shí)世界里, 一個(gè)構(gòu)件對象往往會隨著環(huán)境改變而表現(xiàn)出(或擁有)不同的特征。 當(dāng)一個(gè)CChild對象被創(chuàng)建時(shí),他是一個(gè)"小孩",具有小孩的行為"玩"(Play),而把"小孩,,送 到學(xué)校,他就變成了學(xué)生,具有了學(xué)生的行為"學(xué)習(xí),,(Study),而當(dāng)他從學(xué)校畢業(yè),在進(jìn)入 新的環(huán)境(語境context)前他又變成了"小孩"。再比如寵物店的貓(構(gòu)件對象),具有寵物和 商品兩方面的特征(aspect)。但貓剛生下來時(shí)卻未必是寵物,更不會是商品;而一旦被售出, 就不再是商品,但寵物特征卻保留了下來。顯而易見,讓貓進(jìn)入寵物店就擁有寵物和商品兩 方面特征,而離開寵物店后就丟棄商品特征,使用COM +是無法實(shí)現(xiàn)這種現(xiàn)實(shí)模型的,因?yàn)?COM +本身不是一種隨時(shí)聚合、隨時(shí)拆卸的動態(tài)聚合模型,這樣就制約了現(xiàn)代計(jì)算機(jī)軟件技 術(shù)的進(jìn)一步發(fā)展。發(fā)明內(nèi)容本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種能夠使得構(gòu)件對象在不同的語 境里具有不同特征、有效提高構(gòu)件應(yīng)用的靈活性、降低程序設(shè)計(jì)的復(fù)雜度、更好地描述現(xiàn)實(shí) 世界模型、使用快捷方便、工作性能穩(wěn)定可靠、適用范圍較為廣泛的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn) 構(gòu)件對象在語境對象中自動具備語境特征功能的方法。為了實(shí)現(xiàn)上述的目的,本發(fā)明的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備 語境特征功能的方法如下該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法,其主要 特點(diǎn)是,所述的方法包括以下步驟 U)系統(tǒng)進(jìn)行初始化操作;(2) 系統(tǒng)實(shí)例化語境構(gòu)件類得到語境構(gòu)件對象實(shí)例;(3) .系統(tǒng)實(shí)例化外部構(gòu)件類得到外部構(gòu)件對象實(shí)例;(4) 系統(tǒng)根據(jù)用戶操作,對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例的處 理操作;(5) 系統(tǒng)根據(jù)調(diào)用者的需要,調(diào)用所述的語境特征對象實(shí)例的構(gòu)件接口;(6) 系統(tǒng)根據(jù)用戶操作,對該外部構(gòu)件對象實(shí)例進(jìn)行離開所迷的語境構(gòu)件對象實(shí)例的處 理操作。該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法中的語境 構(gòu)件類內(nèi)包含有語境特征方面構(gòu)件類屬性,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例的處理操作,包括以下步驟(41) 所述的語境構(gòu)件對象實(shí)例創(chuàng)建語境特征方面構(gòu)件類的對象實(shí)例;(42) 所述的外部構(gòu)件對象實(shí)例動態(tài)聚合所述的語境特征方面構(gòu)件類的對象實(shí)例;(43 )系統(tǒng)判斷所述的外部構(gòu)件對象實(shí)例是否已經(jīng)動態(tài)聚合了所述的語境構(gòu)件對象實(shí)例 中所有的語境特征方面構(gòu)件類的對象實(shí)例;(44) 如果否,則重復(fù)上述步驟(41)。該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法中的對該 外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例的處理操作中的步驟(41)之前還包括 以下步驟(40)所迷的外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例前的制約處理。 4、才M^權(quán)利要求2所述的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特 征功能的方法,其特征在于,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí) 例的處理操作中的步驟(44)之前還包括以下步驟(45) 所述的外部構(gòu)件對象實(shí)例已經(jīng)動態(tài)聚合了所述的語境構(gòu)件對象實(shí)例中所有的語境 特征方面構(gòu)件類的對象實(shí)例后的制約處理。該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法中的語境 特征方面構(gòu)件類為所述的語境構(gòu)件類內(nèi)的靜態(tài)屬性。該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法中的對該 外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例的處理操作,包括以下步驟(61) 所述的外部構(gòu)件對象實(shí)例動態(tài)拆卸聚合所述的語境特征方面構(gòu)件類的對象實(shí)例;(62) 銷毀所述的語境特征方面構(gòu)件類的對象實(shí)例;(63) 系統(tǒng)判斷所述的外部構(gòu)件對象實(shí)例是否已經(jīng)動態(tài)拆卸聚合了所述的語境構(gòu)件對象 實(shí)例中所有的語境特征方面構(gòu)件類的對象實(shí)例;(64) 如果否,則重復(fù)上述步驟(6U。該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法中的對該 外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例的處理操作中的步驟(61)之前還包括 以下步驟(60)所迷的外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例前的制約處理。 該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法中的對該 外部構(gòu)件對象實(shí)例進(jìn)行離開所迷的語境構(gòu)件對象實(shí)例的處理操作中的步驟(64)之前還包括(65)所述的外部構(gòu)件對象實(shí)例已經(jīng)動態(tài)拆卸聚合了所述的語境構(gòu)件對象實(shí)例中所有的 語境特征方面構(gòu)件類的對象實(shí)例后的制約處理。采用了該發(fā)明的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的 方法,由于其基于方面構(gòu)件類模型和動態(tài)聚合技術(shù)實(shí)現(xiàn)了外部構(gòu)件對象實(shí)例在進(jìn)入不同的語 境時(shí)能夠具有不同的語境特征,也就是說可以使不同的外部構(gòu)件對象實(shí)例不用各自編碼就能 夠具備相應(yīng)的環(huán)境特征,從而突破了 COM+的對象語境(context)緊密依賴對象的限制,提 高了構(gòu)件應(yīng)用的靈活性,在CAR構(gòu)件的面向方面編程領(lǐng)域是一次重大的進(jìn)步;同時(shí)降低了程 序設(shè)計(jì)的復(fù)雜度,為構(gòu)件面向方面編程提供了更寬廣的空間,為軟件工廠化提供了一條更簡 便的途徑;而且提高了軟件的可擴(kuò)展性,能夠更好地描述現(xiàn)實(shí)世界模型,方便了用戶對不同 需求的擴(kuò)展,為計(jì)算機(jī)構(gòu)件化軟件技術(shù)的進(jìn)一步t艮奠定了堅(jiān)實(shí)的基礎(chǔ)。


圖1為本發(fā)明的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的 方法中外部構(gòu)件對象實(shí)例進(jìn)入語境構(gòu)件對象實(shí)例的流程圖。圖2為本發(fā)明的計(jì)算M件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的 方法中外部構(gòu)件對象實(shí)例離開語境構(gòu)件對象實(shí)例的流程圖。圖3a、 3b、 3c和3d為本發(fā)明的計(jì)算才幾軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備 語境特征功能的方法具體實(shí)現(xiàn)過程的原理示意圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說明。 請參閱圖1和圖2所示,該計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境 特征功能的方法,包括以下步驟(1) 系統(tǒng)進(jìn)行初始化操作;(2) 系統(tǒng)實(shí)例化語境構(gòu)件類得到語境構(gòu)件對象實(shí)例;(3) 系統(tǒng)實(shí)例化外部構(gòu)件類得到外部構(gòu)件對象實(shí)例;(4) 系統(tǒng)沖艮據(jù)用戶操作,對該外部構(gòu)件對象實(shí)例進(jìn)行ii^所述的語境構(gòu)件對象實(shí)例的處 理:^作,其中,語境構(gòu)件類內(nèi)包含有語境特征方面構(gòu)件類屬性,該語境特征方面構(gòu)件類為所 述的語境構(gòu)件類內(nèi)的靜態(tài)屬性,所述的處理操作包括以下步驟(a)所迷的外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例前的制約處理;(b) 所述的語境構(gòu)件對象實(shí)例創(chuàng)建語境特征方面構(gòu)件類的對象實(shí)例;(c) 所述的外部構(gòu)件對象實(shí)例動態(tài)聚合所述的語境特征方面構(gòu)件類的對象實(shí)例;(d) 系統(tǒng)判斷所述的外部構(gòu)件對象實(shí)例是否已經(jīng)動態(tài)聚合了所述的語境構(gòu)件對象實(shí) 例中所有的語境特征方面構(gòu)件類的對象實(shí)例;(e) 如果否,則重復(fù)上述步驟(b);(f) 所述的外部構(gòu)件對象實(shí)例已經(jīng)動態(tài)聚合了所述的語境構(gòu)件對象實(shí)例中所有的語 境特征方面構(gòu)件類的對象實(shí)例后的制約處理;(5) 系統(tǒng)根據(jù)調(diào)用者的需要,調(diào)用所述的語境特征對象實(shí)例的構(gòu)件接口;(6) 系統(tǒng)4艮據(jù)用戶操作,對該外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例的處 理操作,包括以下步驟(a) 所述的外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例前的制約處理;(b) 所述的外部構(gòu)件對象實(shí)例動態(tài)拆卸聚合所述的語境特征方面構(gòu)件類的對象實(shí)例;(c) 銷毀所述的語境特征方面構(gòu)件類的對象實(shí)例;(d) 系統(tǒng)判斷所迷的外部構(gòu)件對象實(shí)例是否已經(jīng)動態(tài)拆卸聚合了所述的語境構(gòu)件對 象實(shí)例中所有的語境特征方面構(gòu)件類的對象實(shí)例;(e) 如果否,則重復(fù)上述步驟(b);(f) 所述的外部構(gòu)件對象實(shí)例已經(jīng)動態(tài)拆卸聚合了所述的語境構(gòu)件對象實(shí)例中所有 的語境特征方面構(gòu)件類的對象實(shí)例后的制約處理。在實(shí)際應(yīng)用當(dāng)中,語境是對象運(yùn)行時(shí)的環(huán)境, 一個(gè)對象如果進(jìn)入了語境,那么該對象將 具有此語境的特征, 一旦對象離開了語境,環(huán)境特征就會失去(但該對象很有可能又進(jìn)入了 另外一個(gè)語境,擁有新的環(huán)境特征)。CAR構(gòu)件的語境特征實(shí)現(xiàn)的技術(shù)利用了 aspect。CAR構(gòu)件語境是基于動態(tài)聚合實(shí)現(xiàn)的一種技術(shù),所謂的具有語境特征或失去語境特征, 就是語境會為對象動態(tài)的聚合或拆卸聚合一個(gè)或多個(gè)aspect對象。這些aspect對象是語境在 car文件中定義時(shí)指定的。Aspect只能作為一個(gè)主語(某個(gè)構(gòu)件對象)的謂詞存在。那么它通過什么和主語產(chǎn)生從 屬關(guān)系呢? 一個(gè)對象如果^了語境,那么該對象將具有此語境的特征,一^t象離開了語 境,環(huán)境特征就會失去。但該對象很有可能又進(jìn)入了另外一個(gè)語境,擁有新的環(huán)境特征。這 里環(huán)境特征就是方面aspect。當(dāng)作為主語的構(gòu)件對象進(jìn)入了語境,那么這個(gè)語境中的Aspect 構(gòu)件對象就會與之聚合,就簽訂了主從的契約。當(dāng)作為主語的構(gòu)件對象離開了語境,那么這 個(gè)語境中的Aspect構(gòu)件對象就會與之拆離,就注銷了主從的契約。而動多聚合是通過IObject的Aggregate方法來完成的,因此構(gòu)件編寫者定義的每個(gè)構(gòu)件 對象都具有聚合其他aspect對象的能力。在此,引入CAR文件中的Context關(guān)鍵字在CAR中,語境技術(shù)通過系統(tǒng)語境構(gòu)件類CContext來實(shí)現(xiàn)普通類對象CClass進(jìn)出普通語境類對象KContext,以及對已經(jīng)進(jìn)入KContext的多個(gè)普通類對象進(jìn)行管理,并實(shí)現(xiàn)了 一些通用的接口 。用戶定義的KContext也是一個(gè)構(gòu)件類,它所具有的語境特征由其屬性aspect來決定,并且context—般情況下要帶屬性aspect,在編寫CAR文件時(shí),context作為關(guān)鍵字用來定義一個(gè)普通語境構(gòu)件類。例如 moduleinterface IAspect { Foo ()}interface IHello { Hello ()}aspect AAspect {interface IAspect'.[aspect(AAspect)]context KContext{ interface IHello,.上述的示例中定義了一個(gè)名為KContext語境構(gòu)件類,類中定義了一個(gè)普通的接口。 具有context關(guān)鍵字的Aspect只作為一個(gè)屬性而存在,Aspect的功能只是靜態(tài)存在context中,而不對context起作用。當(dāng)其他構(gòu)件iiA這個(gè)context時(shí),aspect就會動態(tài)聚合到這個(gè)構(gòu)件中。對于Context^Mt,通常包含了以下步驟 系統(tǒng)進(jìn)行初始化操作; 系統(tǒng)實(shí)例化Context構(gòu)件; 實(shí)例化普通構(gòu)件; 攀 構(gòu)件iS^v context; 客戶代碼調(diào)用構(gòu)件接口; 構(gòu)件離開context;下面將詳細(xì)說明Context構(gòu)件對象語境的進(jìn)入和離開如果一個(gè)構(gòu)件對象進(jìn)入了一語境,那么該對象會聚合語境的特征,也就是聚合了語境屬 性里的aspect對象,從而使該對象擁有了語境特征;如果該對象離開此語境,那么會拆卸聚合該語境屬性里的aspect對象。CAR構(gòu)件庫提供如下兩個(gè)函數(shù)分別完成語境的進(jìn)入和離開ECode CObject: - EnterContext: (PObject pObject, PContext pContext),' ECode CObject:: IieaveContext (PObject pObject, PContext pContext),'EnterContext函數(shù)完成的功能是由語境對象創(chuàng)建其特征實(shí)例(aspect對象),而構(gòu)件對象 進(jìn)入語境時(shí)動態(tài)聚合這些aspect對象。包含了以下步驟(1) 語境對象調(diào)用消息函數(shù)OnObjectEntering通知構(gòu)件對象正在進(jìn)入語境;(2) 語境對象創(chuàng)建語境特征Aspect;(3 )構(gòu)件對象動態(tài)聚合語境特征Aspect;(4) 循環(huán)運(yùn)行上述步驟(2 )、 (3),把context所有的語境特征aspect與構(gòu)件對象聚合;(5) 語境對象調(diào)用消息函數(shù)OnObjectEntered通知構(gòu)件對象已進(jìn)入語境。 LeaveContext實(shí)現(xiàn)的功能是對象iiX者pObj拆卸聚合語境pContext的特征,包括以下步(1) 語境對象調(diào)用消息函數(shù)OnObjectLeaving通知構(gòu)件對象正在退出語境;(2) 構(gòu)件對象拆卸語境特征Aspect;(3) 銷毀語境特征Aspect;(4) 循環(huán)上述步驟(2 )、 ( 3 ),把pObj所有的語境特征aspect拆卸;(5) 語境對象調(diào)用消息函數(shù)OnObjectLeft (pObj)通知構(gòu)件對象已退出語境。 關(guān)于語境進(jìn)入者、語境以及語境特征三者的關(guān)系有如下幾點(diǎn)(1) 構(gòu)件對象進(jìn)入語境后,構(gòu)件對象并不聚合語境本身所實(shí)現(xiàn)的接口功能,對象只是聚 合語境的特征(aspect對象)。(2) 語境的特征只是語境的屬性,在實(shí)現(xiàn)上是aspect對象,但語境本身并不具有這些 aspect對象的功能。如寵物店語境并不具有寵物和商品對象實(shí)例的功能。(3 )語境的特征只是語境的靜態(tài)屬性。(4) 一個(gè)對象可以進(jìn)入多個(gè)語境,每個(gè)語境可被多個(gè)對象進(jìn)入。(5) 在實(shí)際上不是所有的對象都可進(jìn)入某個(gè)語境的,語境可對進(jìn)入者設(shè)置條件,只有條 件滿足者才可"。(6) 也不是所有的對象都可隨便離開某個(gè)語境,語境可對對象設(shè)置條件,只有條件滿足 者才可離開。對于每個(gè)context構(gòu)件類,可重栽如下幾個(gè)函數(shù)來滿足構(gòu)件對象的進(jìn)入和離開時(shí)的制約處理virtual CARAPI OnObjectEntering (PObject pOb j ) 〃對象進(jìn)入前調(diào)用,可以在這里檢查對象是否滿足要求。 virtual CARAPI OnObjectEntered (PObject pOb j )〃對象i^A后(已經(jīng)聚合上context定義的aspects )調(diào)用。 virtual CARAPI OnObjectlieaving (PObject pObj ) //對象離開前調(diào)用,context可以在這里控制是否允許對象離開。 virtual CARAPI OnObjectLeft (PObject pObj ) //對象離開后調(diào)用,在這里做善后工作。再請參閱圖3a至圖3d所示,其中本發(fā)明的方法的具體實(shí)現(xiàn)原理如下(1) 請參閱圖3a所示,客戶程序創(chuàng)建構(gòu)件對象pObject并調(diào)用其接口方法。(2) 請參閱圖3b所示,客戶程序創(chuàng)建語境對象pContext。(3 )客戶程序調(diào)用CObject:: EnterContext(pObject, pContext)使構(gòu)件對象pObject進(jìn)入語 境對象pContext。其中CObject::EnterContext函數(shù)直接調(diào)用pContext->ObjectEnter(pObject)。 ObjectEnter是由CAR編譯器直接根據(jù)CAR文件信息直接生成的函數(shù)。(4) 請參閱圖3c所示,客戶程序調(diào)用語境特征的接口函數(shù)。(5) 請參閱圖3d所示,新的構(gòu)建對象ii^語境環(huán)境,重復(fù)上面的(1)至(4)。(6) 客戶程序調(diào)用CObject:: LeayeContext(pObject, pContext)使構(gòu)件對象pObject離開 語境對象pContext。其中CObject:: LeaveContext函數(shù)直接調(diào)用pContext-〉ObjectLeft(pObject)。 Objecffinter是由CAR編譯器直接根據(jù)CAR文件信息直接生成的函數(shù)。在下面的代碼示例中,其描述的是一個(gè)child (構(gòu)件)進(jìn)入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,'在該示例中定義了 一個(gè)方面構(gòu)件類(AStudent)和一個(gè)語境構(gòu)件類(KSchool )。 KSchool 語境擁有特征AStudent.當(dāng)一個(gè)CChild對象被創(chuàng)建時(shí),他是一個(gè)"小孩,,,具有小孩的行為"玩"(Play),而把"小 孩"送到學(xué)校,他就變成了學(xué)生,具有了學(xué)生的行為"學(xué)習(xí)"(Study),而當(dāng)他從學(xué)校畢業(yè),在 進(jìn)入新的環(huán)境(語境context)前他又變成了 "小孩"。換成代碼描述就是 一個(gè)構(gòu)件對象(CChild)被創(chuàng)建,它只具有PlayO方法,在它進(jìn)入了 一個(gè)語境(KSchool),那么該對象會聚合語境的特征(AStudent ),也就是聚合了語境屬性里 的aspect對象(AStudent),從而具有了 Study()方法;如果該對象離開此語境,那么會拆卸聚 合該語境屬性里的aspect對象。對于服務(wù)端對于每個(gè)context構(gòu)件類,可重載如下幾個(gè)函數(shù)在對象進(jìn)入和離開時(shí)做一些事情(1) OnObjectEntering在對象準(zhǔn)備進(jìn)入語境時(shí)發(fā)生,可以用來檢查對象是否達(dá)到入學(xué)成 繢或年齡。(2) OnObjectEntered在對象已經(jīng)進(jìn)入語境時(shí)發(fā)生,可以用來為學(xué)生分班級和學(xué)號。(3) OnObjectLeaving在對象準(zhǔn)備離開語境時(shí)發(fā)生,可以用來控制是否允許對象離開, 比如判斷其是否畢業(yè)成績達(dá)標(biāo)。(4) ,OnObjectLeft在對象已經(jīng)離開語境時(shí)發(fā)生,可以用來做善后工作。比如要張榜公告 一下畢業(yè)名單之類的。繼續(xù)上面的"小孩""學(xué)生"和"學(xué)校"的例子KSchool.cpp對應(yīng)語境(context) KSchool的實(shí)現(xiàn)代碼如下#include "KSchool,h" #include "—KSchool.cpp" ECode KSchool::OnObjectEntering( /★ [in] V PObject pObject)CConsole: : WriteLine > KSchool: :OnObjectEntering () ")' 〃這里檢查對象是否達(dá)到入學(xué)成績或年齡ECode KSchool::OnObjectEntered( /★ [in] ★/ PObject pObject)CConsole- -W:rite:Line (I/'-> KSchool - - OnObjectEntered ()"), //這里可以用來為學(xué)生分班級和學(xué)號ECode KSchool: :OnObject:Leaving ( /* [in} V PObject pObject)CConsole: : WriteLine (!/'—> KSchool: : OnOb j ectiLeaving () "), 〃這里控制是否允許對象離開,比如判斷其是否畢業(yè)成績達(dá)標(biāo)。}ECode KSphool: :OnObject!Left ( /★ [in〗 V PObject pObject)CConsole.. :Writeliine (1/'-> KSchool: :OnObjectljeft (),,."), 〃這里可以用來做善后工作。比如要張榜公告一下畢業(yè)名單之類的ECode KSchool::Open()CConsole: :WriteLine (L"The school opens. ")' return NOERROR'.對于aspect方面對象AStudent,我們希望在它被自動聚合時(shí)也能夠做一些相應(yīng)的工作,編寫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)〃取學(xué)號.最后,實(shí)現(xiàn)一個(gè)普通的構(gòu)件對象CChild,希望這個(gè)構(gòu)件對象進(jìn)入KSchool這個(gè)context的時(shí)候能夠自動的聚合AStudent這個(gè)方面對象,并在聚合了這個(gè)對象之后打印出一些信息#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.對于客戶端,具體客戶端的代碼實(shí)現(xiàn)如下#import "Go2SchoolDemo,dll"ECode ElastosMain(const WStringArray& args)IChild* pChild = NULIi,-ISchool* pSchool = NUIiIj'. 〃創(chuàng)建一個(gè)名字為Sophie的CChild對象 〃ECode ec = CChild: :New(L"Sophie", &pChild)pChildl->Play ()//判讀pChild是否為一個(gè)學(xué)生IStudent* pStudent'.ec = IStudent"WeakQuery (pChild, &pStudent) if (FAILED(ec)) {/7打印"Sophie' s not a student yet,〃創(chuàng)建一個(gè)KSchool對象ec = KSchool: :New(&pSchool),.pSchool->Open ()〃對象pChildi4yV學(xué)校ec = CObject::EnterContext(pChild, pSchool), if (FAILED(ec)) { 〃不符合條件;〃判讀pChild是否為一個(gè)學(xué)生 ec = IStudent: :WeakQuery (pChild, &pStudent) if (SUCCEEDED(ec)) {〃調(diào)用Study ()函數(shù)pStudent->Study ()〃調(diào)用GetID函數(shù)pStudent—>GetID(&id) '*〃畢業(yè)了現(xiàn)在要離開學(xué)校 ec = CObject J :LeaveContext (pChild, pSchool) if (FAILED(ec)) { 〃沒達(dá)到畢業(yè)要求}〃/判讀pChild是否為一個(gè)學(xué)生= IStudent: :WeakQue:ry (pChildl, &pStudent) if (FAILED (ech {//打印"Sophie' s not a student anymore,"編譯后運(yùn)行的結(jié)果為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.采用了上述的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方 法,由于其基于方面構(gòu)件類模型和動態(tài)聚合技術(shù)實(shí)現(xiàn)了外部構(gòu)件對象實(shí)例在進(jìn)入不同的語境 時(shí)能夠具有不同的語境特征,也就是說可以使不同的外部構(gòu)件對象實(shí)例不用各自編碼就能夠具備相應(yīng)的環(huán)境特征,從而突破了 COM+的對象語境(context)緊密依賴對象的限制,提高 了構(gòu)件應(yīng)用的靈活性,在CAR構(gòu)件的面向方面編程領(lǐng)域是一次重大的進(jìn)步;同時(shí)降低了程序 設(shè)計(jì)的復(fù)雜度,為構(gòu)件面向方面編程提供了更寬廣的空間,為軟件工廠化提供了一條更簡便 的途徑;而且提高了軟件的可擴(kuò)展性,能夠更好地描述現(xiàn)實(shí)世界模型,方便了用戶對不同需 求的擴(kuò)展,為計(jì)算機(jī)構(gòu)件化軟件技術(shù)的進(jìn)一步發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描迷。但是,很顯然仍可以作出各種 修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限 制性的。
權(quán)利要求
1、一種計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法,其特征在于,所述的方法包括以下步驟(1)系統(tǒng)進(jìn)行初始化操作;(2)系統(tǒng)實(shí)例化語境構(gòu)件類得到語境構(gòu)件對象實(shí)例;(3)系統(tǒng)實(shí)例化外部構(gòu)件類得到外部構(gòu)件對象實(shí)例;(4)系統(tǒng)根據(jù)用戶操作,對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例的處理操作;(5)系統(tǒng)根據(jù)調(diào)用者的需要,調(diào)用所述的語境特征對象實(shí)例的構(gòu)件接口;(6)系統(tǒng)根據(jù)用戶操作,對該外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例的處理操作。
2、 才艮據(jù)權(quán)利要求1所述的計(jì)算初教件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特 征功能的方法,其特征在于,所述的語境構(gòu)件類內(nèi)包含有語境特征方面構(gòu)件類屬性,所述的 對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例的處理操作,包括以下步驟(41) 所述的語境構(gòu)件對象實(shí)例創(chuàng)建語境特征方面構(gòu)件類的對象實(shí)例;(42) 所迷的外部構(gòu)件對象實(shí)例動態(tài)聚合所述的語境特征方面構(gòu)件類的對象實(shí)例;(43 )系統(tǒng)判斷所述的外部構(gòu)件對象實(shí)例是否已經(jīng)動態(tài)聚合了所述的語境構(gòu)件對象實(shí)例 中所有的語境特征方面構(gòu)件類的對象實(shí)例; (44)如果否,則重復(fù)上述步驟(41)。
3、 才艮據(jù)權(quán)利要求2所述的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特 征功能的方法,其特征在于,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所迷的語境構(gòu)件對象實(shí) 例的處理操作中的步驟(41)之前還包括以下步驟(40)所述的外部構(gòu)件對象實(shí)例進(jìn)4亍進(jìn)入所述的語境構(gòu)件對象實(shí)例前的制約處理。
4、 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特 征功能的方法,其特征在于,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí) 例的處理操作中的步驟(44)之前還包括以下步驟(45 )所述的外部構(gòu)件對象實(shí)例已經(jīng)動態(tài)聚合了所述的語境構(gòu)件對象實(shí)例中所有的語境 特征方面構(gòu)件類的對象實(shí)例后的制約處理。
5、 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法,其特征在于,所述的語境特征方面構(gòu)件類為所述的語境構(gòu)件類內(nèi)的靜態(tài)屬性。
6、 根據(jù)權(quán)利要求》至5中任一項(xiàng)所迷的計(jì)算M件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自 動具備語境特征功能的方法,其特征在于,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語 境構(gòu)件對象實(shí)例的處理操作,包括以下步驟(61) 所述的外部構(gòu)件對象實(shí)例動態(tài)拆卸聚合所述的語境特征方面構(gòu)件類的對象實(shí)例;(62) 銷毀所述的語境特征方面構(gòu)件類的對象實(shí)例;(63 )系統(tǒng)判斷所述的外部構(gòu)件對象實(shí)例是否已經(jīng)動態(tài)拆卸聚合了所述的語境構(gòu)件對象 實(shí)例中所有的語境特征方面構(gòu)件類的對象實(shí)例; (64)如果否,則重復(fù)上述步驟(61)。
7、 根據(jù)權(quán)利要求6所述的計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特 征功能的方法,其特征在于,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí) 例的處理搮作中的步驟(61)之前還包括以下步驟(60)所述的外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例前的制約處理。
8、 根據(jù)權(quán)利要求6所述的計(jì)算4^件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特 征功能的方法,其特征在于,所述的對該外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí) 例的處理操作中的步驟(64)之前還包括以下步驟(65 )所述的外部構(gòu)件對象實(shí)例已經(jīng)動態(tài)拆卸聚合了所述的語境構(gòu)件對象實(shí)例中所有的 語境特征方面構(gòu)件類的對象實(shí)例后的制約處理。
全文摘要
本發(fā)明涉及一種計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法,包括系統(tǒng)實(shí)例化語境構(gòu)件類得到語境構(gòu)件對象實(shí)例、系統(tǒng)實(shí)例化外部構(gòu)件類得到外部構(gòu)件對象實(shí)例、對該外部構(gòu)件對象實(shí)例進(jìn)行進(jìn)入所述的語境構(gòu)件對象實(shí)例的處理操作、調(diào)用所述的語境特征對象實(shí)例的接口、對該外部構(gòu)件對象實(shí)例進(jìn)行離開所述的語境構(gòu)件對象實(shí)例的處理操作。采用該種計(jì)算機(jī)軟件系統(tǒng)中實(shí)現(xiàn)構(gòu)件對象在語境對象中自動具備語境特征功能的方法,提高了構(gòu)件應(yīng)用的靈活性,降低了程序設(shè)計(jì)的復(fù)雜度,為構(gòu)件編程提供了更寬廣的空間,為軟件工廠化提供了簡便途徑;提高了軟件的可擴(kuò)展性,能夠更好地描述現(xiàn)實(shí)世界模型,方便用戶對不同需求的擴(kuò)展,為計(jì)算機(jī)構(gòu)件化軟件技術(shù)的進(jìn)一步發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
文檔編號G06F9/44GK101216759SQ20071017311
公開日2008年7月9日 申請日期2007年12月26日 優(yōu)先權(quán)日2007年12月26日
發(fā)明者宋世軍, 梁宇洲, 牛靖宇, 蘇翼鵬, 榕 陳, 陳冬曉 申請人:上??铺┦兰o(jì)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
嵊泗县| 永川市| 民乐县| 铅山县| 琼海市| 河间市| 宜黄县| 大厂| 扎赉特旗| 宣威市| 行唐县| 河间市| 闵行区| 新沂市| 平顺县| 赞皇县| 全南县| 丰县| 潍坊市| 手机| 浙江省| 疏勒县| 大洼县| 保康县| 安宁市| 息烽县| 永宁县| 五寨县| 内江市| 吉安市| 浮山县| 安仁县| 和林格尔县| 高邮市| 迁西县| 清涧县| 姚安县| 科技| 灵璧县| 三河市| 百色市|