1. C++綁定(c++ binding)
C++綁定通過引入具有持久和臨" />
時(shí)間:2022-11-04 12:30:01 | 來源:信息時(shí)代
時(shí)間:2022-11-04 12:30:01 來源:信息時(shí)代
ODMG語言綁定 : 說明對(duì)象定義語言/對(duì)象操作語言的結(jié)構(gòu)如何映射到編程語言結(jié)構(gòu)。ODMG目前支持與C++,Java和Smalltalk語言的綁定。
1. C++綁定(c++ binding)
C++綁定通過引入具有持久和臨時(shí)實(shí)例的類集合把對(duì)象模型映射到C++中,這些類稱為可持久化類(persistence-capable classes),包括五個(gè)部分的內(nèi)容:
(1) ODMG對(duì)象模型到C++的映射: 一個(gè)ODMG的對(duì)象類型映射為C++的一個(gè)類,對(duì)象模型的結(jié)構(gòu)概念映射為C++的構(gòu)造結(jié)構(gòu)或嵌入在某個(gè)類中的類。ODMG對(duì)象模型包含集合類型產(chǎn)生器、集合類型和集合實(shí)例,集合類型產(chǎn)生器映射為C++的模板類,集合類型映射為集合類,集合實(shí)例映射為這些集合類的實(shí)例。ODMG的數(shù)組集合映射為C++的d_Varray類,C++不直接支持關(guān)系,但通過提供維護(hù)關(guān)系的特定模板類的實(shí)例來實(shí)現(xiàn),類d_Extent〈T〉提供一個(gè)可持久化類T的范圍接口,C++不支持鍵的聲明。
(2) C++ODL: C++與ODL的綁定被表示為類庫和對(duì)標(biāo)準(zhǔn)C++類定義機(jī)制的擴(kuò)展,類庫提供在ODMG對(duì)象模型中定義概念的類和函數(shù)。C++ODL提供數(shù)據(jù)庫模式的描述,把數(shù)據(jù)庫模式描述為一個(gè)包含屬性、關(guān)系和操作的對(duì)象類的集合,其風(fēng)格與C++程序中聲明部分一致,這些類的實(shí)例可以通過C++OML操作。在C++類庫中,凡是實(shí)現(xiàn)與ODMG對(duì)象模型接口的特性都以d為前綴,如基本數(shù)據(jù)類型d_String,d_Short,集合類型d_List、d_Set、d_Bag,對(duì)應(yīng)Iterator類的d_Iterator,對(duì)應(yīng)extent類的d Extent,對(duì)應(yīng)事務(wù)的d_Trancaction以及對(duì)應(yīng)數(shù)據(jù)庫的d Database等,并且還為數(shù)據(jù)庫模式中的每一個(gè)類T定義了一個(gè)模板d_Ref(T),它涉及類T的持久對(duì)象和臨時(shí)對(duì)象。關(guān)系通過包含一個(gè)引用(一對(duì)一關(guān)系)或一個(gè)集合(一對(duì)多關(guān)系)來處理,操作說明與標(biāo)準(zhǔn)C++語言函數(shù)說明基本一致。
(3) C++OML:對(duì)象操縱語言(OML)用來說明在應(yīng)用程序中如何檢索和操作數(shù)據(jù)對(duì)象,C++OML所表達(dá)的語法和語義與標(biāo)準(zhǔn)類庫的語境中標(biāo)準(zhǔn)C++的語法和語義相同,C++OML包括對(duì)象的創(chuàng)建、刪除、修改和引用。
對(duì)于對(duì)象操縱語言,new算子被重載使其可以創(chuàng)建持久或臨時(shí)對(duì)象。為了創(chuàng)建一個(gè)持久對(duì)象,必須提供數(shù)據(jù)庫名和一個(gè)對(duì)象名。對(duì)象刪除通過調(diào)用d_Ref:delete object()成員函數(shù)進(jìn)行,對(duì)象的修改則調(diào)用函數(shù)d_object:mark_modified()進(jìn)行,對(duì)象引用是模板類d Ref<T>的實(shí)例,其他對(duì)對(duì)象特性的訪問如屬性、關(guān)系、操作等與標(biāo)準(zhǔn)C++語言基本一致。
(4) C++OQL:C++OQL把對(duì)象查詢語言的語義映射成C++語言。在C++ODL/OML程序中的對(duì)象查詢語言的查詢可以通過下列方法執(zhí)行: 一是使用類d_Collection 的成員函數(shù)query;二是使用d_OQL_Query接口。
(5)模式訪問: 描述通過一個(gè)C++類庫訪問ODMG數(shù)據(jù)庫模式的接口,模式信息是基于對(duì)象模型中描述的元數(shù)據(jù)。C++的模式定義在有些方面不同于ODL中的獨(dú)立于語言、抽象的模式說明,為使模式訪問遵循C++程序設(shè)計(jì)常規(guī),提供給C++程序員直觀的API,在API中包含C++ODL擴(kuò)展,使其是ODMG ODL的一個(gè)超集。模式訪問API被結(jié)構(gòu)化為一個(gè)面向?qū)ο蟮目蚣?只有操縱元信息的內(nèi)部函數(shù)被定義,而不是定義所有的類結(jié)構(gòu)和詳細(xì)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。ODMS實(shí)現(xiàn)可以選擇模式數(shù)據(jù)庫的實(shí)際物理表示,ODL模式列出描述模式的所有類,使用ODL關(guān)系表達(dá)這些類之間的關(guān)系。圖1是具體的C++綁定的實(shí)現(xiàn)示意圖。
圖1 C++語言綁定的實(shí)現(xiàn)
圖2 Smalltalk語言綁定的實(shí)現(xiàn)
客戶&案例
營銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。