專利名稱:具有面向?qū)ο蟪绦虻拇鎯橘|(zhì)的制作方法
技術領域:
本發(fā)明涉及具有面向?qū)ο蟪绦虻拇鎯橘|(zhì),該面向?qū)ο蟪绦虬ň哂杏脕泶鎯蛇x數(shù)據(jù)的對象項目和通過對象項目處理數(shù)據(jù)的多個函數(shù)的對象,特別是涉及具有通過從一個類動態(tài)創(chuàng)建各種對象從而減少類設計和程序開發(fā)的時間和成本的面向?qū)ο蟪绦虻拇鎯橘|(zhì)。
背景技術:
常規(guī)的面向過程的程序包括數(shù)據(jù)結(jié)構(gòu)和改變數(shù)據(jù)的算法。因為常規(guī)的面向過程的程序不能很好地表達數(shù)據(jù)和函數(shù)之間的關系,所以算法的變更限制了修補和維護,和源代碼的重用。
這樣,為了產(chǎn)生一個能夠易于實現(xiàn)修補、維護和代碼重用的程序,出現(xiàn)了面向?qū)ο蟮某绦?,它通過使具有其典型數(shù)據(jù)和方法,即,利用數(shù)據(jù)執(zhí)行操作的函數(shù)的對象通過消息彼此通信而獲得理想的結(jié)果。
這里,對象表示具有與特定數(shù)據(jù)關聯(lián)的函數(shù)的程序模塊,作為為有效的數(shù)據(jù)管理而分類的概念上的單元。數(shù)據(jù)用來存儲對象的屬性,函數(shù)定義對象可以執(zhí)行的功能。每個對象必須至少有一個項目。在象C++、Java、Python這類面向?qū)ο蟮某绦蛘Z言中,從向?qū)ο筇峁┛蚣艿膶ο箢悇?chuàng)建對象,以使對象能夠包括和執(zhí)行公共特征和動作。
這里,每個對象通常使數(shù)據(jù)存儲在有預定類型和編號的項目中。這樣,如果項目的類型或編號彼此不同,那么針對這些對象分別定義這些類。
因此,這里需要一種方法通過從一個類創(chuàng)建各種對象以面向?qū)ο缶幊陶Z言為目標來實現(xiàn)修補、維護、和代碼重用。
對象串行化被定義為流動對象用于通過文件或網(wǎng)絡以字節(jié)流傳遞對象內(nèi)容的流對象。另外,下面將串行數(shù)據(jù)恢復為原始對象的過程定義為去串行化。對象串行化的優(yōu)點在于,由于對象內(nèi)容可以存儲在獨立于輸入/輸出類型的文件中,并且使對象通過網(wǎng)絡易于交流,因此提供了持續(xù)性。
C++在對象類中提供了用于執(zhí)行串行/去串行的串行方法以,并且允許對象被串行。這樣,對于對象串行化會有這樣的問題,即對于對象串行化必須伴隨著超越有關每個類的串行化方法和定制適合于每個類的特征超越串行化方法的過程。
發(fā)明內(nèi)容
因此,本發(fā)明的一個方面是提供一種具有面向?qū)ο蟪绦虻拇鎯橘|(zhì),能夠通過提供項目類型和數(shù)量不受限制的一個類來創(chuàng)建各種對象來減少類設計和程序所需的開發(fā)時間和成本。
本發(fā)明的其它方面和/或優(yōu)點中的一部分將在下面的說明書中描述,一部分從說明書中,或通過實施本發(fā)明是顯而易見的。
通過提供具有面向?qū)ο蟪绦虻拇鎯橘|(zhì)實現(xiàn)本發(fā)明前述和/或其它方面,面向?qū)ο蟪绦虬ň哂写鎯蛇x數(shù)據(jù)的對象項目和多個通過對象項目處理數(shù)據(jù)的函數(shù)的對象,該具有面向?qū)ο蟪绦虻拇鎯橘|(zhì)包括主類,該主類包括有選擇地存儲對象項目的項目名稱的項目鑒別符的主類,有選擇地存儲要在對象項目中存儲的數(shù)據(jù)的項目類型的項目類型信息,和指向存儲有數(shù)據(jù)的存儲器地址的地址信息,以及函數(shù),包括接收項目鑒別符、項目類型和數(shù)據(jù)值,并允許對象項目存儲數(shù)據(jù)的數(shù)據(jù)存儲函數(shù)。
在一個方面中,項目鑒別符包括字符串。
在一個方面中,項目類型信息表示為字符串,并包括主類,以使對應的對象項目可指向存儲至少一個數(shù)據(jù)的另一個對象項目。
在一個方面中,地址信息包括存儲一個或更多數(shù)據(jù)的指針列表。
在一個方面中,從數(shù)據(jù)存儲函數(shù)輸入的項目鑒別符包括預定的數(shù)據(jù)結(jié)構(gòu)的位置信息,通過使對象中的對象項目指向另一個對象項目而形成的對象之間的關系,以及數(shù)據(jù)存儲函數(shù)在與位置信息對應的位置的對象項目中存儲數(shù)據(jù)。
在一個方面中,數(shù)據(jù)結(jié)構(gòu)的層數(shù)隨著鏈接越來越多的對象項目而增加,數(shù)據(jù)結(jié)構(gòu)的位置信息包括分級鏈接到要存儲數(shù)據(jù)的對象項目的上層中提供的其它對象項目的項目鑒別符,和用來分隔對象項目的項目鑒別符的分隔符。
在一個方面中,如果在與數(shù)據(jù)結(jié)構(gòu)中的位置信息對應的位置存在對象項目,那么數(shù)據(jù)存儲函數(shù)將項目類型設置為諸如整型數(shù)組或字符串數(shù)組之類的數(shù)組項目類型,并且還在對象項目中存儲數(shù)據(jù)。
在一個方面中,如果在數(shù)據(jù)結(jié)構(gòu)中不存在位置信息中位于每一層的對象項目,那么數(shù)據(jù)存儲函數(shù)創(chuàng)建具有每層不存在的對象項目的名稱的對象作為項目鑒別符,并且創(chuàng)建主類作為項目類型。
在一個方面中,主類還包括將對象中的數(shù)據(jù)轉(zhuǎn)換為字符串的字符串轉(zhuǎn)換函數(shù),該字符串轉(zhuǎn)換函數(shù)將對象項目轉(zhuǎn)換為包括項目鑒別符,項目類型,數(shù)據(jù)的個數(shù),和數(shù)據(jù)內(nèi)容的字符串。
在一個方面中,當字符串轉(zhuǎn)換函數(shù)確認對象項目的項目類型為主類時,按照數(shù)據(jù)的個數(shù)遞歸地執(zhí)行字符串轉(zhuǎn)換函數(shù)。
在一個方面中,轉(zhuǎn)換后的字符串還包括對應各自對象項目的轉(zhuǎn)換后的字符串之間的對象項目分隔器。
在一個方面中,主類還包括用來將在對象中具有數(shù)據(jù)的字符串恢復為原始對象的對象恢復函數(shù),并且對象恢復函數(shù)通過把數(shù)據(jù)存儲函數(shù)施加到從轉(zhuǎn)換后的字符串分隔的每個對象項目的信息來恢復字符串。
在一個方面中,根據(jù)從轉(zhuǎn)換后的字符串分隔的各自對象項目的信息中的數(shù)據(jù)個數(shù)向?qū)ο蠡謴秃瘮?shù)分派存儲器,并且對象恢復函數(shù)在存儲器中按順序存儲數(shù)據(jù)。
通過結(jié)合附圖描述下面的實施例,本發(fā)明的這些和/或其它方面和/或優(yōu)點將變得更加明顯和容易理解。
圖1是根據(jù)本發(fā)明實施例的主類的方框圖;圖2是解釋根據(jù)本發(fā)明實施例的包含位置信息的項目鑒別符的示意圖;圖3A和3B是解釋數(shù)據(jù)結(jié)構(gòu)的實例的示意圖,其中本發(fā)明的數(shù)據(jù)存儲函數(shù)用于形成數(shù)據(jù)結(jié)構(gòu);圖4是解釋根據(jù)本發(fā)明實施例的數(shù)據(jù)存儲函數(shù)的操作的流程圖;圖5是解釋根據(jù)本發(fā)明實施例的數(shù)據(jù)檢索函數(shù)的操作的流程圖;和圖6是解釋根據(jù)本發(fā)明實施例的字符串轉(zhuǎn)換函數(shù)的操作的流程圖。
具體實施例方式
下面將對本發(fā)明的實施例做詳細描述,結(jié)合
其實例,其中相同的參考標號始終表示相同的元素。下面為了解釋本發(fā)明將參考附圖來描述實施例。
圖1是根據(jù)本發(fā)明實施例的主類的方框圖。如圖1所示,根據(jù)本發(fā)明的主類具有包括消息名稱(項目鑒別符),項目類型(項目類型信息),和存儲器地址(地址信息)的屬性。
消息名稱可以表示為項目類型的字符串型,并指示能夠存儲對象項目的項目名稱的項目鑒別符。
項目類型可以表示為項目類型的字符串型,并指示被稱為項目名稱的數(shù)據(jù)的項目類型信息。
這里,項目類型可以包括本發(fā)明中定義的主類類型,就是說,消息對象類的項目類型,即,已有的項目類型,如整型、實型、字符串、整型數(shù)組、實型數(shù)組和字符串數(shù)組等。
在已有的類配置中,因為對象項目和與對象項目對應的項目類型是預先在類設計中確定的并且沒有改變,所以如果用戶想利用對象里的函數(shù)存取各自對象項目中存儲的數(shù)據(jù),那么具有與對象項目對應的項目類型的參數(shù)必須在函數(shù)中用作中介。
但是,因為根據(jù)本發(fā)明的消息對象類接收項目鑒別符和指示對象項目作為函數(shù)的參數(shù)的項目類型,所以不預先確定對象項目的項目類型,而是當在對應的對象項目中存儲數(shù)據(jù)時動態(tài)地確定。
地址信息包括指示一個或多個具有相同項目類型并且指示為項目鑒別符的數(shù)據(jù)的指針列表。這樣,對象項目能夠包括單個項目類型或數(shù)組項目類型,并且對象項目的大小不受所鏈接的表結(jié)構(gòu)的限制。
鏈接表是存儲能夠易于用C語言實現(xiàn)的方法的有用數(shù)據(jù),其中由數(shù)據(jù)中包括的信息以指針類型定義數(shù)據(jù)鏈接。這里,指針通過提供鏈接數(shù)據(jù)的地址信息來提供數(shù)據(jù)連接方法。
由于地址信息只包括指針的列表,因此地址信息不受要指示的項目類型的限制。
另外,用主類類型作為類中的對象項目的項目類型,以使對象項目可指示存儲至少一個數(shù)據(jù)值的其它對象項目,并且能夠利用鏈接到對象項目的至少一個主類對象來構(gòu)造子表。
通過上述過程,從主類創(chuàng)建的一個對象可以具有帶有與對象有關的復雜樹結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),其中對象中的對象項目指向其它對象項目,并且因此形成關系。
這里,選擇要位于第一層的項目類型作為主類項目類型,以使主類對象可以有不同種類的對象項目。這樣,從主類對象創(chuàng)建的一個對象的第一層中的項目鑒別符可以不用于指示第一層的項目名稱,而是指示所創(chuàng)建的對象本身的名稱。
這里,作為預定的數(shù)據(jù)結(jié)構(gòu),層包括根據(jù)該關系的對象的位置信息,是指通過使對象中的對象項目指向另一個對象項目形成的對象間的關系。
即,根據(jù)本發(fā)明,彼此鏈接的對象項目分別在彼此不同的層中。這樣,層的數(shù)量隨著關系的數(shù)量而增加。
例如,假設在層0有一個創(chuàng)建的對象,則可以建立鏈接到所創(chuàng)建對象的對象項目在層1中,鏈接到第1層中的對象項目的對象項目在層2中,等等。
圖2是解釋根據(jù)本發(fā)明實施例的包含位置信息的項目鑒別符的示意圖。
如圖2所示,利用分隔符創(chuàng)建數(shù)據(jù)的位置信息,以便能夠易于創(chuàng)建和檢索數(shù)據(jù)。
如上所述,層0的消息名稱對應于指向消息對象本身的項目鑒別符。
另外,層1的消息名稱對應于由層0的地址信息指向的消息對象的項目鑒別符。類似地,層2的消息名稱對應于由層1的地址信息指向的消息對象的項目鑒別符。
另外,由分隔符分隔各個層的消息名稱,項目鑒別符。在根據(jù)本發(fā)明的實施例中,用“.”作為分隔符,但是象“/”、“@”等不用作消息名稱的字符也可以用作分隔符。
這里,指向下一層的層的項目類型最好是主類類型,從而使由各層指向的數(shù)據(jù)能夠按層次彼此鏈接。
圖3A是解釋數(shù)據(jù)結(jié)構(gòu)的實例的示意圖,其中本發(fā)明的數(shù)據(jù)存儲函數(shù)用來形成數(shù)據(jù)結(jié)構(gòu)。
如圖3A所示,層0具有“消息實例”,該消息示例指示由根據(jù)本發(fā)明實施例的面向?qū)ο蟪绦騽?chuàng)建的對象本身的項目鑒別符;作為后面的層1中存儲的消息對象項目類型的“示例1”和“示例2”;以及與作為分別指向“示例1”和“示例2”的地址信息的指針存儲在一起的消息對象。
層1具有與項目鑒別符存儲在一起的消息對象,“示例1”;作為是數(shù)據(jù)的“示例字符串1”和“示例字符串2”的項目類型的字符串類型;和作為分別指向“示例字符串1”和“示例字符串2”的地址信息的指針。
另外,層1還具有與項目鑒別符存儲在一起的消息對象,“示例2”;作為存儲在后面的層2中的消息對象項目類型的“示例3”和“示例4”的項目類型;和作為分別指向“示例3”和“示例4”的地址信息的指針。
層2具有與項目鑒別符存儲在一起的消息對象,“示例3”;作為是數(shù)據(jù)的“示例子串1”和“示例子串2”的項目類型的字符串類型;和作為分別指向“示例子串1”和“示例子串2”的地址信息的指針。
另外,層2具有與項目鑒別符存儲在一起的消息對象,“示例4”;作為是數(shù)據(jù)的10000和20000的項目類型的字符串類型;和作為分別指向10000和20000的地址信息的指針。
圖3B是解釋圖3A的對象項目中存儲的數(shù)據(jù)結(jié)構(gòu)的實例的示意圖。在圖3B中,箭頭表示指針,圓角框表示數(shù)據(jù)。
如圖1所示,主類具有用來存儲其屬性的對象項目,和多個用來訪問對象項目和對有關數(shù)據(jù)執(zhí)行期望操作的函數(shù)。
在根據(jù)本發(fā)明的實施例中,有選擇地使用數(shù)據(jù)存儲函數(shù),數(shù)據(jù)檢索函數(shù),字符串轉(zhuǎn)換函數(shù),和對象恢復函數(shù)。
圖4是解釋根據(jù)本發(fā)明實施例的數(shù)據(jù)存儲函數(shù)的操作的流程圖。
根據(jù)本發(fā)明的數(shù)據(jù)存儲函數(shù)具有作為參數(shù)的項目鑒別符,項目類型,和數(shù)據(jù)值。
首先,定義消息對象類(S1)。
就是說,所定義的是一個主類,該主類包括有選擇地存儲對象項目的項目名稱的項目鑒別符,有選擇地存儲要存儲在對象項目中的數(shù)據(jù)的項目類型的項目類型信息,和指向存儲數(shù)據(jù)的存儲器地址的地址信息。
項目鑒別符與數(shù)據(jù)結(jié)構(gòu)中包括的,對應于要創(chuàng)建的數(shù)據(jù)的位置信息一起輸入,以便能夠在要求的位置創(chuàng)建數(shù)據(jù)(S3)。此后,將包括位置信息的項目鑒別符定義為鑒別符信息。
如上所述,數(shù)據(jù)結(jié)構(gòu)中的位置信息包括用來分隔表達數(shù)據(jù)結(jié)構(gòu)的層次的層的分隔符。
輸入的鑒別符信息允許在要求的位置創(chuàng)建數(shù)據(jù)。下面將描述在要求的位置創(chuàng)建數(shù)據(jù)的過程。
首先,在鑒別符信息中分隔出對應于當前層,例如第k層的消息名稱的信息(S5)。
確認在鑒別符信息中是否存在下一層的信息,例如對應于第k+1層的信息(S7)。根據(jù)本發(fā)明的實施例,由于用分隔符分隔每一層,如果鑒別符信息具有分隔符,則確定存在對應下一層的數(shù)據(jù)。
如果確定不存在下一層的信息,那么確認在數(shù)據(jù)結(jié)構(gòu)中是否已經(jīng)存在作為鑒別符信息中當前第k層的消息名稱的具有相同項目鑒別符的對象項目(S9)。
如果在數(shù)據(jù)結(jié)構(gòu)中不存在作為鑒別符信息中當前第k層的消息名稱的具有相同項目鑒別符的對象項目,那么創(chuàng)建具有消息名稱的消息對象(S11)。
創(chuàng)建消息對象包括為新的消息對象分配存儲用的存儲器空間,和在項目鑒別符中保存當前第k層的消息名稱,然后保存要存儲在分配的消息對象的地址信息中的數(shù)據(jù)的地址信息。
同時,如果在數(shù)據(jù)結(jié)構(gòu)中存在作為鑒別符信息中當前第k層的消息名稱的相同消息對象,那么把要保存的數(shù)據(jù)的地址信息添加到消息對象的地址信息中(S13)。
根據(jù)消息對象的項目類型添加要保存到消息對象的地址信息的數(shù)據(jù)的地址信息。
如果消息對象的項目類型不是數(shù)組型項目,那么將消息對象的項目類型轉(zhuǎn)換為數(shù)組型項目。
當確認對應于下一層,例如第k+1層的信息是否包括在鑒別符信息中時(S7),如果確定存在對應于下一層的信息,那么確認在數(shù)據(jù)結(jié)構(gòu)中是否存在作為鑒別符信息中當前第k層的消息名稱的相同消息對象(S15)。
如果在數(shù)據(jù)結(jié)構(gòu)中存在作為鑒別符信息中當前第k層的消息名稱的相同消息對象,那么在移動到下一層k+1后,從S5遞歸地執(zhí)行這些過程(S17)。
同時,如果在數(shù)據(jù)結(jié)構(gòu)中不存在作為鑒別符信息中當前第k層的消息名稱的相同消息對象,那么將鑒別符信息中具有當前第k層的消息名稱的消息對象作為項目鑒別符登記。
這里,登記消息對象包括分配具有鑒別符信息的當前第k層的消息名稱的消息對象作為項目鑒別符。
在登記完消息對象后,過程移動到下一層k+1(S17),并且從操作S5遞歸地執(zhí)行。
在數(shù)據(jù)結(jié)構(gòu)的要求位置創(chuàng)建數(shù)據(jù)的數(shù)據(jù)存儲函數(shù)和在數(shù)據(jù)結(jié)構(gòu)的要求位置讀取數(shù)據(jù)的數(shù)據(jù)檢索函數(shù)與數(shù)據(jù)訪問處理類似。當兩個函數(shù)利用每個消息對象的地址信息訪問要求的位置后,情況與在創(chuàng)建情況下數(shù)據(jù)存儲在要求位置,和檢索情況下從要求位置讀取數(shù)據(jù)的有所不同。
在用上述方法形成的數(shù)據(jù)結(jié)構(gòu)中,將參考圖5描述用于檢索數(shù)據(jù)值的過程。
根據(jù)本發(fā)明的數(shù)據(jù)檢索函數(shù)具有與要作為參數(shù)讀取的數(shù)據(jù)值對應的項目鑒別符。
所輸入的鑒別符包括要檢索的數(shù)據(jù)在數(shù)據(jù)結(jié)構(gòu)中的位置信息(S21)。
分隔對應于鑒別符信息中當前層,例如第k層的消息名稱的信息(S23)。
確認在鑒別符信息中是否存在對應下一層,例如第k+1層的信息(S25)。根據(jù)本發(fā)明的實施例,因為由分隔符分隔每一層,如果鑒別符信息有分隔符,則確定存在對應于下一層的數(shù)據(jù)。
如果確定不存在下一層的信息,那么確認數(shù)據(jù)結(jié)構(gòu)中是否存在作為鑒別符信息中當前第k層的消息名稱的具有相同項目鑒別符的對象項目(S27)。
如果數(shù)據(jù)結(jié)構(gòu)中不存在具有在鑒別符信息中作為當前層k的消息名稱的相同項目鑒別符的對象項目,那么確定數(shù)據(jù)檢索失敗(S29)。
如果數(shù)據(jù)結(jié)構(gòu)中存在具有在鑒別符信息中作為當前層k的消息名稱的相同項目鑒別符的對象項目,那么使用消息對象的地址信息,并且讀取消息對象的數(shù)據(jù)(S31)。
當確認鑒別符信息中是否包括對應于下一層,例如第k+1層的信息時(S25),如果確定存在對應于下一層的信息,那么確認在數(shù)據(jù)結(jié)構(gòu)中是否存在作為鑒別符信息中當前第k層的消息名稱的相同消息對象(S33)。
如果在數(shù)據(jù)結(jié)構(gòu)中存在作為鑒別符信息中當前第k層的消息名稱的相同消息對象,那么在移動到下一層K+1后,從S23遞歸地執(zhí)行這些過程(S35)。
如果在數(shù)據(jù)結(jié)構(gòu)中不存在具有作為鑒別符信息中當前第k層的消息名稱的相同項目鑒別符的消息對象,那么確定數(shù)據(jù)檢索失敗(S29)。
下面將參考圖6描述將具有由上述方法創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)的消息對象的數(shù)據(jù)轉(zhuǎn)換成字符串的函數(shù)。
轉(zhuǎn)換存儲在一個對象中的所有對象項目中的數(shù)據(jù),即,將分層鏈接到數(shù)據(jù)結(jié)構(gòu)中項層消息對象的數(shù)據(jù)轉(zhuǎn)換為字符串,以及將轉(zhuǎn)換后的字符串恢復成分層數(shù)據(jù)結(jié)構(gòu)對數(shù)據(jù)傳遞非常有用。
根據(jù)本發(fā)明的字符串轉(zhuǎn)換函數(shù)具有鑒別符、被作為其參數(shù)的要被轉(zhuǎn)換為字符串的消息對象的名稱。
首先,選擇要轉(zhuǎn)換成字符串的消息對象(S41)。
然后,從按照各層順序選出的消息對象的鑒別符提取對應于當前層的項目鑒別符,并且讀取數(shù)據(jù)的項目類型、數(shù)據(jù)個數(shù)、數(shù)據(jù)內(nèi)容、和消息對象的消息名稱(S43)??梢詮膶男畔⒅刑崛∠⒚Q、數(shù)據(jù)的項目類型和數(shù)據(jù)內(nèi)容,數(shù)據(jù)個數(shù)可以通過檢查地址信息的數(shù)量來讀取??梢栽谧x取對應于該數(shù)據(jù)的地址信息時,順序讀取數(shù)據(jù)的內(nèi)容。
使用提取的信息,然后寫對應的消息對象的消息名稱,并且將數(shù)據(jù)的項目類型、數(shù)據(jù)個數(shù)和數(shù)據(jù)內(nèi)容轉(zhuǎn)換成字符串,然后將轉(zhuǎn)換后的字符串添加到已存在的字符串中(S45)。
添加分隔符以便在向已有的字符串中添加轉(zhuǎn)換后的字符串之前允許分隔該消息對象。
執(zhí)行操作S43和S45,使得數(shù)據(jù)結(jié)構(gòu)中存儲的數(shù)據(jù)包括恢復為原始數(shù)據(jù)所需的信息。
如果對應的消息對象的項目類型是消息對象,那么操作最好按數(shù)據(jù)的個數(shù)遞歸地執(zhí)行,下面將要描述。
確認對應的消息對象的項目類型是否是消息對象(S47)。如果確定對應的消息對象的項目類型是消息對象,那么按照消息對象指向的數(shù)據(jù)個數(shù)順序?qū)Υ鎯Φ臄?shù)據(jù)遞歸地執(zhí)行操作S43和S45。
確認消息對象指向的數(shù)據(jù)個數(shù)是否為1(S51)。如果消息對象指向的數(shù)據(jù)個數(shù)為1,執(zhí)行向由對應的消息對象指向的下一個消息對象的移動(S53)。如果消息對象指向的數(shù)據(jù)值的個數(shù)大于1,那么在棧中存儲其余的地址信息(S55),執(zhí)行向由第一個地址信息指向的消息對象的移動(S53)。
這里,棧是允許最后存儲的信息最先被處理的信息存儲方法。如果在當前消息對象的項目類型是消息對象,并且當前消息對象具有多個地址信息時,那么遞歸地執(zhí)行操作S43后的操作。
就是說,因為操作S43到S47顯示了將一個對象轉(zhuǎn)換為字符串的過程,所以如果仍存在要轉(zhuǎn)換為字符串的數(shù)據(jù)(S49),那么遞歸地執(zhí)行操作S43后的操作。
執(zhí)行操作S41到S55,將對象中的數(shù)據(jù)信息轉(zhuǎn)換為字符串。
當操作兩個或更多不同的程序時,將對象中的數(shù)據(jù)轉(zhuǎn)換為字符串可以將數(shù)據(jù)發(fā)送到其它程序。
接收轉(zhuǎn)換為字符串的數(shù)據(jù)的程序可以利用上述對象中的數(shù)據(jù)存儲方法將轉(zhuǎn)換后的字符串恢復為具有原始數(shù)據(jù)結(jié)構(gòu)的對象。通過對從轉(zhuǎn)換后的字符串分隔的各個對象項目的信息應用數(shù)據(jù)存儲函數(shù),對具有原始數(shù)據(jù)結(jié)構(gòu)的對象的數(shù)據(jù)恢復函數(shù)可以恢復轉(zhuǎn)換后的字符串。
就是說,根據(jù)從轉(zhuǎn)換后的字符串分隔的每個對象項目的信息中的數(shù)據(jù)個數(shù)和存儲器一起分配對象恢復函數(shù),并且對象存儲函數(shù)在存儲器中按順序存儲數(shù)據(jù)。
根據(jù)本發(fā)明從由字符串轉(zhuǎn)換函數(shù)轉(zhuǎn)換的字符串分隔的一個對象項目的信息包括對應的對象項目的項目類型、數(shù)據(jù)個數(shù)、數(shù)據(jù)內(nèi)容、和項目鑒別符。
就是說,完成對一個對象項目的恢復如下在消息名稱中存儲項目鑒別符;在項目類型信息中存儲項目類型。讀取數(shù)據(jù)個數(shù),并且分配用來存儲數(shù)據(jù)的空間;在分配的存儲空間中順序存儲數(shù)據(jù)內(nèi)容;在地址信息中存儲對應于存儲空間的存儲器地址。
如上所述,重復每個對象項目的恢復過程,從而使要恢復的一個對象成為具有原始數(shù)據(jù)結(jié)構(gòu)的對象。
利用上述配置,因為提供項目類型和數(shù)量不受限制的新類來創(chuàng)建各種類型的對象,所以減少了類設計和程序開發(fā)的時間和成本。
如上所述,根據(jù)本發(fā)明,提供創(chuàng)建任何類型對象的主類,從而通過改變要實現(xiàn)的內(nèi)容而不用改變程序接口環(huán)境就可以容易地添加,更改,或刪除函數(shù)。
另外,即使當操作兩個或更多彼此關聯(lián)的不同程序時,內(nèi)部配置的消息對象轉(zhuǎn)換為字符串,然后轉(zhuǎn)換后的字符串互相傳送并且恢復到原始的消息對象,從而可以提供所有程序的標準接口。
這樣,減少了類設計和程序開發(fā)的時間和成本。
系統(tǒng)中包括的硬件可以包括存儲器,處理器,和/或特定用途集成電路(“ASIC”)。這種存儲器可以包括用來存儲體現(xiàn)這里描述的任何一種、或全部方法論的一套指令(即,軟件)的機器可讀介質(zhì)。軟件可以全部或至少部分駐留在該存儲器中和/或處理器和/或ASIC中。出于這種規(guī)范的目的,術語“機器可讀介質(zhì)”包括提供(即存儲和/或發(fā)送)一種機器(例如,計算機)可讀形式信息的任何機構(gòu)。例如,機器可讀介質(zhì)包括只讀存儲器(“ROM”),隨機存取存儲器(“RAM”)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存設備、電、光、聲、或其它形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)等。
雖然已經(jīng)顯示和描述了本發(fā)明的幾個實施例,應該理解,本領域技術人員在不脫離所附權利要求定義的本發(fā)明的原理和精神的范圍和其等同物的情況下,可以用各種技術對這些實施例做修改。
權利要求
1.一種形成面向?qū)ο髷?shù)據(jù)的方法,該面向?qū)ο髷?shù)據(jù)包括具有存儲可選數(shù)據(jù)的對象項目和多個通過對象項目處理數(shù)據(jù)的函數(shù)的對象,該方法包括步驟根據(jù)對象的屬性定義對象的主類;向?qū)ο笾胁迦刖哂形恢眯畔⒌捻椖胯b別符,以便有選擇地存儲對象項目的項目名稱;創(chuàng)建項目類型信息,以便有選擇地存儲要存儲在對象項目中的數(shù)據(jù)的項目類型;記錄指向與數(shù)據(jù)一起存儲的存儲器地址的地址信息;和形成接收項目鑒別符,項目類型和數(shù)據(jù)值,并允許對象項目存儲數(shù)據(jù)的數(shù)據(jù)存儲流。
2.根據(jù)權利要求1所述的方法,其中項目鑒別符包括字符串。
3.根據(jù)權利要求2所述的方法,其中項目類型信息用表示為字符串,并且包括主類,以使對應的對象項目可指向存儲至少一個數(shù)據(jù)的另一個對象項目。
4.根據(jù)權利要求3所述的方法,其中地址信息包括存儲一個或更多數(shù)據(jù)的指針列表。
5.根據(jù)權利要求4所述的方法,其中從數(shù)據(jù)存儲函數(shù)輸入的項目鑒別符包括預定數(shù)據(jù)結(jié)構(gòu)的位置信息,通過使對象中的對象項目指向另一個對象項目而形成的對象之間的關系,和其中數(shù)據(jù)存儲函數(shù)在與位置信息對應的位置的對象項目中存儲數(shù)據(jù)。
6.根據(jù)權利要求5所述的方法,其中數(shù)據(jù)結(jié)構(gòu)的層數(shù)隨著對象項目的鏈接增加而增加,和其中數(shù)據(jù)結(jié)構(gòu)的位置信息包括分級鏈接到要存儲數(shù)據(jù)的對象項目的上層中提供的其它對象項目的項目鑒別符,和用來分隔對象項目的項目鑒別符的分隔符。
7.根據(jù)權利要求6所述的方法,其中如果在數(shù)據(jù)結(jié)構(gòu)中對應于位置信息的位置存在對象項目,數(shù)據(jù)存儲函數(shù)則將項目類型建立為數(shù)組項目類型,并且還在對象項目中存儲數(shù)據(jù)。
8.根據(jù)權利要求7所述的方法,其中如果在數(shù)據(jù)結(jié)構(gòu)中不存在位置信息中位于每一層的對象項目,數(shù)據(jù)存儲函數(shù)則創(chuàng)建具有每層不存在的對象項目的名稱的對象作為項目鑒別符,主類作為項目類型。
9.根據(jù)權利要求4所述的方法,其中主類還包括將對象中的數(shù)據(jù)轉(zhuǎn)換為字符串的字符串轉(zhuǎn)換函數(shù),該字符串轉(zhuǎn)換函數(shù)將對象項目轉(zhuǎn)換為包括項目識別器、項目類型、數(shù)據(jù)個數(shù)、和數(shù)據(jù)內(nèi)容的字符串。
10.根據(jù)權利要求6所述的方法,其中主類還包括將對象中的數(shù)據(jù)轉(zhuǎn)換為字符串的字符串轉(zhuǎn)換函數(shù),字符串轉(zhuǎn)換函數(shù)將對象項目轉(zhuǎn)換為包括項目識別器、項目類型、數(shù)據(jù)個數(shù)、和數(shù)據(jù)內(nèi)容的字符串。
11.根據(jù)權利要求9所述的方法,其中當字符串轉(zhuǎn)換函數(shù)確認對象項目的項目類型為主類時按照數(shù)據(jù)的個數(shù)遞歸地執(zhí)行字符串轉(zhuǎn)換函數(shù)。
12.根據(jù)權利要求10所述的方法,其中當字符串轉(zhuǎn)換函數(shù)確認對象項目的項目類型為主類時按照數(shù)據(jù)的個數(shù)遞歸地執(zhí)行字符串轉(zhuǎn)換函數(shù)。
13.根據(jù)權利要求9所述的方法,其中轉(zhuǎn)換后的字符串還包括對應于各個對象項目的轉(zhuǎn)換后的字符串之間的對象項目分隔符。
14.根據(jù)權利要求10所述的方法,其中轉(zhuǎn)換后的字符串還包括對應于各個對象項目的轉(zhuǎn)換后的字符串之間的對象項目分隔符。
15.根據(jù)權利要求9所述的方法,其中主類還包括將在對象中具有數(shù)據(jù)的字符串恢復為原始對象的對象恢復函數(shù),并且對象恢復函數(shù)通過把數(shù)據(jù)存儲函數(shù)實施到從轉(zhuǎn)換后的字符串分隔的每個對象項目的信息來恢復字符串。
16.根據(jù)權利要求10所述的方法,其中主類還包括用來將在對象中具有數(shù)據(jù)的字符串恢復為原始對象的對象恢復函數(shù),并且對象恢復函數(shù)通過對從轉(zhuǎn)換后的字符串分隔的每個對象項目的信息施加數(shù)據(jù)存儲函數(shù)來恢復字符串。
17.根據(jù)權利要求15所述的方法,其中根據(jù)從轉(zhuǎn)換后的字符串分隔的各個對象項目的信息中的數(shù)據(jù)個數(shù)向?qū)ο蠡謴秃瘮?shù)分配存儲器,并且對象恢復函數(shù)在存儲器中按順序存儲數(shù)據(jù)。
18.根據(jù)權利要求16所述的方法,其中根據(jù)從轉(zhuǎn)換后的字符串分隔的各個對象項目的信息中的數(shù)據(jù)個數(shù)向?qū)ο蠡謴秃瘮?shù)分配存儲器,并且對象恢復函數(shù)在存儲器中按順序存儲數(shù)據(jù)。
19.根據(jù)權利要求7所述的方法,其中數(shù)組項目類型是整型數(shù)組或字符串數(shù)組。
20.根據(jù)權利要求17所述的方法,其中項目鑒別符存儲在消息名稱中,其中項目類型存儲在項目類型信息中,以及其中讀取數(shù)據(jù)的個數(shù)和分配存儲數(shù)據(jù)的空間。
21.根據(jù)權利要求18所述的方法,其中項目鑒別符存儲在消息名稱中,其中項目類型存儲在項目類型信息中,以及其中讀取數(shù)據(jù)的個數(shù)和分配存儲數(shù)據(jù)的空間。
22.一種存儲面向?qū)ο髷?shù)據(jù)的方法,該面向?qū)ο髷?shù)據(jù)包括具有存儲可選數(shù)據(jù)的對象項目和多個通過對象項目處理數(shù)據(jù)的函數(shù)的對象,該方法包括步驟根據(jù)對象的屬性定義消息對象的類;輸入具有位置信息項目鑒別符;分隔當前層的鑒別符;確定包括位置信息的鑒別符中是否存在下一層的信息;和如果不存在下一層的信息而已經(jīng)存在當前層的鑒別符,則向與當前層的鑒別符對應的消息對象添加數(shù)據(jù)。
23.根據(jù)權利要求22所述的方法,其中還包括如果不存在下一層的信息并且也不存在當前層的鑒別符,則創(chuàng)建作為當前層的鑒別符的數(shù)據(jù)的步驟。
24.根據(jù)權利要求22所述的方法,其中還包括如果存在下一層的信息而不存在當前層的鑒別符,則登記與當前層的鑒別符對應的消息對象。
25.一種檢索面向?qū)ο髷?shù)據(jù)的方法,該面向?qū)ο髷?shù)據(jù)包括具有存儲可選數(shù)據(jù)的對象項目和多個通過對象項目處理數(shù)據(jù)的函數(shù)的對象,該方法包括步驟根據(jù)對象的屬性定義消息對象的類;輸入具有要被檢索的數(shù)據(jù)的位置信息的鑒別符;分隔當前層的鑒別符;確定在包括位置信息的鑒別符中是否存在下一層的信息;和如果鑒別符中存在下一層的信息并且已經(jīng)存在當前層的鑒別符,則讀取當前層的數(shù)據(jù)。
26.一種轉(zhuǎn)換面向?qū)ο髷?shù)據(jù)的方法,該面向?qū)ο髷?shù)據(jù)包括具有存儲可選數(shù)據(jù)的對象項目和多個通過對象項目處理數(shù)據(jù)的函數(shù)的對象,該方法包括步驟選擇要轉(zhuǎn)換成字符串的消息對象;讀取當前消息對象的項目類型,數(shù)據(jù)個數(shù),消息名稱和數(shù)據(jù)內(nèi)容;將消息名稱,項目類型,數(shù)據(jù)個數(shù),和數(shù)據(jù)內(nèi)容轉(zhuǎn)換成一個字符串,并添加到已有的字符串;和在棧中存儲地址信息。
27.一種恢復面向?qū)ο髷?shù)據(jù)的方法,該面向?qū)ο髷?shù)據(jù)包括具有存儲可選數(shù)據(jù)的對象項目和多個通過對象項目處理數(shù)據(jù)的函數(shù)的對象,該方法包括步驟在消息名稱中存儲項目鑒別符;在項目類型信息中存儲項目類型;讀取數(shù)據(jù)個數(shù)并分配存儲數(shù)據(jù)的空間;在所分配的存儲空間中順序存儲數(shù)據(jù)的內(nèi)容;和存儲與地址信息中的存儲空間對應的存儲器地址。
全文摘要
具有面向?qū)ο蟪绦虻拇鎯橘|(zhì),主類創(chuàng)建任何類型的對象,使得通過更改要實現(xiàn)的內(nèi)容而不用更改程序接口環(huán)境就可以容易地添加、修改或刪除函數(shù)。
文檔編號G06F7/00GK1525312SQ200410005268
公開日2004年9月1日 申請日期2004年2月17日 優(yōu)先權日2003年2月18日
發(fā)明者李秀正 申請人:三星電子株式會社