專利名稱:基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對(duì)象存儲(chǔ)庫(kù)中對(duì)象的處理方法,特別是一種基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法。
背景技術(shù):
對(duì)象存儲(chǔ)庫(kù)(DOORS)是一種集成多應(yīng)用數(shù)據(jù)系統(tǒng),包括用來(lái)產(chǎn)生、儲(chǔ)存及獲取數(shù)據(jù)文件的工具和程序,數(shù)據(jù)文件稱為對(duì)象。辦公軟件通常包括多種應(yīng)用,如電子表格、文字處理、演示文稿、電子郵件等,這些應(yīng)用常規(guī)上都有各自的底層結(jié)構(gòu)和文檔格式,比較獨(dú)立。對(duì)象存儲(chǔ)庫(kù)是通過(guò)二維表式結(jié)構(gòu)作為每一個(gè)應(yīng)用的結(jié)構(gòu),統(tǒng)一了各種應(yīng)用的結(jié)構(gòu),在統(tǒng)一的基礎(chǔ)上,做到了各應(yīng)用間數(shù)據(jù)交換的無(wú)縫,所有應(yīng)用采用相同的文檔格式。所有應(yīng)用的數(shù)據(jù)都放入對(duì)象存儲(chǔ)庫(kù)中,通過(guò)對(duì)象存儲(chǔ)庫(kù)處理程序(DOORS Services)進(jìn)行訪問(wèn),用戶還可基于對(duì)象存儲(chǔ)庫(kù)進(jìn)行二次開(kāi)發(fā)等,如圖10所示。
對(duì)象存儲(chǔ)庫(kù)的對(duì)象之間通過(guò)對(duì)象地址進(jìn)行引用,對(duì)象和對(duì)象之間通過(guò)引用又可以組成另一個(gè)對(duì)象?,F(xiàn)有技術(shù)使用的對(duì)象是對(duì)象存儲(chǔ)庫(kù)中存放的基于Office應(yīng)用定義好的標(biāo)準(zhǔn)對(duì)象,如文檔(Document)、段落(Paragraph)、幻燈片(Slide)、文字(Text)等。定義標(biāo)準(zhǔn)對(duì)象的好處是一旦一個(gè)表達(dá)某種數(shù)據(jù)的對(duì)象定義后,它就成為表達(dá)這個(gè)數(shù)據(jù)的唯一形式,這種將對(duì)象標(biāo)準(zhǔn)化的行為可保證整個(gè)Office數(shù)據(jù)表達(dá)的簡(jiǎn)潔,而且多數(shù)對(duì)象定義可重復(fù)使用,降低了數(shù)據(jù)的冗余,大大提高office的運(yùn)行性能。例如,任何表示文字的地方都使用Paragraph對(duì)象,如文字處理中的文字、電子表格單元格中的文字、幻燈片中的文字,這樣Paragraph對(duì)象就成為表示段落文字的標(biāo)準(zhǔn)對(duì)象。這樣的對(duì)象不僅Office本身可以直接使用,如果用戶基于對(duì)象存儲(chǔ)庫(kù)進(jìn)行開(kāi)發(fā),也可以直接使用這些已經(jīng)定義的對(duì)象。對(duì)象在對(duì)象存儲(chǔ)庫(kù)中的位置不是一成不變的,隨著內(nèi)容的改變或增多,對(duì)象會(huì)根據(jù)需要調(diào)整其在對(duì)象存儲(chǔ)庫(kù)中的地址。
在現(xiàn)有技術(shù)中,對(duì)象放置在對(duì)象存儲(chǔ)庫(kù)中后由對(duì)象存儲(chǔ)庫(kù)處理程序記錄其存儲(chǔ)地址。對(duì)象之間的引用是通過(guò)引用對(duì)象記錄被引用對(duì)象的地址,進(jìn)行直接引用。當(dāng)被引用對(duì)象的地址改變時(shí),需要通知對(duì)象存儲(chǔ)庫(kù)處理程序調(diào)整地址,對(duì)象存儲(chǔ)庫(kù)處理程序搜索對(duì)象存儲(chǔ)庫(kù)中所有對(duì)象,找出引用了該對(duì)象的所有對(duì)象,然后逐一通知這些對(duì)象改變地址引用。在實(shí)際應(yīng)用中,現(xiàn)有技術(shù)對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)、引用和地址調(diào)整方法存在下述不足(1)對(duì)象之間的引用如果過(guò)多的話,呈復(fù)雜的網(wǎng)狀結(jié)構(gòu),要想理清引用與被引用的對(duì)象需要遍歷所有對(duì)象,不僅算法復(fù)雜而且耗時(shí)。
(2)對(duì)象存儲(chǔ)庫(kù)中的對(duì)象發(fā)生地址變動(dòng)會(huì)頻繁出現(xiàn),如果要求對(duì)象存儲(chǔ)庫(kù)處理程序每次都進(jìn)行全部搜索并逐一去調(diào)整會(huì)加重系統(tǒng)負(fù)荷,降低程序運(yùn)行的速度,效率較低。
(3)為了盡量避免這樣的操作,對(duì)象存儲(chǔ)庫(kù)處理程序采用了一種臨時(shí)記錄的方法,在給新對(duì)象分配空間時(shí)盡可能不去影響已有對(duì)象的位置。這樣雖然能避免一些頻繁調(diào)整對(duì)象地址的行為,但是這樣會(huì)使對(duì)象存儲(chǔ)庫(kù)中的空間出現(xiàn)很多“碎片”,增加程序使用內(nèi)存,同樣會(huì)降低程序運(yùn)行效率。這個(gè)原理和硬盤的空間使用類似,當(dāng)硬盤上的文件存儲(chǔ)使用久后,就會(huì)出現(xiàn)許多碎片,影響文件讀寫的速度。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)對(duì)象引用方面的不足,提供一種基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,將對(duì)象之間的直接引用轉(zhuǎn)變?yōu)橥ㄟ^(guò)代理進(jìn)行的間接引用,變對(duì)象之間復(fù)雜的網(wǎng)狀引用關(guān)系為一對(duì)一的引用關(guān)系,使對(duì)象之間的引用更加清晰,便于理清。
本發(fā)明進(jìn)一步的目的是針對(duì)現(xiàn)有技術(shù)對(duì)象存儲(chǔ)庫(kù)對(duì)象地址調(diào)整機(jī)制中存在的技術(shù)缺陷,提供一種全新機(jī)制的對(duì)象地址調(diào)整方法,有效減小了對(duì)象存儲(chǔ)庫(kù)因地址調(diào)整產(chǎn)生的額外處理過(guò)程,大大提高程序運(yùn)行的速度,提高了對(duì)象存儲(chǔ)庫(kù)處理程序的性能,并優(yōu)化了對(duì)象存儲(chǔ)庫(kù)的使用空間。
為了實(shí)現(xiàn)本發(fā)明目的,本發(fā)明提供了一種基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,包括步驟步驟210、引用對(duì)象根據(jù)被引用對(duì)象,獲得所述被引用對(duì)象的代理地址;步驟220、根據(jù)所述代理地址,訪問(wèn)被引用對(duì)象的代理;步驟230、讀取所述代理記錄的對(duì)象地址;步驟240、引用對(duì)象根據(jù)所述對(duì)象地址引用所述被引用對(duì)象。
其中,所述步驟210前還包括步驟引用對(duì)象判斷被引用對(duì)象的代理地址是否存在,存在則執(zhí)行步驟210,不存在則執(zhí)行下述步驟步驟110、引用對(duì)象向處理程序詢問(wèn)被引用對(duì)象的代理地址;步驟120、處理程序通過(guò)搜索代理存儲(chǔ)區(qū)獲得所述代理的代理地址;步驟130、處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,執(zhí)行步驟210。
其中,所述步驟120具體為步驟121、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索被引用對(duì)象的代理,搜索到時(shí)執(zhí)行步驟122,沒(méi)有搜索到時(shí)執(zhí)行步驟123;步驟122、處理程序獲得所述代理的代理地址,執(zhí)行步驟130;步驟123、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,獲得被引用對(duì)象的對(duì)象地址;步驟124、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)生成一代理;步驟125、處理程序?qū)⑺鰧?duì)象地址寫入所述代理;步驟126、所述代理向處理程序注冊(cè)其代理地址,處理程序獲得所述代理的代理地址,執(zhí)行步驟130。
其中,所述步驟123具體為步驟1231、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,搜索到時(shí)執(zhí)行步驟1232,沒(méi)有搜索到時(shí)執(zhí)行步驟1233;
步驟1232、獲得被引用對(duì)象的對(duì)象地址,執(zhí)行步驟124;步驟1233、處理程序?qū)⒈灰脤?duì)象存儲(chǔ)到對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū);步驟1234、處理程序記錄被引用對(duì)象的對(duì)象地址,執(zhí)行步驟124。
在上述技術(shù)方案中,還包括調(diào)整對(duì)象地址的步驟,當(dāng)對(duì)象地址改變時(shí),處理程序執(zhí)行如下步驟步驟310、處理程序記錄所述對(duì)象新地址;步驟320、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索所述對(duì)象的代理,搜索到時(shí)執(zhí)行步驟330,沒(méi)有搜索到時(shí)執(zhí)行步驟350;步驟330、處理程序訪問(wèn)所述對(duì)象的代理;步驟340、處理程序?qū)⑺鰧?duì)象新地址寫入所述代理;步驟350、地址調(diào)整結(jié)束。
在上述技術(shù)方案中,還包括引用對(duì)象的存儲(chǔ)步驟,處理程序存儲(chǔ)引用對(duì)象時(shí)執(zhí)行如下步驟步驟410、處理程序?qū)⑺鲆脤?duì)象存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū);步驟420、所述引用對(duì)象向處理程序注冊(cè)其引用關(guān)系,向處理程序詢問(wèn)被引用對(duì)象的代理地址;步驟430、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索被引用對(duì)象的代理,搜索到時(shí)執(zhí)行步驟440,沒(méi)有搜索到時(shí)執(zhí)行步驟450;步驟440、處理程序獲得所述代理的代理地址,處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,存儲(chǔ)結(jié)束;步驟450、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,獲得被引用對(duì)象的對(duì)象地址;步驟460、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)生成一代理;步驟470、處理程序?qū)⑺鰧?duì)象地址寫入所述代理;步驟480、所述代理向處理程序注冊(cè)其代理地址,處理程序獲得所述代理的代理地址;步驟490、處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,存儲(chǔ)結(jié)束。
本發(fā)明基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法建立了一種新型的對(duì)象引用機(jī)制,即所有對(duì)象之間的引用都通過(guò)代理,將現(xiàn)有技術(shù)的對(duì)象之間記錄對(duì)象地址的直接引用改變?yōu)楸景l(fā)明的通過(guò)記錄代理地址的間接引用,變對(duì)象之間復(fù)雜的網(wǎng)狀引用關(guān)系為一對(duì)一的引用關(guān)系,使對(duì)象之間的引用更加清晰,便于理清,簡(jiǎn)化了處理程序管理對(duì)象的算法和時(shí)間。
本發(fā)明的技術(shù)方案全面考慮到了引用對(duì)象對(duì)被引用對(duì)象引用過(guò)程中可能存在的各種情況,包括(1)當(dāng)引用對(duì)象已經(jīng)記錄了被引用對(duì)象的代理地址時(shí),可以直接執(zhí)行引用流程;(2)當(dāng)引用對(duì)象沒(méi)有記錄被引用對(duì)象的代理地址,即引用對(duì)象第一次引用被引用對(duì)象時(shí),引用對(duì)象通過(guò)處理程序獲得被引用對(duì)象的代理地址,之后執(zhí)行引用流程;(3)在(2)情況中,如果被引用對(duì)象已經(jīng)有代理地址時(shí),處理程序通過(guò)搜索代理存儲(chǔ)區(qū)即可獲得被引用對(duì)象的代理地址;如果被引用對(duì)象沒(méi)有代理地址,即被引用對(duì)象是第一次被其他對(duì)象引用時(shí),處理程序則在代理存儲(chǔ)區(qū)生成一個(gè)代理,并獲得其代理地址;(4)在(3)情況中,如果被引用對(duì)象已經(jīng)存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)中時(shí),處理程序直接獲得對(duì)象地址;如果被引用對(duì)象沒(méi)有存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)中時(shí),處理程序?qū)⒈灰脤?duì)象存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)的存儲(chǔ)區(qū)中,并同時(shí)在代理存儲(chǔ)區(qū)生成一個(gè)代理,并獲得其代理地址;在本發(fā)明優(yōu)選技術(shù)方案中,本發(fā)明還建立了一種新型的對(duì)象地址調(diào)整機(jī)制,當(dāng)對(duì)象地址發(fā)生變化時(shí),處理程序不再需要像現(xiàn)有技術(shù)那樣去掃描對(duì)象存儲(chǔ)庫(kù)中的所有對(duì)象,只需要掃描范圍很小的代理存儲(chǔ)區(qū),同時(shí)也不需要像現(xiàn)有技術(shù)那樣逐一通知引用對(duì)象來(lái)調(diào)整引用地址,所以本發(fā)明能減小因地址調(diào)整帶來(lái)的額外處理過(guò)程,大大提高程序運(yùn)行的速度,提高對(duì)象存儲(chǔ)庫(kù)處理程序的性能。
在本發(fā)明優(yōu)選技術(shù)方案中,本發(fā)明還建立了一種新型的對(duì)象存儲(chǔ)方法,在對(duì)象存儲(chǔ)的同時(shí)即建立對(duì)象代理,對(duì)象存儲(chǔ)庫(kù)在存儲(chǔ)新對(duì)象時(shí)不必刻意考慮可能對(duì)已有對(duì)象的影響,可以將對(duì)象存儲(chǔ)在任何位置,因此對(duì)象存儲(chǔ)庫(kù)中的空間可以充分利用,不會(huì)出現(xiàn)“碎片”,因此提高了對(duì)象存儲(chǔ)庫(kù)的程序運(yùn)行效率。
下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
圖1為本發(fā)明基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法流程圖;圖2為本發(fā)明對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例一的流程圖;圖4為本發(fā)明實(shí)施例二的流程圖;圖5為本發(fā)明實(shí)施例三的流程圖;圖6為本發(fā)明對(duì)象地址調(diào)整流程圖;圖7為本發(fā)明對(duì)象存儲(chǔ)庫(kù)的對(duì)象地址調(diào)整示意圖;圖8為本發(fā)明引用對(duì)象存儲(chǔ)流程圖;圖9為本發(fā)明對(duì)象存儲(chǔ)庫(kù)的結(jié)構(gòu)示意圖;圖10為對(duì)象存儲(chǔ)庫(kù)的應(yīng)用示意圖;圖11為對(duì)象存儲(chǔ)庫(kù)對(duì)象引用示意圖。
具體實(shí)施例方式
為清晰地說(shuō)明本發(fā)明的技術(shù)方案,簡(jiǎn)要說(shuō)明一下本發(fā)明中涉及的一些專用術(shù)語(yǔ)。
(1)對(duì)象存儲(chǔ)庫(kù)對(duì)象存儲(chǔ)庫(kù)(DOORS)是一種集成多應(yīng)用數(shù)據(jù)系統(tǒng),包括用來(lái)產(chǎn)生、儲(chǔ)存及獲取數(shù)據(jù)文件的工具以及程序架構(gòu)。對(duì)象存儲(chǔ)庫(kù)提供了二維表式的對(duì)象存取方式,該二維表通過(guò)表號(hào)、行號(hào)、列號(hào)唯一指定一個(gè)單元格(Cell),每個(gè)單元格中可放置一個(gè)且僅放置一個(gè)對(duì)象,單元格和單元格之間的對(duì)象可以組合成另一個(gè)對(duì)象,所有的單元構(gòu)成對(duì)象存儲(chǔ)庫(kù);(2)對(duì)象存儲(chǔ)庫(kù)處理程序上層應(yīng)用與對(duì)象存儲(chǔ)庫(kù)進(jìn)行交互所采用的處理程序,用戶通過(guò)所述對(duì)象存儲(chǔ)庫(kù)處理程序(以下簡(jiǎn)稱處理程序)就可以進(jìn)行對(duì)象的訪問(wèn)和操作。對(duì)象存儲(chǔ)庫(kù)設(shè)置有訪問(wèn)對(duì)象的標(biāo)準(zhǔn)接口,且這些接口是對(duì)外開(kāi)放的,用戶只要了解這些接口,基本都能實(shí)現(xiàn)所需的操作。
(3)對(duì)象和對(duì)象之間的引用對(duì)象和對(duì)象之間通過(guò)引用可以組成另一個(gè)對(duì)象。如圖11所示,B列1行的單元格中的對(duì)象SolidObject為 ,表示一個(gè)文本框?qū)ο螅撐谋究蛑杏幸粋€(gè)文字段落“abcd”,在對(duì)象存儲(chǔ)庫(kù)中,文字“abcd”是一個(gè)段落對(duì)象(Paragraph),放在A列201行。因此,SolidObject和段落對(duì)象共同組成了上述文本框?qū)ο?。SolidObject對(duì)象中就記錄了一個(gè)地址(A201)來(lái)指向段落對(duì)象。
對(duì)象在對(duì)象存儲(chǔ)庫(kù)中的位置不是一成不變的,隨著內(nèi)容的改變或增多,對(duì)象會(huì)根據(jù)需要調(diào)整其在對(duì)象存儲(chǔ)庫(kù)中的地址。如圖11所示,如201行前插入一行,201行就會(huì)變成202行。這時(shí),對(duì)象存儲(chǔ)庫(kù)處理程序就需要通知SolidObject調(diào)整其引用的地址,將引用地址(A201)改為(A202)。
(4)代理記錄了對(duì)象在對(duì)象存儲(chǔ)庫(kù)中的存儲(chǔ)地址,如圖11所示,單元格B1中存儲(chǔ)了對(duì)象SolidObject,則對(duì)象SolidObject的存儲(chǔ)地址為B1,其代理記錄的內(nèi)容為B1。
(5)代理地址代理在代理存儲(chǔ)區(qū)的存儲(chǔ)地址。
圖1為本發(fā)明基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法流程圖,在對(duì)象引用時(shí)執(zhí)行步驟
步驟210、引用對(duì)象根據(jù)被引用對(duì)象,獲得所述被引用對(duì)象的代理地址;步驟220、根據(jù)所述代理地址,訪問(wèn)被引用對(duì)象的代理;步驟230、讀取所述代理記錄的對(duì)象地址;步驟240、引用對(duì)象根據(jù)所述對(duì)象地址引用所述被引用對(duì)象。
本發(fā)明基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法建立了一種新型的對(duì)象引用機(jī)制,即所有對(duì)象之間的引用都通過(guò)代理,將現(xiàn)有技術(shù)的對(duì)象之間記錄地址的直接引用改變?yōu)楸景l(fā)明的通過(guò)代理地址的間接引用。
圖2為本發(fā)明對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用結(jié)構(gòu)示意圖。如圖2所示,對(duì)象存儲(chǔ)庫(kù)中有三個(gè)對(duì)象,對(duì)象Object1、Object2和Object3。其中,對(duì)象Object1和Object2都引用了對(duì)象Object3,對(duì)象Object3已有代理Address3,代理Address3記錄了對(duì)象Object3的對(duì)象地址,記為Address3=B5,同時(shí)代理Address3被存儲(chǔ)在單元格A1,對(duì)象Object1和Object2已記錄對(duì)象Object3的代理地址=A1。本發(fā)明對(duì)象引用過(guò)程為當(dāng)對(duì)象Object1需要訪問(wèn)對(duì)象Object3時(shí),它根據(jù)自身記錄的代理地址A1,到A1單元格中訪問(wèn)取出代理Address3,根據(jù)其中的記錄Address3=B5,得知對(duì)象Object3的對(duì)象地址是B5,進(jìn)一步到B5單元格就會(huì)正確地取到對(duì)象Object3。對(duì)象Object2的訪問(wèn)過(guò)程也一樣。圖2所示的實(shí)線箭頭表示實(shí)際的引用,虛線箭頭表示達(dá)到的效果,是一種間接引用。
本發(fā)明對(duì)象引用過(guò)程中包括多種可能性,包括(1)引用對(duì)象已經(jīng)記錄了被引用對(duì)象的代理地址;(2)引用對(duì)象沒(méi)有記錄被引用對(duì)象的代理地址,即引用對(duì)象第一次引用被引用對(duì)象時(shí);(3)在(2)情況中,被引用對(duì)象已經(jīng)有或還沒(méi)有代理地址;(4)在(3)情況中,被引用對(duì)象已經(jīng)或還沒(méi)有被存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)中。
本發(fā)明的技術(shù)方案全面考慮到了上述可能性。圖1所示技術(shù)方案為可能情況(1)的正常引用流程圖,下面將其它情況的引用過(guò)程予以一一說(shuō)明。
實(shí)施例一本實(shí)施例針對(duì)引用對(duì)象沒(méi)有記錄被引用對(duì)象的代理地址,即引用對(duì)象第一次引用被引用對(duì)象時(shí)的情況。在該情況下,引用對(duì)象將通過(guò)處理程序獲得被引用對(duì)象的代理地址,之后執(zhí)行引用流程。
圖3為本發(fā)明實(shí)施例一的流程圖,具體為步驟200、引用對(duì)象判斷被引用對(duì)象的代理地址是否存在,不存在則執(zhí)行步驟110,存在則執(zhí)行步驟210;步驟110、引用對(duì)象向處理程序詢問(wèn)被引用對(duì)象的代理地址;步驟120、處理程序通過(guò)搜索代理存儲(chǔ)區(qū)獲得所述代理的代理地址;步驟130、處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,執(zhí)行步驟210;步驟210、引用對(duì)象根據(jù)被引用對(duì)象的代理地址,訪問(wèn)所述代理地址;步驟220、在所述代理地址處訪問(wèn)被引用對(duì)象的代理;步驟230、解析得到所述代理中記錄的對(duì)象地址;步驟240、引用對(duì)象根據(jù)所述對(duì)象地址訪問(wèn)所述被引用對(duì)象,取到所述被引用對(duì)象。
實(shí)施例二本實(shí)施例是在實(shí)施例一技術(shù)方案基礎(chǔ)上,討論被引用對(duì)象有或沒(méi)有代理地址時(shí)的處理情況。如果被引用對(duì)象已經(jīng)有代理地址,處理程序通過(guò)搜索代理存儲(chǔ)區(qū)即可獲得被引用對(duì)象的代理地址;如果被引用對(duì)象沒(méi)有代理地址,即被引用對(duì)象是第一次被其他對(duì)象引用時(shí),處理程序則在代理存儲(chǔ)區(qū)生成一個(gè)代理,并獲得其代理地址。
圖4為本發(fā)明實(shí)施例二的流程圖,實(shí)施例一中的步驟120具體為步驟121、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索被引用對(duì)象的代理,搜索到時(shí)執(zhí)行步驟122,沒(méi)有搜索到時(shí)執(zhí)行步驟123;步驟122、處理程序獲得所述代理的代理地址,執(zhí)行步驟130;步驟123、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,獲得被引用對(duì)象的對(duì)象地址;
步驟124、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)生成一代理;步驟125、處理程序?qū)⑺鰧?duì)象地址寫入所述代理;步驟126、所述代理向處理程序注冊(cè)其代理地址,處理程序獲得所述代理的代理地址,執(zhí)行步驟130。
實(shí)施例三本實(shí)施例是在實(shí)施例二技術(shù)方案基礎(chǔ)上,討論被引用對(duì)象已經(jīng)或還沒(méi)有存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)時(shí)的處理情況。如果被引用對(duì)象已經(jīng)存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)中時(shí),處理程序直接獲得對(duì)象地址;如果被引用對(duì)象沒(méi)有存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)中時(shí),處理程序?qū)⒈灰脤?duì)象存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)的存儲(chǔ)區(qū)中,獲得對(duì)象地址,之后執(zhí)行生成代理、獲得代理地址等步驟。
圖5為本發(fā)明實(shí)施例三的流程圖,實(shí)施例二中的步驟123具體為步驟1231、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,搜索到時(shí)執(zhí)行步驟1232,沒(méi)有搜索到時(shí)執(zhí)行步驟1233;步驟1232、獲得被引用對(duì)象的對(duì)象地址,執(zhí)行步驟124;步驟1233、處理程序?qū)⒈灰脤?duì)象存儲(chǔ)到對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū);步驟1234、處理程序記錄被引用對(duì)象的對(duì)象地址,執(zhí)行步驟124。
圖6為本發(fā)明對(duì)象地址調(diào)整流程圖。在本發(fā)明技術(shù)方案中,還包括調(diào)整對(duì)象地址的步驟,當(dāng)對(duì)象地址改變時(shí),處理程序執(zhí)行如下步驟步驟310、處理程序記錄所述對(duì)象新地址;步驟320、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索所述對(duì)象的代理,搜索到時(shí)執(zhí)行步驟330,沒(méi)有搜索到時(shí)執(zhí)行步驟350;步驟330、處理程序訪問(wèn)所述對(duì)象的代理;步驟340、處理程序?qū)⑺鰧?duì)象新地址寫入所述代理;步驟350、地址調(diào)整結(jié)束。
在上述技術(shù)方案中,本發(fā)明建立了一種新型的對(duì)象地址調(diào)整機(jī)制,當(dāng)被引用的對(duì)象地址發(fā)生變化時(shí),本發(fā)明只需要通知對(duì)象存儲(chǔ)庫(kù)處理程序修改所述對(duì)象的代理地址,具體為處理程序只在代理存儲(chǔ)區(qū)中掃描,找到記錄所述對(duì)象的代理,修改代理中記載的代理地址數(shù)據(jù)。在現(xiàn)有技術(shù)中,當(dāng)某個(gè)對(duì)象發(fā)生移動(dòng)后,處理程序需要掃描整個(gè)對(duì)象存儲(chǔ)庫(kù)中的所有對(duì)象,然后逐一通知這些對(duì)象改變地址引用。在本發(fā)明技術(shù)方案中,對(duì)象存儲(chǔ)庫(kù)中設(shè)置了代理存儲(chǔ)區(qū),專門放置對(duì)象地址信息,并建立了對(duì)象之間通過(guò)代理進(jìn)行間接引用的新型的對(duì)象引用機(jī)制,所以當(dāng)某個(gè)對(duì)象發(fā)生移動(dòng)后,處理程序不再需要去掃描對(duì)象存儲(chǔ)庫(kù)中的所有對(duì)象,只需要掃描范圍很小的代理存儲(chǔ)區(qū),看這個(gè)移動(dòng)對(duì)象在代理存儲(chǔ)區(qū)是否有代理地址,若有則去改變這個(gè)代理中的代理地址數(shù)據(jù),如果沒(méi)有,說(shuō)明該對(duì)象沒(méi)有被其他對(duì)象引用,則什么也不需要做。同時(shí),處理程序也不需要逐一通知引用對(duì)象來(lái)調(diào)整引用地址。顯然本發(fā)明的技術(shù)方案與現(xiàn)有技術(shù)相比能減小因地址調(diào)整帶來(lái)的額外處理過(guò)程,大大提高程序運(yùn)行的速度,提高對(duì)象存儲(chǔ)庫(kù)處理程序的性能。
圖7為本發(fā)明對(duì)象存儲(chǔ)庫(kù)的對(duì)象地址調(diào)整示意圖。對(duì)象存儲(chǔ)庫(kù)中有三個(gè)對(duì)象,對(duì)象Object1、Object2和Object3。其中,對(duì)象Object1和Object2都引用了對(duì)象Object3。當(dāng)對(duì)象Object3從單元格B5移到單元格B6后,處理程序在代理存儲(chǔ)區(qū)中掃描,找到對(duì)象Object3的代理Address3,將其中內(nèi)容Address3更新為Address3=B6。
當(dāng)對(duì)象Object1或Object2訪問(wèn)對(duì)象Object3時(shí),它根據(jù)自身記錄的代理地址A1,到A1單元格中取出Address3=B6,得知對(duì)象Object3的地址是B6,進(jìn)一步到B6單元格就會(huì)正確地取到對(duì)象Object3。
圖8為本發(fā)明引用對(duì)象存儲(chǔ)流程圖。在上述技術(shù)方案中,本發(fā)明還包括引用對(duì)象的存儲(chǔ)步驟,處理程序存儲(chǔ)引用對(duì)象時(shí)執(zhí)行如下步驟步驟410、處理程序?qū)⑺鲆脤?duì)象存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū);步驟420、所述引用對(duì)象向處理程序注冊(cè)其引用關(guān)系,向處理程序詢問(wèn)被引用對(duì)象的代理地址;步驟430、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索被引用對(duì)象的代理,搜索到時(shí)執(zhí)行步驟440,沒(méi)有搜索到時(shí)執(zhí)行步驟450;步驟440、處理程序獲得所述代理的代理地址,處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,存儲(chǔ)結(jié)束;步驟450、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,獲得被引用對(duì)象的對(duì)象地址;步驟460、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)生成一代理;步驟470、處理程序?qū)⑺鰧?duì)象地址寫入所述代理;步驟480、所述代理向處理程序注冊(cè)其代理地址,處理程序獲得所述代理的代理地址;步驟490、處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,存儲(chǔ)結(jié)束。
從本發(fā)明上述技術(shù)方案可以看出,對(duì)象存儲(chǔ)可以劃分為二種情況對(duì)象有引用關(guān)系和對(duì)象無(wú)引用關(guān)系。當(dāng)對(duì)象無(wú)引用關(guān)系時(shí),對(duì)象仍可采用現(xiàn)有技術(shù)的存儲(chǔ)方式。當(dāng)對(duì)象有引用關(guān)系時(shí),又可以劃分為二種情況對(duì)象是引用對(duì)象還是被引用對(duì)象。當(dāng)對(duì)象是引用對(duì)象時(shí),在其存儲(chǔ)的同時(shí)需要記錄被引用對(duì)象的代理地址;當(dāng)對(duì)象是被引用對(duì)象時(shí),則在其存儲(chǔ)的同時(shí)建立對(duì)象代理。該技術(shù)方案十分符合設(shè)置代理存儲(chǔ)區(qū)的目的,只有被引用對(duì)象才需要代理地址,引用對(duì)象則需要知道被引用對(duì)象的代理地址。這一點(diǎn)可以大量減少代理存儲(chǔ)區(qū)管理的地址數(shù)量,使后續(xù)的引用和地址調(diào)整速度更快。本發(fā)明對(duì)象的存儲(chǔ)是一種建立對(duì)象引用關(guān)系的存儲(chǔ),與現(xiàn)有技術(shù)單一存儲(chǔ)相比,本發(fā)明在對(duì)象存儲(chǔ)過(guò)程中就確立了對(duì)象間的關(guān)系,變對(duì)象之間復(fù)雜的網(wǎng)狀引用關(guān)系為一種一對(duì)一的引用關(guān)系,使對(duì)象之間的引用關(guān)系更加清晰,便于理清。
圖9為本發(fā)明對(duì)象存儲(chǔ)庫(kù)的結(jié)構(gòu)示意圖。如圖9所示,對(duì)象存儲(chǔ)庫(kù)由電子表格構(gòu)成,電子表格由一個(gè)或一個(gè)以上的行和一個(gè)或一個(gè)以上的列構(gòu)成,且任一行與任一列相互交叉構(gòu)成電子表格的單元格,每一個(gè)單元格保存一個(gè)且僅為一個(gè)對(duì)象或?qū)ο蟮刂?,所有單元格?gòu)成所述對(duì)象存儲(chǔ)庫(kù)。本發(fā)明對(duì)象存儲(chǔ)庫(kù)設(shè)置有二個(gè)區(qū)域?qū)ο蟠鎯?chǔ)區(qū)DX和代理存儲(chǔ)區(qū)DL,對(duì)象存儲(chǔ)區(qū)DX負(fù)責(zé)存儲(chǔ)對(duì)象,代理存儲(chǔ)區(qū)DL負(fù)責(zé)存儲(chǔ)對(duì)象的代理。在本發(fā)明中,代理存儲(chǔ)區(qū)DL設(shè)置在電子表格的第一行,如單元格A1、B1、C1......,對(duì)象存儲(chǔ)區(qū)DX設(shè)置在電子表格除第一行以外的其他行中,如單元格A8、B5、C6......。在將對(duì)象放置在電子表格中時(shí),分別進(jìn)行對(duì)象和與對(duì)象一一對(duì)應(yīng)的代理的存儲(chǔ),即將對(duì)象存儲(chǔ)在對(duì)象存儲(chǔ)區(qū)DX,并在代理存儲(chǔ)區(qū)DL生成一個(gè)與所述對(duì)象一一對(duì)應(yīng)的代理,該代理記錄了對(duì)象在地址存儲(chǔ)區(qū)的存儲(chǔ)地址信息,本發(fā)明稱之為對(duì)象地址;同時(shí),該代理還對(duì)應(yīng)有一個(gè)其存儲(chǔ)在代理存儲(chǔ)區(qū)的存儲(chǔ)地址信息,本發(fā)明稱之為代理地址。上述對(duì)象地址和代理地址的記錄格式為列號(hào)+行號(hào)。
以圖9所示為例,對(duì)象Object1、Object2和Object3分別存儲(chǔ)在電子表格的3行D列、5行D列和5行B列的單元格內(nèi),所以其對(duì)象地址分別記為D3、D5和B5。三個(gè)對(duì)象的存儲(chǔ)過(guò)程可以描述為(1)如果對(duì)象Object1為引用對(duì)象Object3的引用對(duì)象,且已經(jīng)存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)中,對(duì)象地址為D3,則對(duì)象Object3的存儲(chǔ)過(guò)程為處理程序?qū)?duì)象Object3存儲(chǔ)在5行B列的單元格內(nèi),記錄其對(duì)象地址為B5,由于對(duì)象Object3是被引用對(duì)象,處理程序會(huì)在代理存儲(chǔ)區(qū)生成一個(gè)代理Address3,代理Address3記錄了對(duì)象Object3的對(duì)象地址,記為Address3=B5。同時(shí),由于代理Address3存儲(chǔ)在電子表格的1行A列的單元格內(nèi),所以其代理地址記為A1。處理程序?qū)⒋淼刂稟1發(fā)給對(duì)象Object1,對(duì)象Object1則記錄對(duì)象Object3的代理地址=A1。
(2)接例(1),如果對(duì)象Object2為引用對(duì)象Object3的引用對(duì)象,則對(duì)象Object2的存儲(chǔ)過(guò)程為處理程序?qū)?duì)象Object2存儲(chǔ)在5行D列的單元格內(nèi),由于對(duì)象Object2是引用對(duì)象,所以對(duì)象Object2向處理程序詢問(wèn)對(duì)象Object3的代理地址,處理程序?qū)⒋淼刂稟1發(fā)給對(duì)象Object2,對(duì)象Object2則記錄對(duì)象Object3的代理地址=A1;(3)接例(1),如果對(duì)象Object2為引用對(duì)象Object1的引用對(duì)象,則對(duì)象Object2的存儲(chǔ)過(guò)程為處理程序?qū)?duì)象Object2存儲(chǔ)在5行D列的單元格內(nèi),由于對(duì)象Object2是引用對(duì)象,所以對(duì)象Object2向處理程序詢問(wèn)對(duì)象Object1的代理地址。處理程序在代理存儲(chǔ)區(qū)沒(méi)有搜索到對(duì)象Object1的代理,處理程序則在代理存儲(chǔ)區(qū)生成一個(gè)代理Address1,代理Address1記錄了對(duì)象Object1的對(duì)象地址,記為Address1=D3。同時(shí),由于代理Address1存儲(chǔ)在電子表格的1行C列的單元格內(nèi),所以其代理地址記為C1。處理程序?qū)⒋淼刂稢1發(fā)給對(duì)象Object2,對(duì)象Object2則記錄對(duì)象Object1的代理地址=C1;(4)如果對(duì)象Object1為無(wú)引用關(guān)系對(duì)象,處理程序?qū)?duì)象Object1存儲(chǔ)在3行D列單元格內(nèi),記錄其對(duì)象地址為D3,與現(xiàn)有技術(shù)的存儲(chǔ)過(guò)程相同。
最后所應(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)利要求
1.一種基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,包括步驟210、引用對(duì)象根據(jù)被引用對(duì)象,獲得所述被引用對(duì)象的代理地址;步驟220、根據(jù)所述代理地址,訪問(wèn)被引用對(duì)象的代理;步驟230、讀取所述代理記錄的對(duì)象地址;步驟240、引用對(duì)象根據(jù)所述對(duì)象地址引用所述被引用對(duì)象。
2.如權(quán)利要求1所述的基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,其中,所述步驟210前還包括步驟引用對(duì)象判斷被引用對(duì)象的代理地址是否存在,存在則執(zhí)行步驟210,不存在則執(zhí)行下述步驟步驟110、引用對(duì)象向處理程序詢問(wèn)被引用對(duì)象的代理地址;步驟120、處理程序通過(guò)搜索代理存儲(chǔ)區(qū)獲得所述代理的代理地址;步驟130、處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,執(zhí)行步驟210。
3.如權(quán)利要求2所述的基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,其中,所述步驟120具體為步驟121、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索被引用對(duì)象的代理,搜索到時(shí)執(zhí)行步驟122,沒(méi)有搜索到時(shí)執(zhí)行步驟123;步驟122、處理程序獲得所述代理的代理地址,執(zhí)行步驟130;步驟123、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,獲得被引用對(duì)象的對(duì)象地址;步驟124、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)生成一代理;步驟125、處理程序?qū)⑺鰧?duì)象地址寫入所述代理;步驟126、所述代理向處理程序注冊(cè)其代理地址,處理程序獲得所述代理的代理地址,執(zhí)行步驟130。
4.如權(quán)利要求3所述的基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,其中,所述步驟123具體為步驟1231、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,搜索到時(shí)執(zhí)行步驟1232,沒(méi)有搜索到時(shí)執(zhí)行步驟1233;步驟1232、獲得被引用對(duì)象的對(duì)象地址,執(zhí)行步驟124;步驟1233、處理程序?qū)⒈灰脤?duì)象存儲(chǔ)到對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū);步驟1234、處理程序記錄被引用對(duì)象的對(duì)象地址,執(zhí)行步驟124。
5.如權(quán)利要求1所述的基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,其中,還包括調(diào)整對(duì)象地址的步驟,當(dāng)對(duì)象地址改變時(shí),處理程序執(zhí)行如下步驟步驟310、處理程序記錄所述對(duì)象新地址;步驟320、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索所述對(duì)象的代理,搜索到時(shí)執(zhí)行步驟330,沒(méi)有搜索到時(shí)執(zhí)行步驟350;步驟330、處理程序訪問(wèn)所述對(duì)象的代理;步驟340、處理程序?qū)⑺鰧?duì)象新地址寫入所述代理;步驟350、地址調(diào)整結(jié)束。
6.如權(quán)利要求1所述的基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,其中,還包括引用對(duì)象的存儲(chǔ)步驟,處理程序存儲(chǔ)引用對(duì)象時(shí)執(zhí)行如下步驟步驟410、處理程序?qū)⑺鲆脤?duì)象存儲(chǔ)在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū);步驟420、所述引用對(duì)象向處理程序注冊(cè)其引用關(guān)系,向處理程序詢問(wèn)被引用對(duì)象的代理地址;步驟430、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)搜索被引用對(duì)象的代理,搜索到時(shí)執(zhí)行步驟440,沒(méi)有搜索到時(shí)執(zhí)行步驟450;步驟440、處理程序獲得所述代理的代理地址,處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,存儲(chǔ)結(jié)束;步驟450、處理程序在對(duì)象存儲(chǔ)庫(kù)的對(duì)象存儲(chǔ)區(qū)搜索被引用對(duì)象,獲得被引用對(duì)象的對(duì)象地址;步驟460、處理程序在對(duì)象存儲(chǔ)庫(kù)的代理存儲(chǔ)區(qū)生成一代理;步驟470、處理程序?qū)⑺鰧?duì)象地址寫入所述代理;步驟480、所述代理向處理程序注冊(cè)其代理地址,處理程序獲得所述代理的代理地址;步驟490、處理程序?qū)⑺龃淼刂钒l(fā)給引用對(duì)象,引用對(duì)象記錄所述代理地址,存儲(chǔ)結(jié)束。
全文摘要
本發(fā)明涉及一種基于對(duì)象存儲(chǔ)庫(kù)的對(duì)象引用方法,包括步驟引用對(duì)象根據(jù)被引用對(duì)象,獲得所述被引用對(duì)象的代理地址;根據(jù)所述代理地址,訪問(wèn)被引用對(duì)象的代理;讀取所述代理記錄的對(duì)象地址;引用對(duì)象根據(jù)所述對(duì)象地址引用所述被引用對(duì)象。本發(fā)明建立了一種新型的對(duì)象引用機(jī)制,所有對(duì)象之間通過(guò)代理間接引用,變對(duì)象之間復(fù)雜的網(wǎng)狀引用關(guān)系為一對(duì)一的引用關(guān)系。本發(fā)明同時(shí)建立了一種新型的對(duì)象地址調(diào)整機(jī)制,當(dāng)對(duì)象地址發(fā)生變化時(shí),處理程序不再需要去掃描所有對(duì)象,只需要掃描范圍很小的代理存儲(chǔ)區(qū),同時(shí)也不需要逐一通知引用對(duì)象來(lái)調(diào)整引用地址,因此本發(fā)明能減小因地址調(diào)整帶來(lái)的額外處理過(guò)程,提高程序運(yùn)行速度和對(duì)象存儲(chǔ)庫(kù)處理性能。
文檔編號(hào)G06F17/30GK1808434SQ20061000303
公開(kāi)日2006年7月26日 申請(qǐng)日期2006年1月26日 優(yōu)先權(quán)日2006年1月26日
發(fā)明者黃芳, 冷曄 申請(qǐng)人:無(wú)錫永中科技有限公司