版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十三章面向?qū)ο髷?shù)據(jù)系統(tǒng)第十三章面向?qū)ο髷?shù)據(jù)系統(tǒng)
面向?qū)ο髷?shù)據(jù)系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)(ObjectOrientedDatabaseSystem,簡(jiǎn)稱OODBS)是數(shù)據(jù)庫(kù)技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相結(jié)合的產(chǎn)物。有關(guān)OO數(shù)據(jù)模型和面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的研究在數(shù)據(jù)庫(kù)研究領(lǐng)域是沿著三條路線展開(kāi)的:一條是以關(guān)系數(shù)據(jù)庫(kù)和SQL為基礎(chǔ)的擴(kuò)展關(guān)系模型。一條是以面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言為基礎(chǔ),研究持久的程序設(shè)計(jì)語(yǔ)言,支持OO模型。一條是建立新的面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng),支持OO數(shù)據(jù)模型。面向?qū)ο髷?shù)據(jù)系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)(ObjectOrie13.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法面向?qū)ο蟪绦蛟O(shè)計(jì)方法是一種支持模塊化設(shè)計(jì)和軟件重用的實(shí)際可行的編程方法。它把程序設(shè)計(jì)的主要活動(dòng)集中在建立對(duì)象和對(duì)象之間的聯(lián)系(或通信)上,從而完成所需要的計(jì)算。一個(gè)面向?qū)ο蟮某绦蚓褪窍嗷ヂ?lián)系(或通信)的對(duì)象集合。由于現(xiàn)實(shí)世界可以抽象為對(duì)象和對(duì)象聯(lián)系的集合,所以面向?qū)ο蟮某绦蛟O(shè)計(jì)方法學(xué)是一種更接近現(xiàn)實(shí)世界的、更自然的程序設(shè)計(jì)方法學(xué)。面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想是封裝和可擴(kuò)展性。面向?qū)ο蟪绦蛟O(shè)計(jì)的可擴(kuò)展性體現(xiàn)在繼承性和行為擴(kuò)展兩個(gè)方面。由封裝和繼承還可以導(dǎo)出面向?qū)ο蟪绦蛟O(shè)計(jì)方法的其他優(yōu)良特性,如多態(tài)性、動(dòng)態(tài)聯(lián)編等。13.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法面向?qū)ο蟪绦蛟O(shè)計(jì)方法是一種支持模13.2面向?qū)ο髷?shù)據(jù)模型一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是一個(gè)持久的、可共享的對(duì)象庫(kù)的存儲(chǔ)和管理者;而一個(gè)對(duì)象庫(kù)是由一個(gè)OO模型所定義的對(duì)象的集合體。13.2.1OO模型的核心概念 一個(gè)OO模型是用面向?qū)ο笥^點(diǎn)來(lái)描述現(xiàn)實(shí)世界實(shí)體(對(duì)象)的邏輯組織、對(duì)象間限制、聯(lián)系等的模型。核心概念如下:13.2面向?qū)ο髷?shù)據(jù)模型一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是一個(gè)持久13.2面向?qū)ο髷?shù)據(jù)模型1.對(duì)象(Object)與對(duì)象標(biāo)識(shí)0ID(ObjectIDentifier) 2.封裝(Encapsulation) 3.類(lèi)(Class) 4.類(lèi)層次(結(jié)構(gòu)) 5.消息(Message)13.2面向?qū)ο髷?shù)據(jù)模型1.對(duì)象(Object13.2面向?qū)ο髷?shù)據(jù)模型13.3.2對(duì)象與對(duì)象標(biāo)識(shí)一、對(duì)象結(jié)構(gòu) 對(duì)象是由一組數(shù)據(jù)結(jié)構(gòu)和在這組數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來(lái)的基本單位。對(duì)象之間的界面由一組消息定義。一個(gè)對(duì)象包括以下幾個(gè)部分: 屬性集合:所有屬性合起來(lái)構(gòu)成了對(duì)象數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。 方法集合:方法描述了對(duì)象的行為特性。 消息集合:消息是對(duì)象向外提供的界面,消息由對(duì)象接收和響應(yīng)。13.2面向?qū)ο髷?shù)據(jù)模型13.3.2對(duì)象與對(duì)象標(biāo)識(shí)13.2面向?qū)ο髷?shù)據(jù)模型二、對(duì)象標(biāo)識(shí) 面向?qū)ο髷?shù)據(jù)庫(kù)中的每個(gè)對(duì)象都有一個(gè)唯一的不變的標(biāo)識(shí)稱為對(duì)象標(biāo)識(shí)(OID)。
1.值標(biāo)識(shí)。用值來(lái)表示標(biāo)識(shí)。
2.名標(biāo)識(shí)。用一個(gè)名字來(lái)表示標(biāo)識(shí)。
3.內(nèi)標(biāo)識(shí)。以上兩種標(biāo)識(shí)是由用戶建立的,內(nèi)標(biāo)識(shí)是建立在數(shù)據(jù)模型或程序設(shè)計(jì)語(yǔ)言中,不要求用戶給出標(biāo)識(shí)。13.2面向?qū)ο髷?shù)據(jù)模型二、對(duì)象標(biāo)識(shí)13.2面向?qū)ο髷?shù)據(jù)模型不同的標(biāo)識(shí)其持久性程度是不同的,若標(biāo)識(shí)只能在程序或查詢的執(zhí)行期間保持不變,則稱該標(biāo)識(shí)具有程序內(nèi)持久性。若標(biāo)識(shí)在從一個(gè)程序的執(zhí)行到另一個(gè)程序的執(zhí)行期間能保持不變,則稱該標(biāo)識(shí)具有程序間持久性。若標(biāo)識(shí)不僅在程序執(zhí)行過(guò)程中而且在對(duì)數(shù)據(jù)的重組重構(gòu)過(guò)程中一直保持不變,則稱該標(biāo)識(shí)具有永久持久性。13.2面向?qū)ο髷?shù)據(jù)模型不同的標(biāo)識(shí)其持久性程度是不同的,13.2面向?qū)ο髷?shù)據(jù)模型三、封裝 封裝是對(duì)象的外部界面與內(nèi)部實(shí)現(xiàn)之間實(shí)行清晰隔離的一種抽象,外部與對(duì)象的通信只能通過(guò)消息,這是OO模型的主要特征之一。封裝的意義在于將對(duì)象的實(shí)現(xiàn)與對(duì)象應(yīng)用互相隔離,從而允許對(duì)操作的實(shí)現(xiàn)算法和數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改,而不影響接口,不必修改使用它們的應(yīng)用,這有利于提高數(shù)據(jù)獨(dú)立性。對(duì)象封裝之后查詢不夠方便靈活,因此在OODB中必須在對(duì)象封裝方面作必要的修改或妥協(xié)。13.2面向?qū)ο髷?shù)據(jù)模型三、封裝13.2面向?qū)ο髷?shù)據(jù)模型13.2.3類(lèi)和類(lèi)層次一、類(lèi)的概念 在OO數(shù)據(jù)庫(kù)中相似對(duì)象的集合稱為類(lèi)??梢园杨?lèi)本身看作一個(gè)對(duì)象,稱為類(lèi)對(duì)象(ClassObject)。面向?qū)ο髷?shù)據(jù)庫(kù)模式是類(lèi)的集合。二、類(lèi)的層次結(jié)構(gòu) 在面向?qū)ο髷?shù)據(jù)庫(kù)模式中,一組類(lèi)可形成一個(gè)類(lèi)層次。一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)模式可能有多個(gè)類(lèi)層次。在一個(gè)類(lèi)層次中,一個(gè)類(lèi)繼承其所有超類(lèi)的全部屬性、方法和消息。超類(lèi)是子類(lèi)的抽象(Generalization)或普通化,子類(lèi)是超類(lèi)的特殊化(Specialization)或具體化。13.2面向?qū)ο髷?shù)據(jù)模型13.2.3類(lèi)和類(lèi)層次13.2面向?qū)ο髷?shù)據(jù)模型13.2.4繼承 在OO模型中常用的有兩種繼承,單繼承與多重繼承。若一個(gè)子類(lèi)只能繼承一個(gè)超類(lèi)的特性(包括屬性、方法和消息),這種繼承稱為單繼承:若一個(gè)子類(lèi)能繼承多個(gè)超類(lèi)的特性,這種繼承稱為多重繼承。 繼承性有兩個(gè)優(yōu)點(diǎn),第一,它是建模的有力工具,提供了對(duì)現(xiàn)實(shí)世界簡(jiǎn)明而精確的描述。第二,它提供了信息重用機(jī)制。 子類(lèi)對(duì)父類(lèi)既有繼承又有發(fā)展,繼承的部分就是重用的成分。由封裝和繼承還導(dǎo)出面向?qū)ο蟮钠渌麅?yōu)良特性,如多態(tài)性、動(dòng)態(tài)聯(lián)編等。13.2面向?qū)ο髷?shù)據(jù)模型13.2.4繼承13.2面向?qū)ο髷?shù)據(jù)模型13.2.5滯后聯(lián)編如果子類(lèi)與超類(lèi)發(fā)生同名沖突,即子類(lèi)只繼承了超類(lèi)中操作的名稱而自己實(shí)現(xiàn)操作的算法,有自己的數(shù)據(jù)結(jié)構(gòu)和程序代碼。在幾乎所有的OO數(shù)據(jù)模型中都以子類(lèi)的定義為準(zhǔn),也就是子類(lèi)的定義重載(override)其超類(lèi)中的同名定義。13.2面向?qū)ο髷?shù)據(jù)模型13.2.5滯后聯(lián)編13.2面向?qū)ο髷?shù)據(jù)模型
由于同樣的方法名在不同的類(lèi)中可能代表不同的含義,同樣一個(gè)消息送到不同對(duì)象中,可能執(zhí)行不同的過(guò)程,也就是消息的含義依賴于其執(zhí)行的環(huán)境。在這種情況下,同一方法代表不同的功能,也就是一名多用,這叫超載(overloading),消息中的方法名,在應(yīng)該程序編譯時(shí)還不能確定它所代表的過(guò)程,只有執(zhí)行時(shí),當(dāng)消息發(fā)送到具體的對(duì)象后,方法名的方法的過(guò)程才能夠結(jié)合。這種“名”與“義”的推遲結(jié)合稱為滯后聯(lián)編(latebinding)。13.2面向?qū)ο髷?shù)據(jù)模型由于同樣的方法名在13.2面向?qū)ο髷?shù)據(jù)模型13.2.6對(duì)象的嵌套 一個(gè)對(duì)象的屬性也可以是一個(gè)對(duì)象,這樣對(duì)象之間產(chǎn)生一個(gè)嵌套層次結(jié)構(gòu)。 對(duì)象嵌套概念允許不同的用戶采用不同的粒度來(lái)觀察對(duì)象。對(duì)象嵌套層次結(jié)構(gòu)和類(lèi)層次結(jié)構(gòu)形成了對(duì)象橫向和縱向的復(fù)雜結(jié)構(gòu)。不僅各種類(lèi)之間具有層次結(jié)構(gòu),而且某一個(gè)類(lèi)內(nèi)部也具有嵌套層次結(jié)構(gòu),一個(gè)類(lèi)的屬性可以是一個(gè)基本類(lèi),也可以是一個(gè)一般類(lèi)。13.2面向?qū)ο髷?shù)據(jù)模型13.2.6對(duì)象的嵌套13.3面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言O(shè)ODB語(yǔ)言用于描述面向?qū)ο髷?shù)據(jù)庫(kù)模式,說(shuō)明并操縱類(lèi)定義與對(duì)象實(shí)例。OODB語(yǔ)言主要包括對(duì)象定義語(yǔ)言(ODL)和對(duì)象操縱語(yǔ)言(OML),對(duì)象操縱語(yǔ)言中一個(gè)重要子集是對(duì)象查詢語(yǔ)言(OQL)。00DB語(yǔ)言一般應(yīng)具備下列功能:
(1)類(lèi)的定義與操縱
(2)操作/方法的定義
(3)對(duì)象的操縱13.3面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言O(shè)ODB語(yǔ)言用于描13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)
面向?qū)ο髷?shù)據(jù)庫(kù)模式是類(lèi)的集合。模式為適應(yīng)需求的變化而隨時(shí)間的變化稱為模式演進(jìn)。模式演進(jìn)包括創(chuàng)建新的類(lèi)、刪除舊的類(lèi)、修改類(lèi)的屬性和操作等。
00DB應(yīng)用環(huán)境對(duì)OODB模式演進(jìn)提出了許多新的要求,使得面向?qū)ο髷?shù)據(jù)庫(kù)模式的修改要比關(guān)系模式的修改復(fù)雜得多,其主要原因是:
(1)模式改變頻繁
(2)模式修改復(fù)雜13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)面向?qū)ο髷?shù)據(jù)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.1模式的一致性模式一致性是指模式自身內(nèi)部不能出現(xiàn)矛盾和錯(cuò)誤,它由模式一致性約束來(lái)刻畫(huà)。模式一致性約束可分為唯一性約束、存在性約束和子類(lèi)型約束等,滿足所有這些一致性約束的模式則稱為是一致的。(1)唯一性約束:這一類(lèi)約束條件要求名字的唯一性。(2)存在性約束:存在性約束是指顯式引用的某些成分必須存在。(3)子類(lèi)型約束:子類(lèi)/超類(lèi)聯(lián)系不能有環(huán)。不能有從多繼承帶來(lái)的任何沖突。如果只支持單繼承,則子類(lèi)的單一超類(lèi)必須加以標(biāo)明。13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.1模式的一致性13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.2模式演進(jìn)操作(1)類(lèi)集的改變?cè)黾右粋€(gè)新的類(lèi)刪除一個(gè)已有類(lèi)改變一個(gè)已有類(lèi)名字
13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.2模式演進(jìn)操作13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(2)已有類(lèi)的成分的改變?cè)黾有碌膶傩曰蛐碌牟僮鳎椒▌h除已有的屬性或操作改變已有用性的名字或類(lèi)型改變一操作的名稱或操作的實(shí)現(xiàn)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(2)已有類(lèi)的成分的改變13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(3)子類(lèi)儲(chǔ)類(lèi)聯(lián)系的改變?cè)黾右恍碌某?lèi)刪除一已有超類(lèi)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(3)子類(lèi)儲(chǔ)類(lèi)聯(lián)系的改變13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.3模式演進(jìn)的實(shí)現(xiàn)
采用轉(zhuǎn)換的機(jī)制來(lái)實(shí)現(xiàn)模式演進(jìn),所謂轉(zhuǎn)換方法是指在OO數(shù)據(jù)庫(kù)中,已有的對(duì)象將根據(jù)新的模式結(jié)構(gòu)進(jìn)行轉(zhuǎn)換以適應(yīng)新的模式。根據(jù)轉(zhuǎn)換發(fā)生的時(shí)間可有不同的轉(zhuǎn)換方式:立即轉(zhuǎn)換方式。一旦模式變化立即執(zhí)行所有變換;延遲轉(zhuǎn)換方式。模式變化后不立即執(zhí)行,延遲到低層數(shù)據(jù)庫(kù)載入時(shí),或者延遲到該對(duì)象被存取時(shí)才執(zhí)行變換。13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.3模式演進(jìn)的實(shí)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)前者的缺點(diǎn)在于系統(tǒng)為了執(zhí)行轉(zhuǎn)換將停頓一些時(shí)間;后者的缺點(diǎn)在于以后應(yīng)用程序存取一個(gè)對(duì)象時(shí),要把它的結(jié)構(gòu)與其所屬類(lèi)的定義比較,完成必須的修改,運(yùn)行效率將受到影響。此外,通過(guò)多模式版本方式來(lái)完成轉(zhuǎn)換也是一種有力的手段。13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)前者的缺點(diǎn)在于系統(tǒng)為了執(zhí)行13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)必須滿足兩個(gè)條件:支持一核心的面向?qū)ο髷?shù)據(jù)模型;支持傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)所有的數(shù)據(jù)庫(kù)特征。13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)必須滿足兩個(gè)13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)除了具有原來(lái)關(guān)系數(shù)據(jù)庫(kù)的各種特點(diǎn)外,還應(yīng)該提供以下特點(diǎn):(1)擴(kuò)充數(shù)據(jù)類(lèi)型(2)支持復(fù)雜對(duì)象(3)支持繼承的概念(4)提供通用的規(guī)則系統(tǒng)13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)除了具有原來(lái)關(guān)13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)
實(shí)現(xiàn)對(duì)象—關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的方法主要有以下五類(lèi):1.從頭開(kāi)發(fā)對(duì)象-關(guān)系DBMS。這種方法費(fèi)時(shí)費(fèi)力,一般不采用。2.在現(xiàn)有的關(guān)系型DBMS基礎(chǔ)上進(jìn)行擴(kuò)展。擴(kuò)展方法有兩種:(1)對(duì)關(guān)系型DBMS核心進(jìn)行擴(kuò)充,逐漸增加對(duì)象特性;13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)象—關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)(2)不修改現(xiàn)有的關(guān)系型DBMS核心,而是在現(xiàn)有關(guān)系型DBMS外面加上一個(gè)包裝層,由包裝層提供對(duì)象—關(guān)系型應(yīng)用編程接口,并負(fù)責(zé)將用戶提交的對(duì)象—關(guān)系型查詢映象成關(guān)系型查詢,送給內(nèi)層的關(guān)系型DBMS處理。這種方法系統(tǒng)效率會(huì)因包裝層的存在受到影響。3.將現(xiàn)有的關(guān)系型DBMS與其他廠商的對(duì)象—關(guān)系型DBMS連接在一起,使現(xiàn)有的關(guān)系型DBMS直接而迅速地具有了對(duì)象—關(guān)系特征。連接方法主要有兩種:13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)(2)不修改現(xiàn)有的關(guān)13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)(1)關(guān)系型DDMS使用網(wǎng)關(guān)技術(shù)與其他廠商的對(duì)象—關(guān)系型DDMS連接。但網(wǎng)關(guān)這一中介手段會(huì)使系統(tǒng)效率降低。
(2)將對(duì)象—關(guān)系型引擎與關(guān)系型存儲(chǔ)管理器結(jié)合起來(lái),即以關(guān)系型DBMS作為系統(tǒng)的最底層,具有兼容的存儲(chǔ)管理器的對(duì)象—關(guān)系型系統(tǒng)作為上層。13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)(1)關(guān)系型DDMS使13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)4.將現(xiàn)有的面向?qū)ο笮虳BMS與其他廠商的對(duì)象—關(guān)系型DBMS連接在一起,使現(xiàn)有的面向?qū)ο笮虳BMS直接而迅速地具有了對(duì)象—關(guān)系特征。連接方法是將面向?qū)ο笮虳BMS引擎與持久語(yǔ)言系統(tǒng)結(jié)合起來(lái)。5.?dāng)U充現(xiàn)有的面向?qū)ο蟮腄BMS,使之成為對(duì)象—關(guān)系型DBMS。以上五類(lèi)實(shí)現(xiàn)方法中最主要和最有效的是對(duì)現(xiàn)有的關(guān)系型DBMS核心進(jìn)行擴(kuò)展,增加對(duì)象特性,使之逐漸成為對(duì)象—關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)4.將現(xiàn)有的面向?qū)ο笮虳BMS與其人有了知識(shí),就會(huì)具備各種分析能力,明辨是非的能力。所以我們要勤懇讀書(shū),廣泛閱讀,古人說(shuō)“書(shū)中自有黃金屋。”通過(guò)閱讀科技書(shū)籍,我們能豐富知識(shí),培養(yǎng)邏輯思維能力;通過(guò)閱讀文學(xué)作品,我們能提高文學(xué)鑒賞水平,培養(yǎng)文學(xué)情趣;通過(guò)閱讀報(bào)刊,我們能增長(zhǎng)見(jiàn)識(shí),擴(kuò)大自己的知識(shí)面。有許多書(shū)籍還能培養(yǎng)我們的道德情操,給我們巨大的精神力量,鼓舞我們前進(jìn)。人有了知識(shí),就會(huì)具備各種分析能力,第13章面向?qū)ο髷?shù)據(jù)系統(tǒng)講義課件第十三章面向?qū)ο髷?shù)據(jù)系統(tǒng)第十三章面向?qū)ο髷?shù)據(jù)系統(tǒng)
面向?qū)ο髷?shù)據(jù)系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)(ObjectOrientedDatabaseSystem,簡(jiǎn)稱OODBS)是數(shù)據(jù)庫(kù)技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相結(jié)合的產(chǎn)物。有關(guān)OO數(shù)據(jù)模型和面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的研究在數(shù)據(jù)庫(kù)研究領(lǐng)域是沿著三條路線展開(kāi)的:一條是以關(guān)系數(shù)據(jù)庫(kù)和SQL為基礎(chǔ)的擴(kuò)展關(guān)系模型。一條是以面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言為基礎(chǔ),研究持久的程序設(shè)計(jì)語(yǔ)言,支持OO模型。一條是建立新的面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng),支持OO數(shù)據(jù)模型。面向?qū)ο髷?shù)據(jù)系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)(ObjectOrie13.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法面向?qū)ο蟪绦蛟O(shè)計(jì)方法是一種支持模塊化設(shè)計(jì)和軟件重用的實(shí)際可行的編程方法。它把程序設(shè)計(jì)的主要活動(dòng)集中在建立對(duì)象和對(duì)象之間的聯(lián)系(或通信)上,從而完成所需要的計(jì)算。一個(gè)面向?qū)ο蟮某绦蚓褪窍嗷ヂ?lián)系(或通信)的對(duì)象集合。由于現(xiàn)實(shí)世界可以抽象為對(duì)象和對(duì)象聯(lián)系的集合,所以面向?qū)ο蟮某绦蛟O(shè)計(jì)方法學(xué)是一種更接近現(xiàn)實(shí)世界的、更自然的程序設(shè)計(jì)方法學(xué)。面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想是封裝和可擴(kuò)展性。面向?qū)ο蟪绦蛟O(shè)計(jì)的可擴(kuò)展性體現(xiàn)在繼承性和行為擴(kuò)展兩個(gè)方面。由封裝和繼承還可以導(dǎo)出面向?qū)ο蟪绦蛟O(shè)計(jì)方法的其他優(yōu)良特性,如多態(tài)性、動(dòng)態(tài)聯(lián)編等。13.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法面向?qū)ο蟪绦蛟O(shè)計(jì)方法是一種支持模13.2面向?qū)ο髷?shù)據(jù)模型一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是一個(gè)持久的、可共享的對(duì)象庫(kù)的存儲(chǔ)和管理者;而一個(gè)對(duì)象庫(kù)是由一個(gè)OO模型所定義的對(duì)象的集合體。13.2.1OO模型的核心概念 一個(gè)OO模型是用面向?qū)ο笥^點(diǎn)來(lái)描述現(xiàn)實(shí)世界實(shí)體(對(duì)象)的邏輯組織、對(duì)象間限制、聯(lián)系等的模型。核心概念如下:13.2面向?qū)ο髷?shù)據(jù)模型一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是一個(gè)持久13.2面向?qū)ο髷?shù)據(jù)模型1.對(duì)象(Object)與對(duì)象標(biāo)識(shí)0ID(ObjectIDentifier) 2.封裝(Encapsulation) 3.類(lèi)(Class) 4.類(lèi)層次(結(jié)構(gòu)) 5.消息(Message)13.2面向?qū)ο髷?shù)據(jù)模型1.對(duì)象(Object13.2面向?qū)ο髷?shù)據(jù)模型13.3.2對(duì)象與對(duì)象標(biāo)識(shí)一、對(duì)象結(jié)構(gòu) 對(duì)象是由一組數(shù)據(jù)結(jié)構(gòu)和在這組數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來(lái)的基本單位。對(duì)象之間的界面由一組消息定義。一個(gè)對(duì)象包括以下幾個(gè)部分: 屬性集合:所有屬性合起來(lái)構(gòu)成了對(duì)象數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。 方法集合:方法描述了對(duì)象的行為特性。 消息集合:消息是對(duì)象向外提供的界面,消息由對(duì)象接收和響應(yīng)。13.2面向?qū)ο髷?shù)據(jù)模型13.3.2對(duì)象與對(duì)象標(biāo)識(shí)13.2面向?qū)ο髷?shù)據(jù)模型二、對(duì)象標(biāo)識(shí) 面向?qū)ο髷?shù)據(jù)庫(kù)中的每個(gè)對(duì)象都有一個(gè)唯一的不變的標(biāo)識(shí)稱為對(duì)象標(biāo)識(shí)(OID)。
1.值標(biāo)識(shí)。用值來(lái)表示標(biāo)識(shí)。
2.名標(biāo)識(shí)。用一個(gè)名字來(lái)表示標(biāo)識(shí)。
3.內(nèi)標(biāo)識(shí)。以上兩種標(biāo)識(shí)是由用戶建立的,內(nèi)標(biāo)識(shí)是建立在數(shù)據(jù)模型或程序設(shè)計(jì)語(yǔ)言中,不要求用戶給出標(biāo)識(shí)。13.2面向?qū)ο髷?shù)據(jù)模型二、對(duì)象標(biāo)識(shí)13.2面向?qū)ο髷?shù)據(jù)模型不同的標(biāo)識(shí)其持久性程度是不同的,若標(biāo)識(shí)只能在程序或查詢的執(zhí)行期間保持不變,則稱該標(biāo)識(shí)具有程序內(nèi)持久性。若標(biāo)識(shí)在從一個(gè)程序的執(zhí)行到另一個(gè)程序的執(zhí)行期間能保持不變,則稱該標(biāo)識(shí)具有程序間持久性。若標(biāo)識(shí)不僅在程序執(zhí)行過(guò)程中而且在對(duì)數(shù)據(jù)的重組重構(gòu)過(guò)程中一直保持不變,則稱該標(biāo)識(shí)具有永久持久性。13.2面向?qū)ο髷?shù)據(jù)模型不同的標(biāo)識(shí)其持久性程度是不同的,13.2面向?qū)ο髷?shù)據(jù)模型三、封裝 封裝是對(duì)象的外部界面與內(nèi)部實(shí)現(xiàn)之間實(shí)行清晰隔離的一種抽象,外部與對(duì)象的通信只能通過(guò)消息,這是OO模型的主要特征之一。封裝的意義在于將對(duì)象的實(shí)現(xiàn)與對(duì)象應(yīng)用互相隔離,從而允許對(duì)操作的實(shí)現(xiàn)算法和數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改,而不影響接口,不必修改使用它們的應(yīng)用,這有利于提高數(shù)據(jù)獨(dú)立性。對(duì)象封裝之后查詢不夠方便靈活,因此在OODB中必須在對(duì)象封裝方面作必要的修改或妥協(xié)。13.2面向?qū)ο髷?shù)據(jù)模型三、封裝13.2面向?qū)ο髷?shù)據(jù)模型13.2.3類(lèi)和類(lèi)層次一、類(lèi)的概念 在OO數(shù)據(jù)庫(kù)中相似對(duì)象的集合稱為類(lèi)。可以把類(lèi)本身看作一個(gè)對(duì)象,稱為類(lèi)對(duì)象(ClassObject)。面向?qū)ο髷?shù)據(jù)庫(kù)模式是類(lèi)的集合。二、類(lèi)的層次結(jié)構(gòu) 在面向?qū)ο髷?shù)據(jù)庫(kù)模式中,一組類(lèi)可形成一個(gè)類(lèi)層次。一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)模式可能有多個(gè)類(lèi)層次。在一個(gè)類(lèi)層次中,一個(gè)類(lèi)繼承其所有超類(lèi)的全部屬性、方法和消息。超類(lèi)是子類(lèi)的抽象(Generalization)或普通化,子類(lèi)是超類(lèi)的特殊化(Specialization)或具體化。13.2面向?qū)ο髷?shù)據(jù)模型13.2.3類(lèi)和類(lèi)層次13.2面向?qū)ο髷?shù)據(jù)模型13.2.4繼承 在OO模型中常用的有兩種繼承,單繼承與多重繼承。若一個(gè)子類(lèi)只能繼承一個(gè)超類(lèi)的特性(包括屬性、方法和消息),這種繼承稱為單繼承:若一個(gè)子類(lèi)能繼承多個(gè)超類(lèi)的特性,這種繼承稱為多重繼承。 繼承性有兩個(gè)優(yōu)點(diǎn),第一,它是建模的有力工具,提供了對(duì)現(xiàn)實(shí)世界簡(jiǎn)明而精確的描述。第二,它提供了信息重用機(jī)制。 子類(lèi)對(duì)父類(lèi)既有繼承又有發(fā)展,繼承的部分就是重用的成分。由封裝和繼承還導(dǎo)出面向?qū)ο蟮钠渌麅?yōu)良特性,如多態(tài)性、動(dòng)態(tài)聯(lián)編等。13.2面向?qū)ο髷?shù)據(jù)模型13.2.4繼承13.2面向?qū)ο髷?shù)據(jù)模型13.2.5滯后聯(lián)編如果子類(lèi)與超類(lèi)發(fā)生同名沖突,即子類(lèi)只繼承了超類(lèi)中操作的名稱而自己實(shí)現(xiàn)操作的算法,有自己的數(shù)據(jù)結(jié)構(gòu)和程序代碼。在幾乎所有的OO數(shù)據(jù)模型中都以子類(lèi)的定義為準(zhǔn),也就是子類(lèi)的定義重載(override)其超類(lèi)中的同名定義。13.2面向?qū)ο髷?shù)據(jù)模型13.2.5滯后聯(lián)編13.2面向?qū)ο髷?shù)據(jù)模型
由于同樣的方法名在不同的類(lèi)中可能代表不同的含義,同樣一個(gè)消息送到不同對(duì)象中,可能執(zhí)行不同的過(guò)程,也就是消息的含義依賴于其執(zhí)行的環(huán)境。在這種情況下,同一方法代表不同的功能,也就是一名多用,這叫超載(overloading),消息中的方法名,在應(yīng)該程序編譯時(shí)還不能確定它所代表的過(guò)程,只有執(zhí)行時(shí),當(dāng)消息發(fā)送到具體的對(duì)象后,方法名的方法的過(guò)程才能夠結(jié)合。這種“名”與“義”的推遲結(jié)合稱為滯后聯(lián)編(latebinding)。13.2面向?qū)ο髷?shù)據(jù)模型由于同樣的方法名在13.2面向?qū)ο髷?shù)據(jù)模型13.2.6對(duì)象的嵌套 一個(gè)對(duì)象的屬性也可以是一個(gè)對(duì)象,這樣對(duì)象之間產(chǎn)生一個(gè)嵌套層次結(jié)構(gòu)。 對(duì)象嵌套概念允許不同的用戶采用不同的粒度來(lái)觀察對(duì)象。對(duì)象嵌套層次結(jié)構(gòu)和類(lèi)層次結(jié)構(gòu)形成了對(duì)象橫向和縱向的復(fù)雜結(jié)構(gòu)。不僅各種類(lèi)之間具有層次結(jié)構(gòu),而且某一個(gè)類(lèi)內(nèi)部也具有嵌套層次結(jié)構(gòu),一個(gè)類(lèi)的屬性可以是一個(gè)基本類(lèi),也可以是一個(gè)一般類(lèi)。13.2面向?qū)ο髷?shù)據(jù)模型13.2.6對(duì)象的嵌套13.3面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言O(shè)ODB語(yǔ)言用于描述面向?qū)ο髷?shù)據(jù)庫(kù)模式,說(shuō)明并操縱類(lèi)定義與對(duì)象實(shí)例。OODB語(yǔ)言主要包括對(duì)象定義語(yǔ)言(ODL)和對(duì)象操縱語(yǔ)言(OML),對(duì)象操縱語(yǔ)言中一個(gè)重要子集是對(duì)象查詢語(yǔ)言(OQL)。00DB語(yǔ)言一般應(yīng)具備下列功能:
(1)類(lèi)的定義與操縱
(2)操作/方法的定義
(3)對(duì)象的操縱13.3面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言O(shè)ODB語(yǔ)言用于描13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)
面向?qū)ο髷?shù)據(jù)庫(kù)模式是類(lèi)的集合。模式為適應(yīng)需求的變化而隨時(shí)間的變化稱為模式演進(jìn)。模式演進(jìn)包括創(chuàng)建新的類(lèi)、刪除舊的類(lèi)、修改類(lèi)的屬性和操作等。
00DB應(yīng)用環(huán)境對(duì)OODB模式演進(jìn)提出了許多新的要求,使得面向?qū)ο髷?shù)據(jù)庫(kù)模式的修改要比關(guān)系模式的修改復(fù)雜得多,其主要原因是:
(1)模式改變頻繁
(2)模式修改復(fù)雜13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)面向?qū)ο髷?shù)據(jù)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.1模式的一致性模式一致性是指模式自身內(nèi)部不能出現(xiàn)矛盾和錯(cuò)誤,它由模式一致性約束來(lái)刻畫(huà)。模式一致性約束可分為唯一性約束、存在性約束和子類(lèi)型約束等,滿足所有這些一致性約束的模式則稱為是一致的。(1)唯一性約束:這一類(lèi)約束條件要求名字的唯一性。(2)存在性約束:存在性約束是指顯式引用的某些成分必須存在。(3)子類(lèi)型約束:子類(lèi)/超類(lèi)聯(lián)系不能有環(huán)。不能有從多繼承帶來(lái)的任何沖突。如果只支持單繼承,則子類(lèi)的單一超類(lèi)必須加以標(biāo)明。13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.1模式的一致性13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.2模式演進(jìn)操作(1)類(lèi)集的改變?cè)黾右粋€(gè)新的類(lèi)刪除一個(gè)已有類(lèi)改變一個(gè)已有類(lèi)名字
13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.2模式演進(jìn)操作13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(2)已有類(lèi)的成分的改變?cè)黾有碌膶傩曰蛐碌牟僮鳎椒▌h除已有的屬性或操作改變已有用性的名字或類(lèi)型改變一操作的名稱或操作的實(shí)現(xiàn)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(2)已有類(lèi)的成分的改變13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(3)子類(lèi)儲(chǔ)類(lèi)聯(lián)系的改變?cè)黾右恍碌某?lèi)刪除一已有超類(lèi)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)(3)子類(lèi)儲(chǔ)類(lèi)聯(lián)系的改變13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.3模式演進(jìn)的實(shí)現(xiàn)
采用轉(zhuǎn)換的機(jī)制來(lái)實(shí)現(xiàn)模式演進(jìn),所謂轉(zhuǎn)換方法是指在OO數(shù)據(jù)庫(kù)中,已有的對(duì)象將根據(jù)新的模式結(jié)構(gòu)進(jìn)行轉(zhuǎn)換以適應(yīng)新的模式。根據(jù)轉(zhuǎn)換發(fā)生的時(shí)間可有不同的轉(zhuǎn)換方式:立即轉(zhuǎn)換方式。一旦模式變化立即執(zhí)行所有變換;延遲轉(zhuǎn)換方式。模式變化后不立即執(zhí)行,延遲到低層數(shù)據(jù)庫(kù)載入時(shí),或者延遲到該對(duì)象被存取時(shí)才執(zhí)行變換。13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)13.4.3模式演進(jìn)的實(shí)13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)前者的缺點(diǎn)在于系統(tǒng)為了執(zhí)行轉(zhuǎn)換將停頓一些時(shí)間;后者的缺點(diǎn)在于以后應(yīng)用程序存取一個(gè)對(duì)象時(shí),要把它的結(jié)構(gòu)與其所屬類(lèi)的定義比較,完成必須的修改,運(yùn)行效率將受到影響。此外,通過(guò)多模式版本方式來(lái)完成轉(zhuǎn)換也是一種有力的手段。13.4面向?qū)ο髷?shù)據(jù)庫(kù)的模式演進(jìn)前者的缺點(diǎn)在于系統(tǒng)為了執(zhí)行13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)必須滿足兩個(gè)條件:支持一核心的面向?qū)ο髷?shù)據(jù)模型;支持傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)所有的數(shù)據(jù)庫(kù)特征。13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)必須滿足兩個(gè)13.5對(duì)象-關(guān)系數(shù)據(jù)庫(kù)對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)除了具有原來(lái)關(guān)系數(shù)據(jù)庫(kù)的各種特點(diǎn)外,還應(yīng)該提供以下特點(diǎn):(1)擴(kuò)充數(shù)據(jù)類(lèi)型(2)支持復(fù)雜對(duì)象(3)支持繼承的概念(4)提供通用的規(guī)則系統(tǒng)13.5
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流服務(wù)師創(chuàng)新思維強(qiáng)化考核試卷含答案
- 2025年三明學(xué)院馬克思主義基本原理概論期末考試模擬題附答案
- 口腔修復(fù)體制作師安全生產(chǎn)基礎(chǔ)知識(shí)能力考核試卷含答案
- 搪瓷瓷釉制作工QC管理能力考核試卷含答案
- 燃?xì)饩咧圃旃徍蟾?jìng)賽考核試卷含答案
- 纖維板原料制備工安全教育競(jìng)賽考核試卷含答案
- 軋管工崗前創(chuàng)新應(yīng)用考核試卷含答案
- 2024年湖北大學(xué)輔導(dǎo)員招聘?jìng)淇碱}庫(kù)附答案
- 2024年貴州輕工職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試筆試題庫(kù)附答案
- 2024年萊蕪市特崗教師招聘考試真題題庫(kù)附答案
- 2025年高中語(yǔ)文必修上冊(cè)《登泰山記》文言文對(duì)比閱讀訓(xùn)練(含答案)
- 2025年金蝶AI蒼穹平臺(tái)新一代企業(yè)級(jí)AI平臺(tái)報(bào)告-
- 2025中國(guó)機(jī)械工業(yè)集團(tuán)有限公司(國(guó)機(jī)集團(tuán))社會(huì)招聘19人筆試參考題庫(kù)附答案
- 淺析煤礦巷道快速掘進(jìn)技術(shù)
- 成人留置導(dǎo)尿標(biāo)準(zhǔn)化護(hù)理與并發(fā)癥防控指南
- 2025年勞動(dòng)關(guān)系協(xié)調(diào)師綜合評(píng)審試卷及答案
- CIM城市信息模型技術(shù)創(chuàng)新中心建設(shè)實(shí)施方案
- 班級(jí)互動(dòng)小游戲-課件共30張課件-小學(xué)生主題班會(huì)版
- 2025至2030全球及中國(guó)智慧機(jī)場(chǎng)建設(shè)行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025年二級(jí)造價(jià)師《土建工程實(shí)務(wù)》真題卷(附解析)
- 智慧農(nóng)業(yè)管理中的信息安全對(duì)策
評(píng)論
0/150
提交評(píng)論