第八章 對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)_第1頁(yè)
第八章 對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)_第2頁(yè)
第八章 對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)_第3頁(yè)
第八章 對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)_第4頁(yè)
第八章 對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)

關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的出現(xiàn)使數(shù)據(jù)庫(kù)的應(yīng)用達(dá)到了空前的普及,使數(shù)據(jù)庫(kù)技術(shù)稱(chēng)為社會(huì)信息化的基本技術(shù)。這兩代(第一代數(shù)據(jù)庫(kù)-層次網(wǎng)狀和第二代數(shù)據(jù)庫(kù)-關(guān)系)數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用領(lǐng)域主要在商務(wù)領(lǐng)域,其特點(diǎn)是所處理的事務(wù)比較小,如存款取款、訂票、財(cái)務(wù)管理、人事管理、統(tǒng)計(jì)管理等。目錄

一、背景二、基本概念三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)四、ORDB的定義語(yǔ)言(略)五、OODBS概述六、使用UML類(lèi)圖來(lái)概念對(duì)象建模一面向?qū)ο髷?shù)據(jù)庫(kù)的產(chǎn)生背景關(guān)系數(shù)據(jù)庫(kù)有許多優(yōu)點(diǎn),但它存在以下局限性:數(shù)據(jù)模型強(qiáng)調(diào)數(shù)據(jù)的高度結(jié)構(gòu)化,面向機(jī)器而不是面向用戶(hù);數(shù)據(jù)類(lèi)型簡(jiǎn)單、固定;結(jié)構(gòu)與行為分離,語(yǔ)義表達(dá)能力差;將復(fù)雜對(duì)象分解為多個(gè)基本關(guān)系來(lái)管理,查詢(xún)實(shí)現(xiàn)復(fù)雜等等。隨著計(jì)算機(jī)應(yīng)用領(lǐng)域的拓廣,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)已不能滿(mǎn)足新的應(yīng)用領(lǐng)域如計(jì)算機(jī)輔助設(shè)計(jì)/制造(CAD/CAM)、計(jì)算機(jī)輔助軟件工程(CASE)、地理信息系統(tǒng)(GIS)、辦公自動(dòng)化系統(tǒng)(OAS)等的需要,這些應(yīng)用領(lǐng)域面臨的共同問(wèn)題是大型工程復(fù)雜數(shù)據(jù)的管理問(wèn)題。例如多媒體數(shù)據(jù)、空間數(shù)據(jù)、時(shí)態(tài)數(shù)據(jù)、復(fù)合數(shù)據(jù)等。為此需要新的數(shù)據(jù)模型、數(shù)據(jù)庫(kù)系統(tǒng)。在20世紀(jì)90年代第三代數(shù)據(jù)庫(kù)系統(tǒng)的對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)了。一面向?qū)ο髷?shù)據(jù)庫(kù)的產(chǎn)生背景新一代應(yīng)用系統(tǒng)提出了以下要求:

(1)支持復(fù)雜的數(shù)據(jù)類(lèi)型。新一代應(yīng)用領(lǐng)域的數(shù)據(jù)往往是幾十種或上百種元素組成的對(duì)象,具有許多傳統(tǒng)數(shù)據(jù)庫(kù)中沒(méi)有的數(shù)據(jù)類(lèi)型,如變長(zhǎng)數(shù)據(jù)、非結(jié)構(gòu)化字符串、圖形、圖象、聲音、動(dòng)畫(huà)信息等,這些信息在傳統(tǒng)數(shù)據(jù)庫(kù)中一般難以描述、操縱和檢索。(2)支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。工程設(shè)計(jì)往往是采用分層的設(shè)計(jì)方法(自頂向下或自底向上),分層設(shè)計(jì)不僅要求有層次結(jié)構(gòu),而且對(duì)于不同的設(shè)計(jì)對(duì)象,層次數(shù)目也不一樣。(3)對(duì)象實(shí)例和類(lèi)的演進(jìn)。工程設(shè)計(jì)是一個(gè)漸進(jìn)的過(guò)程,特別是在大規(guī)模應(yīng)用中,類(lèi)是隨著環(huán)境、需求、研究人員研究的深入而發(fā)生變化的,這些變化稱(chēng)為模式演進(jìn)。一面向?qū)ο髷?shù)據(jù)庫(kù)的產(chǎn)生背景(4)支持工程事務(wù)管理。工程事務(wù)的特點(diǎn)表現(xiàn)為長(zhǎng)時(shí)間、協(xié)作性和試探性。傳統(tǒng)數(shù)據(jù)庫(kù)的并發(fā)控制策略無(wú)法滿(mǎn)足這類(lèi)事務(wù)的要求。

(5)一個(gè)復(fù)雜對(duì)象有許多子對(duì)象組成,而這些子對(duì)象又有多個(gè)版本,這就需要用版本配置來(lái)組合成一個(gè)合理的復(fù)雜對(duì)象。持久性對(duì)象也同樣存在版本的管理問(wèn)題。(6)航式查詢(xún)和關(guān)聯(lián)查詢(xún)?cè)L問(wèn)。復(fù)雜應(yīng)用中的對(duì)象-關(guān)系是大型的樹(shù)狀結(jié)構(gòu),需要系統(tǒng)提供在對(duì)象圖中的高效導(dǎo)航能力,特別是多媒體對(duì)象實(shí)時(shí)性強(qiáng),要求更高的交互性能。另一方面,大型應(yīng)用通過(guò)關(guān)聯(lián)查詢(xún)來(lái)訪問(wèn)對(duì)象也是必須的。一面向?qū)ο髷?shù)據(jù)庫(kù)的產(chǎn)生背景(7)支持分布式系統(tǒng)中獨(dú)立于平臺(tái)的大型對(duì)象的存儲(chǔ)。新一代應(yīng)用領(lǐng)域表現(xiàn)為數(shù)據(jù)密集,如圖形圖象等多媒體對(duì)象需要占用大量的存儲(chǔ)空間,所以系統(tǒng)提供有效的存儲(chǔ)和控制手段是十分必要的。(8)對(duì)約束、觸發(fā)、規(guī)則等方面的支持。新一代應(yīng)用系統(tǒng)的特點(diǎn)是對(duì)象的結(jié)構(gòu)和操作非常復(fù)雜,有著豐富的語(yǔ)義信息。為了保證數(shù)據(jù)庫(kù)的完整性和一致性,引入約束機(jī)制是非常必要的。一對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)因此,把先進(jìn)的面向?qū)ο髾C(jī)制和方法與數(shù)據(jù)庫(kù)技術(shù)相結(jié)合而形成新一代的面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是面向?qū)ο蠹夹g(shù)和數(shù)據(jù)庫(kù)技術(shù)發(fā)展的必然產(chǎn)物。存在二種觀點(diǎn):一、面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)OODBS

在面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中引入數(shù)據(jù)庫(kù)技術(shù)。二、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)ORDBS

在關(guān)系數(shù)據(jù)庫(kù)中引入面向?qū)ο蠹夹g(shù)。對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的定義在傳統(tǒng)的關(guān)系數(shù)據(jù)模型基礎(chǔ)上,提供元組、數(shù)組、集合一類(lèi)豐富的數(shù)據(jù)類(lèi)型以及處理新的數(shù)據(jù)類(lèi)型操作的能力,并且具有繼承性和對(duì)象標(biāo)識(shí)等面向?qū)ο筇攸c(diǎn),這樣形成的數(shù)據(jù)模型,稱(chēng)為對(duì)象-關(guān)系數(shù)據(jù)模型?;趯?duì)象-關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫(kù)系統(tǒng)稱(chēng)為對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),簡(jiǎn)稱(chēng)ORDBS。

ORDBS為那些希望使用具有面向?qū)ο筇卣鞯年P(guān)系數(shù)據(jù)庫(kù)用戶(hù)提供了一條捷徑。在對(duì)象-關(guān)系模型中,ER模型的許多概念,如實(shí)體標(biāo)識(shí)、多值屬性、泛化/細(xì)化等,無(wú)需經(jīng)過(guò)變換轉(zhuǎn)化可直接引用。對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)兼有關(guān)系數(shù)據(jù)庫(kù)和面向?qū)ο髷?shù)據(jù)庫(kù)兩方面的特征,它除了具有原來(lái)關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)外,還具有以下特點(diǎn):(1)允許用戶(hù)擴(kuò)充基本數(shù)據(jù)類(lèi)型,即允許用戶(hù)根據(jù)應(yīng)用需求自己定義數(shù)據(jù)類(lèi)型、函數(shù)和操作符,而且一經(jīng)定義,這些新的數(shù)據(jù)類(lèi)型、函數(shù)和操作符將放在數(shù)據(jù)庫(kù)管理系統(tǒng)核心中供所有用戶(hù)公用。(2)能在SQL中支持復(fù)雜對(duì)象,即由多種基本類(lèi)型或用戶(hù)定義類(lèi)型構(gòu)成的對(duì)象。ORDBS通過(guò)對(duì)SQL語(yǔ)言的SELECT句型使用方式稍加修改就能處理帶有復(fù)合類(lèi)型、嵌套和引用類(lèi)型的ORDB查詢(xún)。(3)能夠支持子類(lèi)對(duì)超類(lèi)的各種特性的繼承,支持?jǐn)?shù)據(jù)繼承和函數(shù)繼承,支持多重繼承,支持函數(shù)重載。如在ORDBS中支持類(lèi)型一級(jí)的繼承性,也可實(shí)現(xiàn)表級(jí)繼承性。(4)能夠提供功能強(qiáng)大的通用規(guī)則系統(tǒng),而且規(guī)則系統(tǒng)與其他的對(duì)象—關(guān)系能力是集成為一體的。例如,規(guī)則中的事件和動(dòng)作可以是任意的SQL語(yǔ)句,可以使用用戶(hù)自定義的函數(shù),規(guī)則能夠被繼承等。OODBS與ORDBS的比較面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)與對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都是比傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)更好、更先進(jìn)的系統(tǒng),但在具體分析時(shí)可發(fā)現(xiàn)其相互的不同特色,主要有以下幾點(diǎn):(1)DBMS的基本功能這兩種數(shù)據(jù)庫(kù)系統(tǒng)都是具有DBMS的基本概念與基本功能,都能在數(shù)據(jù)管理中發(fā)揮重要作用,而且兩者均有多種數(shù)據(jù)類(lèi)型及構(gòu)造,抽象數(shù)據(jù)類(lèi)型能力。(2)構(gòu)造復(fù)雜模型能力

ORDBMS有一定的構(gòu)造復(fù)雜模型能力,但是比OODBMS功能稍差。(3)模式演化能力一般而言O(shè)ODBMS均有一定程度的模式演化能力與版本控制能力,而ORDBMS則一般沒(méi)有。OODBS與ORDBS的比較(4)數(shù)據(jù)與方法封裝能力

OODBMS均有一定的數(shù)據(jù)與方法的封裝能力,而且消息與方法分離,而ORDBMS則一般沒(méi)有。(5)使用方便性由于OODBMS具有嚴(yán)格的OO結(jié)構(gòu)風(fēng)格,因此使用、掌握不容易,而ORDBMS則以關(guān)系表為基礎(chǔ),OO風(fēng)格不明顯,因此使用,掌握較為方便。(6)用戶(hù)群體

OODBMS的用戶(hù)群體較小且不易培養(yǎng),而ORDBMS其使用、操作方式均與傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)接近,因此易為關(guān)系數(shù)據(jù)庫(kù)用戶(hù)接受。OODB和ORDB的比較OODBORDB從OOPLC++出發(fā),引入持久數(shù)據(jù)的概念,能操作DB,形成持久化C++系統(tǒng)從SQL出發(fā),引入復(fù)合類(lèi)型、繼承性、引用類(lèi)型等概念(SQL3)ODMGOQL(類(lèi)似于SQL)SQL3有導(dǎo)航式查詢(xún),也有非過(guò)程性查詢(xún)結(jié)構(gòu)化查詢(xún),非過(guò)程性查詢(xún)符合面向?qū)ο笳Z(yǔ)言符合第4代語(yǔ)言顯式聯(lián)系隱式聯(lián)系惟一的對(duì)象標(biāo)識(shí)符有主鍵概念,也有對(duì)象標(biāo)識(shí)概念能夠表示“關(guān)系”能夠表示“對(duì)象”對(duì)象處于中心位置關(guān)系處于中心位置目錄

一、背景二、基本概念三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)四、ORDB的定義語(yǔ)言(略)五、OODBS概述六、使用UML類(lèi)圖來(lái)概念對(duì)象建模本節(jié)內(nèi)容:

1、對(duì)象的基本概念

2、類(lèi)的基本概念

3、消息及消息傳遞

4、繼承的基本概念

5、面向?qū)ο蟮暮x二面向?qū)ο蟮幕靖拍?.1面向?qū)ο髷?shù)據(jù)庫(kù)設(shè)計(jì)思想面向?qū)ο髷?shù)據(jù)庫(kù)的基本設(shè)計(jì)思想是一方面把面向?qū)ο笳Z(yǔ)言向數(shù)據(jù)庫(kù)方向擴(kuò)展,使應(yīng)用程序能存取并處理對(duì)象,另一方面擴(kuò)展數(shù)據(jù)庫(kù)系統(tǒng),使其具有面向?qū)ο蟮奶卣?,提供一種綜合的語(yǔ)義數(shù)據(jù)建模概念集,以便對(duì)現(xiàn)實(shí)世界中復(fù)雜應(yīng)用的實(shí)體和聯(lián)系建模。具體的策略或方案有以下幾種:

(1)建立全新的數(shù)據(jù)庫(kù)模型和數(shù)據(jù)語(yǔ)言。不借助現(xiàn)有任何系統(tǒng),開(kāi)發(fā)一個(gè)全新的面向?qū)ο蟮臄?shù)據(jù)庫(kù)語(yǔ)言和數(shù)據(jù)庫(kù)管理系統(tǒng)。2.1面向?qū)ο髷?shù)據(jù)庫(kù)設(shè)計(jì)思想(2)用對(duì)象能力擴(kuò)充數(shù)據(jù)庫(kù)SQL語(yǔ)言。在SQL語(yǔ)言中加入面向?qū)ο髾C(jī)制的方法多為關(guān)系數(shù)據(jù)庫(kù)廠商所采用,目前流行的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)如Oracle、Sysbase、Informix等都按這種方式進(jìn)行了擴(kuò)充,使其具有一定的面向?qū)ο蠊δ?。?)用數(shù)據(jù)庫(kù)能力擴(kuò)充面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言(OOPL)。OOPL本身就具有抽象數(shù)據(jù)類(lèi)型、繼承、封裝等特征,擴(kuò)展僅需加入數(shù)據(jù)庫(kù)特征,如持久性、事務(wù)管理、查詢(xún)等。(4)提供一個(gè)可擴(kuò)充的面向?qū)ο蟮臄?shù)據(jù)庫(kù)管理系統(tǒng)類(lèi)庫(kù)。這些類(lèi)庫(kù)包含若干系統(tǒng)類(lèi),用于提供事務(wù)控制、對(duì)象簇聚的方法等。2.1面向?qū)ο髷?shù)據(jù)庫(kù)設(shè)計(jì)思想(5)把面向?qū)ο笳Z(yǔ)言結(jié)構(gòu)嵌入到傳統(tǒng)的宿主語(yǔ)言中。這類(lèi)似于把SQL語(yǔ)言嵌入到C、FORTRAN等語(yǔ)言中,用這種方法實(shí)現(xiàn)的典型產(chǎn)品是O2。(6)為特定的應(yīng)用領(lǐng)域提供一個(gè)底層的面向?qū)ο髷?shù)據(jù)庫(kù)管理。這種方案無(wú)法提供一個(gè)通用的數(shù)據(jù)庫(kù)環(huán)境,所以只能針對(duì)特定應(yīng)用領(lǐng)域。2.1面向?qū)ο髷?shù)據(jù)庫(kù)的應(yīng)用和功能

1.面向?qū)ο髷?shù)據(jù)庫(kù)的應(yīng)用。面向?qū)ο髷?shù)據(jù)庫(kù)的應(yīng)用主要集中在以下幾個(gè)方面:

(1)計(jì)算機(jī)輔助設(shè)計(jì)/制造(CAD/CAM)(2)計(jì)算機(jī)集成制造系統(tǒng)(CIMS)(3)計(jì)算機(jī)輔助軟件工程(CASE)(4)地理信息系統(tǒng)(GIS)(5)辦公自動(dòng)化系統(tǒng)(OAS)(6)超大規(guī)模集成電路設(shè)計(jì)(VLSIDesign)2.1面向?qū)ο髷?shù)據(jù)庫(kù)的應(yīng)用和功能

2.面向?qū)ο髷?shù)據(jù)庫(kù)的功能:(1)復(fù)雜的信息建模能力(2)語(yǔ)義模式的設(shè)計(jì)(3)豐富的約束管理(4)動(dòng)態(tài)模式演進(jìn)(5)大規(guī)模數(shù)據(jù)管理(6)對(duì)象的版本管理(7)可伸縮性事務(wù)管理(8)計(jì)算完整的數(shù)據(jù)庫(kù)編程語(yǔ)言

2.1面向?qū)ο髷?shù)據(jù)庫(kù)的發(fā)展前景十多年中,面向?qū)ο髷?shù)據(jù)庫(kù)領(lǐng)域得到了很大的發(fā)展,已有許多實(shí)用的面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)面世。面向?qū)ο蟮姆椒ㄓ绕溥m合于表示結(jié)構(gòu)化的知識(shí)的特點(diǎn),預(yù)示著面向?qū)ο髷?shù)據(jù)庫(kù)向智能型數(shù)據(jù)庫(kù)即知識(shí)庫(kù)的方向發(fā)展,并產(chǎn)生了巨大的效果。但是,目前面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)還存在一些問(wèn)題,如缺乏堅(jiān)實(shí)的形式化理論支持,沒(méi)有一個(gè)切實(shí)可行的標(biāo)準(zhǔn),缺乏數(shù)據(jù)庫(kù)的許多功能,產(chǎn)品之間的兼容性和可移植性較差;沒(méi)有提供使關(guān)系數(shù)據(jù)庫(kù)和面向?qū)ο髷?shù)據(jù)庫(kù)相互轉(zhuǎn)換的“通道”;缺乏關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)成功使用的一些功能特點(diǎn),如非過(guò)程化查詢(xún)語(yǔ)言、視圖、授權(quán)等。2.2面向?qū)ο髷?shù)據(jù)庫(kù)的基本概念

面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)支持OO模型。面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是一個(gè)持久的、可共享的對(duì)象庫(kù)的存儲(chǔ)和管理者。對(duì)象庫(kù)是由一個(gè)OO模型所定義的對(duì)象的集合體。一個(gè)OO模型是用面向?qū)ο笥^點(diǎn)來(lái)描述現(xiàn)實(shí)世界實(shí)體(對(duì)象)的邏輯組織、對(duì)象間限制、聯(lián)系等的模型,OO模型的核心概念有:對(duì)象類(lèi)對(duì)象標(biāo)識(shí)封裝

1.對(duì)象的定義

對(duì)象(Object)是現(xiàn)實(shí)世界中的一個(gè)實(shí)體在計(jì)算機(jī)系統(tǒng)中的抽象表示。一切概念上的實(shí)體都可以稱(chēng)作對(duì)象,如一個(gè)數(shù)字、一個(gè)人、一本書(shū)、一所學(xué)校。對(duì)象是包含屬性和方法的封裝結(jié)構(gòu)。一個(gè)對(duì)象就是它本身的一組屬性和它可執(zhí)行的一組操作。2.2

對(duì)象的概念對(duì)象是構(gòu)成和支撐整個(gè)軟件系統(tǒng)的基石。對(duì)象的三個(gè)主要特征為:模塊獨(dú)立性動(dòng)態(tài)連接性易維護(hù)性對(duì)象的識(shí)別系統(tǒng)的目的不同,對(duì)象的劃分也就不一樣對(duì)象劃分的基本原則是:尋求大系統(tǒng)中事物的共性,將所有共同的系統(tǒng)成分確定為一個(gè)對(duì)象。2.2

.1對(duì)象的基本概念2.2.2

類(lèi)的概念類(lèi)(Class)是具有相同特征(相同數(shù)據(jù)結(jié)構(gòu)和相同操作)的對(duì)象的集合。每一個(gè)對(duì)象成為它所在類(lèi)的一個(gè)實(shí)例。一個(gè)類(lèi)中的所有對(duì)象共享一個(gè)公共的定義,盡管它們對(duì)變量所賦予的值不同。在關(guān)系數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,一個(gè)數(shù)據(jù)表可以看成是一個(gè)對(duì)象。因?yàn)樗械臄?shù)據(jù)表對(duì)象均具有二維表格是特點(diǎn)(這表明數(shù)據(jù)表對(duì)象的屬性相同),且都是用于存儲(chǔ)數(shù)據(jù)的對(duì)象(這表明數(shù)據(jù)表對(duì)象的基本操作相同),所以可以將數(shù)據(jù)表歸結(jié)為一個(gè)類(lèi)。類(lèi)與對(duì)象是相對(duì)的,可以把類(lèi)本身也看作一個(gè)對(duì)象,稱(chēng)為類(lèi)對(duì)象,一個(gè)類(lèi)包括以下幾個(gè)部分:(1)變量集合。變量也稱(chēng)屬性。所有實(shí)例變量的集合構(gòu)成對(duì)象數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),每個(gè)實(shí)例變量的值本身也是一個(gè)對(duì)象。(2)消息集合。消息指的是不考慮特定實(shí)現(xiàn)細(xì)節(jié)情況下對(duì)象間請(qǐng)求的傳遞,每個(gè)消息都能由該對(duì)象接收和響應(yīng),是對(duì)象對(duì)外提供的界面。(3)方法集合。方法是指加在對(duì)象上的操作。每個(gè)方法都是實(shí)現(xiàn)一個(gè)消息的程序編碼,它返回一個(gè)值作為對(duì)消息的響應(yīng)。

構(gòu)成類(lèi)的基本元素:標(biāo)識(shí):類(lèi)的名稱(chēng),用以區(qū)分其它類(lèi);繼承描述:指子類(lèi)承襲的父類(lèi)的名稱(chēng),以及繼承得到的結(jié)構(gòu)與功能;數(shù)據(jù)結(jié)構(gòu):是對(duì)該類(lèi)數(shù)據(jù)的組織結(jié)構(gòu)的描述;操作:指該類(lèi)通用功能的具體實(shí)現(xiàn)方法;接口:指面向其它類(lèi)的統(tǒng)一的外部通訊協(xié)議。類(lèi)與對(duì)象對(duì)象與類(lèi)的關(guān)系相當(dāng)于一般程序設(shè)計(jì)語(yǔ)言中變量和變量所具有的類(lèi)型的關(guān)系。2.2.2類(lèi)的基本概念類(lèi)定義例

classemployee{

/*Variables*/

stringname;

stringaddress;

datestart-date;

intsalary;

/*Messages*/

intannual-salary();

stringget-name();

stringget-address();

int

set-address(stringnew-address);

int

employment-length();};在嚴(yán)格的封裝中還需要用來(lái)讀與設(shè)置其他變量的值的方法方法單獨(dú)定義如:int

employment-length(){return

today()–start-date;}

int

set-address(string

new-address){address=new-address;}2.2.2繼承例如,銀行客戶(hù)類(lèi)與銀行雇員類(lèi)相似,盡管有不同之處兩者可以共享某些變量和消息,如name

與address.

兩者也各有特殊變量和消息,如雇員的salary和客戶(hù)的credit-rating.每個(gè)雇員是人;所以employee

是person的特例同樣,customer也是person的特例.創(chuàng)建類(lèi)

person,employeeandcustomer對(duì)所有人都適用的變量/消息與類(lèi)person關(guān)聯(lián).雇員所特有的變量/消息與類(lèi)employee關(guān)聯(lián)客戶(hù)所特有的變量/消息與類(lèi)customer關(guān)聯(lián)繼承

(續(xù))類(lèi)組織成一個(gè)特化/IS-A層次屬于類(lèi)person的變量/消息被類(lèi)employee和customer繼承結(jié)果構(gòu)成一個(gè)類(lèi)層次注意與E-R模型中的ISA層次的相似性2.2.3

對(duì)象標(biāo)識(shí)面向?qū)ο竽P吞峁┝艘环N機(jī)制,使得系統(tǒng)中任何對(duì)象都是唯一的,每個(gè)對(duì)象實(shí)例都被賦予一個(gè)唯一的標(biāo)識(shí)符,作為對(duì)象的標(biāo)識(shí)。在對(duì)象創(chuàng)建時(shí)由系統(tǒng)自動(dòng)生成的,在概念上獨(dú)立于對(duì)象的狀態(tài)和行為。對(duì)象標(biāo)識(shí)一旦生成是不能改變的,即使對(duì)象的狀態(tài)發(fā)生了變化而對(duì)象標(biāo)識(shí)不變,還是被看作同一對(duì)象。用戶(hù)可以查看、查詢(xún)對(duì)象標(biāo)識(shí),但不能改變它的值。對(duì)象標(biāo)識(shí)的概念是一個(gè)比在程序設(shè)計(jì)語(yǔ)言或不是基于面向?qū)ο蟮臄?shù)據(jù)模型中所用到的標(biāo)識(shí)概念更強(qiáng)的概念。以下列出幾種形式的標(biāo)識(shí):

2.2.3

對(duì)象標(biāo)識(shí)(1)值標(biāo)識(shí)。使用一個(gè)數(shù)據(jù)值來(lái)進(jìn)行標(biāo)識(shí),這是關(guān)系數(shù)據(jù)庫(kù)中使用的標(biāo)識(shí)。例如,一個(gè)元組的主碼標(biāo)識(shí)了這個(gè)元組。(2)名稱(chēng)標(biāo)識(shí)。用戶(hù)提供一個(gè)名稱(chēng)來(lái)進(jìn)行標(biāo)識(shí),這是程序變量標(biāo)識(shí)的一種典型表示形式,程序中的每個(gè)變量被賦予一個(gè)名字。變量名可唯一標(biāo)識(shí)每個(gè)變量,不需要考慮變量的值。(3)內(nèi)置標(biāo)識(shí)。在數(shù)據(jù)模型或程序設(shè)計(jì)語(yǔ)言中內(nèi)置的一種標(biāo)識(shí)方法,不需要用戶(hù)提供標(biāo)識(shí)符。面向?qū)ο竽P褪褂眠@種標(biāo)識(shí),每個(gè)對(duì)象在創(chuàng)建時(shí)由系統(tǒng)自動(dòng)賦予一個(gè)標(biāo)識(shí)符。2.2.4

事件與方法的概念既然客觀世界是由對(duì)象組成的,那么客觀世界中的所有行動(dòng)都是由對(duì)象發(fā)出,且能夠?yàn)槟承?duì)象感受到。我們把這樣的行動(dòng)稱(chēng)為事件。在關(guān)系數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,事件分為內(nèi)部事件和外部事件。系統(tǒng)中對(duì)象的數(shù)據(jù)操作和功能調(diào)用命令等等都是內(nèi)部事件,而鼠標(biāo)的移動(dòng)、單擊和鍵盤(pán)的敲擊等等都是外部事件。并非所有的事件都能被每一個(gè)對(duì)象感受到,例如,鼠標(biāo)在某一位置上單擊,該事件則只能被安置在這一位置上的對(duì)象感受到。當(dāng)某一個(gè)對(duì)象感受到一個(gè)特定事件發(fā)生時(shí),這個(gè)對(duì)象應(yīng)該可以做出某種響應(yīng)。例如,將鼠標(biāo)指向一個(gè)運(yùn)行窗體上標(biāo)記為“退出”的按鈕對(duì)象處單擊左鍵,則這個(gè)窗體會(huì)被關(guān)閉。這是因?yàn)檫@個(gè)標(biāo)記為“退出”的按鈕對(duì)象感受到了這個(gè)事件,并以執(zhí)行關(guān)閉窗體的操作來(lái)響應(yīng)這個(gè)事件。因此,我們把方法定義為一個(gè)對(duì)象響應(yīng)某一事件的一個(gè)操作序列。顯然,為了完成一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開(kāi)發(fā)工作,在根據(jù)需要?jiǎng)?chuàng)建了應(yīng)用對(duì)象并設(shè)定了所有對(duì)象的各個(gè)屬性之后,還必須為相關(guān)對(duì)象設(shè)計(jì)其響應(yīng)某些事件的方法。一個(gè)方法也就是一個(gè)操作序列,即程序。而這樣一種程序設(shè)計(jì)的過(guò)程,就被稱(chēng)之為面向?qū)ο蟮某绦蛟O(shè)計(jì)。2.2.4事件與方法的概念面向?qū)ο蟮氖澜缡峭ㄟ^(guò)對(duì)象與對(duì)象間彼此的相互合作來(lái)推動(dòng)的,消息是對(duì)象之間的通信載體。消息就是用來(lái)請(qǐng)求對(duì)象執(zhí)行某個(gè)處理或回答某些信息的要求,是連接對(duì)象的紐帶。在面向?qū)ο笙到y(tǒng)中有兩類(lèi)消息,即公有消息和私有消息。消息具有如下幾個(gè)性質(zhì):同一對(duì)象可以接收不同形式的多個(gè)消息,產(chǎn)生不同響應(yīng)。一條消息可以發(fā)送給不同的對(duì)象,消息的解釋完全由接收對(duì)象完成,不同對(duì)象對(duì)相同形式的消息可以有不同解釋。與傳統(tǒng)程序調(diào)用不同,對(duì)于傳來(lái)的消息,對(duì)象可以返回相應(yīng)的回答信息,也可以不返回,即消息響應(yīng)不是必須的。2.2.5消息和消息傳遞2.2.5消息和消息傳遞消息傳遞機(jī)制當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),包含要求接收對(duì)象去執(zhí)行某些活動(dòng)的信息,接收到消息的對(duì)象經(jīng)過(guò)解釋予以響應(yīng),對(duì)象間的這種相互合作需要一個(gè)機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱(chēng)為“消息傳遞”。消息模式與方法消息的形式用消息模式(messagepattern)刻畫(huà)。一個(gè)消息模式定義一類(lèi)消息。消息模式不僅定義了對(duì)象接口所能受理的消息,還定義了對(duì)象固有處理能力,是對(duì)象接口的唯一信息,使用對(duì)象只需要了解它的消息模式。對(duì)象的消息模式的處理能力即所謂的“方法”(Method),方法是實(shí)現(xiàn)消息具體功能的手段。2.2.5消息和消息傳遞傳送對(duì)象接收對(duì)象消息<操作名,參數(shù)>接口消息傳遞模型2.2.6繼承的基本概念繼承是指一個(gè)類(lèi)(即稱(chēng)子類(lèi))因承襲而具有另一個(gè)類(lèi)(或稱(chēng)父類(lèi))的能力和特征的機(jī)制或關(guān)系。概括來(lái)說(shuō),有繼承關(guān)系的類(lèi)之間應(yīng)具有如下特性:類(lèi)間具有共享特征(包括數(shù)據(jù)和程序代碼的共享);類(lèi)間具有細(xì)微的差別或新增部分(包括非共享程序代碼和數(shù)據(jù));類(lèi)問(wèn)具有層次結(jié)構(gòu)。繼承避免了由于系統(tǒng)內(nèi)類(lèi)和對(duì)象封閉而造成數(shù)據(jù)和操作冗余的現(xiàn)象。其最重要的優(yōu)點(diǎn)在于支持重用。2.2.7面向?qū)ο蟮暮x面向?qū)ο?數(shù)據(jù)抽象+數(shù)據(jù)抽象類(lèi)型+繼承機(jī)制面向?qū)ο笫且环N認(rèn)識(shí)客觀世界的認(rèn)知方法學(xué)這種認(rèn)識(shí)方法將客觀世界看成是由許許多多不同對(duì)象構(gòu)成的,每一個(gè)對(duì)象都有自己的運(yùn)動(dòng)規(guī)律和內(nèi)部狀態(tài),不同對(duì)象間的相互作用和通訊構(gòu)成了完整的客觀世界。面向?qū)ο笠嗍且环N解決問(wèn)題的思維方法從組織結(jié)構(gòu)模型化客觀世界,將對(duì)象作為需求分析和系統(tǒng)設(shè)計(jì)的核心或主體,把整個(gè)問(wèn)題域抽象成為相互通訊的一組對(duì)象集合,并引用科學(xué)方法論中的分類(lèi)思想,將相似或相近的一組對(duì)象聚合成類(lèi),采用各種手段將相似的類(lèi)組織起來(lái),實(shí)現(xiàn)問(wèn)題空間到解空間的映射。2.2.7面向?qū)ο髷?shù)據(jù)模型對(duì)象大體上對(duì)應(yīng)于E-R模型中的實(shí)體.面向?qū)ο笫腔趯⑴c一對(duì)象有關(guān)的代碼與數(shù)據(jù)封裝成一個(gè)單位的思想.面向?qū)ο髷?shù)據(jù)模型是一個(gè)邏輯數(shù)據(jù)模型

(類(lèi)似E-R模型).使面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格(e.g.,Smalltalk,C++)適應(yīng)數(shù)據(jù)庫(kù)系統(tǒng)面向?qū)ο笳Z(yǔ)言面向?qū)ο蟾拍钤跀?shù)據(jù)庫(kù)系統(tǒng)中有多種用法面向?qū)ο罂杀挥米髟O(shè)計(jì)工具類(lèi)似于用E-R圖建模再轉(zhuǎn)換成關(guān)系面向?qū)ο蟾拍羁膳c操作數(shù)據(jù)庫(kù)的程序設(shè)計(jì)語(yǔ)言結(jié)合.對(duì)象關(guān)系系統(tǒng)

–在關(guān)系語(yǔ)言中增加復(fù)雜類(lèi)型和面向?qū)ο?持久性程序設(shè)計(jì)語(yǔ)言

–通過(guò)增加持久性和集合之類(lèi)的概念來(lái)擴(kuò)展面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言以便處理數(shù)據(jù)庫(kù).持久性程序設(shè)計(jì)語(yǔ)言持久性程序設(shè)計(jì)語(yǔ)言允許創(chuàng)建對(duì)象并存儲(chǔ)在數(shù)據(jù)庫(kù)中,并且可在程序設(shè)計(jì)語(yǔ)言中直接使用允許從程序設(shè)計(jì)語(yǔ)言直接操作數(shù)據(jù)不必通過(guò)SQL.不必有顯式的格式(類(lèi)型)改變格式改變由系統(tǒng)透明地完成若沒(méi)有持久性程序設(shè)計(jì)語(yǔ)言,格式改變成為程序員的負(fù)擔(dān)要寫(xiě)更多的代碼更多的出錯(cuò)機(jī)會(huì)允許對(duì)象在內(nèi)存中處理

不必有顯式的從數(shù)據(jù)庫(kù)加載或存儲(chǔ)到數(shù)據(jù)庫(kù)節(jié)省代碼,節(jié)省加載/存儲(chǔ)大量數(shù)據(jù)的開(kāi)銷(xiāo)持久性程序設(shè)計(jì)語(yǔ)言

(續(xù))持久性程序設(shè)計(jì)語(yǔ)言的缺點(diǎn)由于多數(shù)程序設(shè)計(jì)語(yǔ)言的表達(dá)能力,很容易造成編程錯(cuò)誤而破壞數(shù)據(jù)庫(kù).語(yǔ)言的復(fù)雜性使得自動(dòng)的高級(jí)優(yōu)化更加困難.不支持描述性查詢(xún)和關(guān)系數(shù)據(jù)庫(kù)持久化程序設(shè)語(yǔ)言和嵌入式語(yǔ)言的區(qū)別在嵌入式語(yǔ)言中,宿主語(yǔ)言的類(lèi)型系統(tǒng)與SQL的類(lèi)型系統(tǒng)不同,程序員要負(fù)責(zé)宿主語(yǔ)言與DML之間的類(lèi)型轉(zhuǎn)換。而持久化程序設(shè)計(jì)語(yǔ)言的查詢(xún)語(yǔ)言與宿主語(yǔ)言完全集成在一塊,任何格式轉(zhuǎn)換對(duì)程序員都是透明的。使用嵌入式查詢(xún)語(yǔ)言的程序員要負(fù)責(zé)編寫(xiě)程序把數(shù)據(jù)從數(shù)據(jù)庫(kù)中取出放到內(nèi)存中。在持久化語(yǔ)言中,程序員可以直接操縱持久數(shù)據(jù),而不必為存取數(shù)據(jù)編寫(xiě)程序。持久化語(yǔ)言的基本概念對(duì)象的持久性對(duì)象標(biāo)識(shí)和指針持久對(duì)象的存儲(chǔ)和訪問(wèn)根據(jù)對(duì)象名找對(duì)象根據(jù)對(duì)象標(biāo)識(shí)找對(duì)象將對(duì)象按聚集形式存放,然后利用程序循環(huán)找所需對(duì)象持久化c++系統(tǒng):通過(guò)類(lèi)庫(kù)賴(lài)擴(kuò)展C++,以支持持久化擴(kuò)展c++對(duì)象定義語(yǔ)言擴(kuò)展c++對(duì)象操縱語(yǔ)言對(duì)象的持久性使臨時(shí)對(duì)象持久化的途徑類(lèi)持久

–聲明某個(gè)類(lèi)的所有對(duì)象是持久的;簡(jiǎn)單但不靈活.創(chuàng)建持久

–擴(kuò)展創(chuàng)建對(duì)象的語(yǔ)法以聲明對(duì)象是持久的.標(biāo)記持久

–在程序中止之前將對(duì)象標(biāo)記為持久的.可達(dá)性持久

–聲明

(根)持久對(duì)象;被根對(duì)象直接或間接引用的對(duì)象也是持久的.對(duì)程序員更容易,但對(duì)數(shù)據(jù)庫(kù)系統(tǒng)有更多開(kāi)銷(xiāo)類(lèi)似Java中的垃圾收集,要檢查可達(dá)性對(duì)象標(biāo)識(shí)與指針持久對(duì)象被賦予持久的對(duì)象標(biāo)識(shí).標(biāo)識(shí)的永久程度:過(guò)程內(nèi)

–標(biāo)識(shí)僅在單個(gè)過(guò)程執(zhí)行期間持續(xù)程序內(nèi)

–標(biāo)識(shí)僅在單個(gè)程序或查詢(xún)執(zhí)行期間持續(xù).程序間

–標(biāo)識(shí)在多個(gè)程序的執(zhí)行之間持續(xù),但隨存儲(chǔ)組織改變而改變持久的

–標(biāo)識(shí)在程序執(zhí)行之間和數(shù)據(jù)的結(jié)構(gòu)重組之間持久;這是面向?qū)ο笙到y(tǒng)要求的.對(duì)象標(biāo)識(shí)與指針

(續(xù))在O-O語(yǔ)言(如C++)中,對(duì)象標(biāo)識(shí)實(shí)際上是內(nèi)存指針.持久性指針

–在程序執(zhí)行之間持久可看作是指向數(shù)據(jù)庫(kù)內(nèi)對(duì)象的指針E.g.指明文件標(biāo)識(shí)和文件內(nèi)偏移從關(guān)系到嵌套關(guān)系、復(fù)合對(duì)象(a)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)層次:關(guān)系——元組——屬性屬性的類(lèi)型是基本數(shù)據(jù)類(lèi)型如整型、字符串等。元組是屬性的有序集合,而關(guān)系是元組的無(wú)序集合。應(yīng)符合1NF,即屬性值是不可分解的。(b)屬性(基本類(lèi)型)嵌套關(guān)系模型的結(jié)構(gòu):關(guān)系——元組

屬性(關(guān)系類(lèi)型)…

它容許關(guān)系的屬性值又可以是關(guān)系,而且可以多次嵌套,嵌套關(guān)系突破了1NF的框架。(c)屬性(基本類(lèi)型)復(fù)合對(duì)象模型的結(jié)構(gòu):關(guān)系元組屬性(元組類(lèi)型)… 屬性(關(guān)系類(lèi)型)…

子關(guān)系…從關(guān)系到嵌套關(guān)系、復(fù)合對(duì)象…………(a)(b)……(c)復(fù)合對(duì)象模型的屬性類(lèi)型可以是基本數(shù)據(jù)類(lèi)型,也可以是元組類(lèi)型(即結(jié)構(gòu)類(lèi)型)或關(guān)系類(lèi)型(即集合類(lèi)型),關(guān)系本身也可以由子關(guān)系構(gòu)成,而且在組成的層次上可以出現(xiàn)多次嵌套。表示集合表示元組嵌套關(guān)系和復(fù)合關(guān)系的實(shí)例關(guān)系University(uno,uname,city,staff(fno,fname,age))表示大學(xué)編號(hào),校名,所在城市,教師(教師編號(hào),教師名稱(chēng),年齡)屬性staff表示關(guān)系,表示所有老師。大學(xué)University和教師staff構(gòu)成一個(gè)嵌套關(guān)系b類(lèi)。如果再加入校長(zhǎng)信息:University(uno,uname,city,staff(fno,fname,age),president[fno,fname,age]

)在這里[]表示元組,此關(guān)系就是復(fù)合對(duì)象c類(lèi),在University關(guān)系中,屬性u(píng)no,uname,city是基本類(lèi)型,staff是關(guān)系類(lèi)型,president是元組類(lèi)型。本質(zhì)上,嵌套關(guān)系和復(fù)合對(duì)象并沒(méi)有給關(guān)系模型增加什么新概念,只是在構(gòu)造類(lèi)型時(shí),更隨意,超越平面文件的范圍,定義更加復(fù)雜的層次結(jié)構(gòu)。引用類(lèi)型嵌套關(guān)系和復(fù)合對(duì)象明顯的弱點(diǎn):無(wú)法表達(dá)遞歸的結(jié)構(gòu),類(lèi)型定義不容許遞歸。如果容許就造成無(wú)窮嵌套,帶來(lái)語(yǔ)義混亂。使用“引用”(reference)的技術(shù)解決類(lèi)型定義中的遞歸問(wèn)題;引用相當(dāng)于指針。除了基本數(shù)據(jù)類(lèi)型、元組類(lèi)型、關(guān)系類(lèi)型外,還有引用類(lèi)型(在面向?qū)ο蠹夹g(shù)中稱(chēng)為對(duì)象標(biāo)識(shí)),可以把類(lèi)型定義中的實(shí)例映射擴(kuò)充到類(lèi)型值域中的實(shí)例映射,提供有關(guān)實(shí)現(xiàn)細(xì)節(jié)的抽象。引用類(lèi)型……UniversityTupUniversityRelFacultyTupFacultyRel……UniversityTupUniversityReLFacultyTupFacultyRel圖8.4引入“引用”概念的類(lèi)型構(gòu)造禁止的類(lèi)型構(gòu)造教員中有一人為校長(zhǎng)。實(shí)線表示類(lèi)型與成分相連虛線表示引用類(lèi)型。避免無(wú)窮嵌套對(duì)象聯(lián)系圖的成分對(duì)象類(lèi)型(實(shí)體)基本數(shù)據(jù)類(lèi)型(如整型等)對(duì)象之間的邊表示對(duì)象間嵌套或引用的關(guān)系屬性值是單值屬性值是多值兩個(gè)屬性之間值的聯(lián)系為逆聯(lián)系對(duì)象間是超類(lèi)和子類(lèi)的聯(lián)系(子類(lèi)指向超類(lèi))使用類(lèi)型構(gòu)造圖的思想,可以把實(shí)體聯(lián)系圖ER擴(kuò)充成對(duì)象聯(lián)系圖,對(duì)象聯(lián)系圖完整地揭示了數(shù)據(jù)之間的聯(lián)系,引用也用實(shí)線,基本成分:一個(gè)對(duì)象聯(lián)系圖的實(shí)例FacultyUniversityCoursetextpresidentworks_forfnocityunameeditorstaffteacheditageteachersalarytextnamefnamecnameuno圖8.5對(duì)象聯(lián)系圖

這個(gè)數(shù)據(jù)庫(kù)模式的對(duì)象聯(lián)系圖,有大學(xué)、教師和課程教材等信息。大學(xué)共六個(gè)屬性,三個(gè)基本屬性:uno,uname,city,一個(gè)單值屬性:president,二個(gè)多值屬性:staff教師和edit學(xué)校編教材。教師faculty共六個(gè)屬性,四個(gè)基本屬性:fno,fname,age,salary,一個(gè)單值屬性:works_for表示教師所在的大學(xué),一個(gè)多值屬性:teach表示教師開(kāi)設(shè)多門(mén)課程。教材cousetext共四個(gè)屬性,二個(gè)基本屬性:cname,textname,二個(gè)單值屬性:editor表示編寫(xiě)教材的大學(xué),teacher表示開(kāi)設(shè)課程的教師。Teach屬性和teacher屬性為互逆屬性。一個(gè)對(duì)象聯(lián)系圖的實(shí)例University(uno,uname,city,staff(fno,fname,age,salary),president[fno,fname,age,salary])Faculty(fno,fname,age,salary,work_for(uno,fno),teach(fno,cname)),Coursetext(cname,textname,teacher,editor(uno,cname))一個(gè)實(shí)體聯(lián)系圖的實(shí)例圖8.5實(shí)體聯(lián)系圖

大學(xué)教師課程有教授1MNP數(shù)據(jù)的概化/特化概化與特化:當(dāng)在較低層上抽象表達(dá)了與之聯(lián)系的較高層上抽象的特殊情況時(shí),就稱(chēng)較高層上抽象是較低層上抽象的概化。而較低層上抽象是較高層上抽象的特化。這種特化聯(lián)系是一種“是”(isa)的聯(lián)系。較高層的對(duì)象類(lèi)型稱(chēng)為超類(lèi)型,較低層的對(duì)象類(lèi)型稱(chēng)為子類(lèi)型。子類(lèi)型具有繼承性,子類(lèi)型繼承超類(lèi)型的特征,而子類(lèi)型本身又具有其他的特征。數(shù)據(jù)的概化/特化FacultyPersonStudentfnosalarysnoagename圖8.6帶概化邊的對(duì)象聯(lián)系圖

人、教師、學(xué)生目錄

一、背景二、基本概念三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)四、ORDB的定義語(yǔ)言(略)五、OODBS概述六、使用UML類(lèi)圖來(lái)概念對(duì)象建模三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)在面向?qū)ο蠹夹g(shù)中,數(shù)據(jù)類(lèi)型有基本類(lèi)型、復(fù)合類(lèi)型和引用類(lèi)型組成?;绢?lèi)型:整型、浮點(diǎn)型、字符、字符串、布爾型和枚舉型復(fù)合類(lèi)型行類(lèi)型:不同類(lèi)型元素的有序集,date(12,March,2008)數(shù)組類(lèi)型:相同類(lèi)型元素的有序集合列表類(lèi)型:相同類(lèi)型元素的有序集合,并且允許有重復(fù)的元素包類(lèi)型:相同類(lèi)型元素的無(wú)序集合,并且允許有重復(fù)的元素集合類(lèi)型:相同類(lèi)型元素的無(wú)序集合,并且所有的元素必須是不同的三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)后四種類(lèi)型:數(shù)組、列表、包、集合,統(tǒng)稱(chēng)為匯集類(lèi)型,或批量Bulk類(lèi)型,差異如下表:{(物理,82),(化學(xué),80),(語(yǔ)文,80),(英語(yǔ),80)},外層為集合類(lèi)型,內(nèi)層為行類(lèi)型。引用類(lèi)型引用類(lèi)型實(shí)際上涉及到類(lèi)型值域中的實(shí)際映射。避免了無(wú)窮嵌套問(wèn)題。類(lèi)型元素順序元素的重復(fù)性元素個(gè)數(shù)舉例數(shù)組有序允許預(yù)置[1,2,1]和[2,1,1]是不同數(shù)組列表有序允許未預(yù)置{1,2,1]}和{2,1,1}是不同列表包無(wú)序允許未預(yù)置{1,2,1]}和{2,1,1}是相同的包集合無(wú)序不允許未預(yù)置{1,2]}和{2,1}是相同的集合目錄

一、背景二、基本概念三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)四、ORDB的定義語(yǔ)言(略)五、OODBS概述六、使用UML類(lèi)圖來(lái)概念對(duì)象建模四、ORDB的定義語(yǔ)言對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)ORDBS

在關(guān)系數(shù)據(jù)庫(kù)中引入面向?qū)ο蠹夹g(shù)。SQL3標(biāo)準(zhǔn)支持ORDBMS。典型的對(duì)象關(guān)系系統(tǒng):Informix公司的InformixUniversalServerOrace公司的Oracle8Sybase公司的AdaptiveServerIBM公司的DB2UDBMicrosoft公司的SQLServer2000等。

在傳統(tǒng)的關(guān)系數(shù)據(jù)模型基礎(chǔ)上,提供元組、數(shù)組、集合一類(lèi)豐富的數(shù)據(jù)類(lèi)型以及處理新的數(shù)據(jù)類(lèi)型操作的能力,并且有繼承性和對(duì)象標(biāo)識(shí)等面向?qū)ο筇攸c(diǎn),這樣形成的數(shù)據(jù)模型,稱(chēng)為“對(duì)象關(guān)系數(shù)據(jù)模型”?;趯?duì)象關(guān)系數(shù)據(jù)模型的DBS稱(chēng)為對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),四、數(shù)據(jù)類(lèi)型的定義舉例1CREATETYPEMyStringcharvarying;CREATETYPEMyDate(dayinteger,monthchar(10),yearinteger);CREATETYPECourseGrade(courseMyString,gradeinteger,dateMyDate);CREATETYPEStudentGrade

setof(CourseGrade);CREATETYPEStudentCourseGrade(nameMyString,cgStudentGrade);也可以不創(chuàng)建中間類(lèi)型,直接創(chuàng)建表CREATETABLESC(nameMyString,cgsetof(courseMyString,gradeinteger,dateMyDate));SC(name,cg(course,grade,date)CREATETABLEscofTYPEStudentCourseGrade;四、數(shù)據(jù)類(lèi)型的定義舉例2CREATETYPEMyStringcharvarying;CREATETYPEFacultyRow(fnointeger,

fname

MyString,

ageinteger);CREATETYPEUniversityRow(unointeger,

uname

MyString,

cityMyString,staffsetof(FacultyRow));CREATETABLEUniversityofTYPEUniversityRow;University(uno,uname,city,staff(fno,fname,age))四、繼承性的定義舉例2PersonStudentTeacher繼承性定義發(fā)生在類(lèi)型級(jí)和表級(jí)1.類(lèi)型級(jí)的繼承性CREATETYPEPerson(name

MyString,social_numberinteger);CREATETYPEStudent(degreeMyString,departmentMyString)underPerson;CREATETYPETeacher(salaryinteger,departmentMyString)underPerson;四、繼承性的定義舉例2PeopleStudentsTeachers子表和超表應(yīng)滿(mǎn)足下列兩個(gè)一致性要求:①超表中每個(gè)元組最多可以與每個(gè)子表中的一個(gè)元組對(duì)應(yīng)。②子表中每個(gè)元組在超表中恰有一個(gè)元組對(duì)應(yīng),并在繼承的屬性上有相同的值。超表子表子表繼承性定義發(fā)生在類(lèi)型級(jí)和表級(jí)1.類(lèi)型級(jí)的繼承性2.表級(jí)的繼承性CREATETablePerson(name

MyString,social_numberinteger);CREATETableStudent(degreeMyString,departmentMyString)underPerson;CREATETableTeacher(salaryinteger,departmentMyString)underPerson;四、

引用類(lèi)型的定義對(duì)類(lèi)型的引用

定義:team_listsetof(ref(Person))

對(duì)表中的元組的引用

CREATETABLEuniversity(uno

integer,uname

MyString,cityMyString,presidentref(faculty),staffsetof(ref(faculty)),editsetof(ref(coursetext)));CREATETABLEfaculty(fnointeger,fname

MyString,ageinteger,works_forref(university),teachsetof(ref(coursetext)));四、SQL3中的定義語(yǔ)言的特色結(jié)構(gòu)數(shù)據(jù)類(lèi)型(row類(lèi)型)對(duì)象標(biāo)識(shí)符(oid):便于引用Oid的三個(gè)性質(zhì)

oid值在任何時(shí)刻都能惟一標(biāo)識(shí)元組

oid只是一個(gè)簡(jiǎn)單的標(biāo)識(shí),與元組的物理值無(wú)關(guān)在元組插入DB時(shí),oid值由DBMS自動(dòng)產(chǎn)生目錄

一、背景二、基本概念三、面向?qū)ο蟮臄?shù)據(jù)類(lèi)型系統(tǒng)四、ORDB的定義語(yǔ)言(略)五、OODBS概述六、使用UML類(lèi)圖來(lái)概念對(duì)象建模五、OODBS概述

5.1ODMG標(biāo)準(zhǔn)什么是ODMG標(biāo)準(zhǔn)ObjectDataManagementGroupODMG標(biāo)準(zhǔn)的五個(gè)核心概念對(duì)象是基本的數(shù)據(jù)結(jié)構(gòu)每個(gè)對(duì)象有一個(gè)永久的表示符對(duì)象可以被指定類(lèi)型和子類(lèi)型對(duì)象狀態(tài)由數(shù)據(jù)值與聯(lián)系定義對(duì)象行為由對(duì)象操作定義5.2OODBS的定義面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)OODBS

在面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中引入數(shù)據(jù)庫(kù)技術(shù)。什么是OODBS:一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)應(yīng)滿(mǎn)足兩個(gè)標(biāo)準(zhǔn):它是一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),具備DBS的基本功能,如持久性、輔存管理、數(shù)據(jù)共享、事務(wù)管理、一致性控制及恢復(fù);它是一個(gè)面向?qū)ο笙到y(tǒng),是針對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的持久性對(duì)象存儲(chǔ)管理而設(shè)計(jì)的,充分支持完整地面向?qū)ο蟾拍詈蜋C(jī)制,如用戶(hù)自定義數(shù)據(jù)類(lèi)型、自定義函數(shù)、對(duì)象封裝等必不可少的特點(diǎn)。用戶(hù):專(zhuān)業(yè)程序員而不是終端用戶(hù)典型的OODBMS:ObjectStore,Ontos,O2,Gemstone,Objectivity和PostVersant5.3面向?qū)ο髷?shù)據(jù)模型的概念對(duì)象:由一組變量、消息和方法組成一組變量:包含對(duì)象的數(shù)據(jù)一組消息:是對(duì)象能響應(yīng)的消息集合,每個(gè)消息可有若干參數(shù)。對(duì)象接受消息后應(yīng)作出相應(yīng)的響應(yīng)。一組方法:每個(gè)方法是實(shí)現(xiàn)一個(gè)消息的代碼段,一個(gè)方法返回一個(gè)值作為對(duì)消息的響應(yīng)。封裝:對(duì)象的使用者只能對(duì)象封裝界面的信息,對(duì)象內(nèi)部對(duì)使用者隱蔽,目的在于將對(duì)象的使用者和設(shè)計(jì)者分開(kāi)。類(lèi):本質(zhì)相同的對(duì)象的抽象稱(chēng)為類(lèi),類(lèi)的每個(gè)對(duì)象稱(chēng)為實(shí)例。類(lèi)相當(dāng)于實(shí)體集。繼承性:允許不同類(lèi)的對(duì)象共享類(lèi)公共部分的結(jié)構(gòu)和特性。對(duì)象標(biāo)識(shí):OID,唯一標(biāo)識(shí)對(duì)象,在對(duì)象創(chuàng)建時(shí)由系統(tǒng)賦一個(gè)OID值,在系統(tǒng)內(nèi)唯一,在對(duì)象生存期內(nèi)oid不能改變。對(duì)象包含:一個(gè)對(duì)象由幾個(gè)對(duì)象組成,則該對(duì)象包含它的成員對(duì)象實(shí)例一:書(shū)本classBook{public:chartitle[256];/*變量*/charauthor[64];floatprice;Book(char*btitle,char*bauthor,char*bpublisher,floatbprice);voidshow_title(void){cout<<title<<‘\n’;};/*消息*/floatget_price(void){floatnew_price};voidshow_book(void){show_title();show_publisher();};private:charpublisher[256];voidshow_publisher(void){cout<<publisher<<'\n';};};5.3面向?qū)ο髷?shù)據(jù)模型的概念personcustomeremployeeofficertellersecretary圖8.13類(lèi)繼承層次圖personfacultyfaculty_studentstudent圖8.14多重繼承性層次1.一個(gè)對(duì)象2.對(duì)象、對(duì)象和實(shí)體間的對(duì)應(yīng)關(guān)系以及對(duì)象和外界的聯(lián)系對(duì)象屬性1屬性2方法消息實(shí)體屬性1屬性2飛機(jī)引擎機(jī)身圖8.15對(duì)象之間的包含層次尾翼機(jī)翼5.4ODMGC++對(duì)象定義語(yǔ)言(C++ODL)classPerson:publicPersistent_Object{public:stringname;intage;};classFaculty:publicPerson{private:intsalary;public:int

fno;

Ref<University>works_forinverseUniversity::staff;

Set<Ref<Coursetext>>teachinverseCoursetext::teacher;};classUniversity:publicPersistent_Object{public:int

uno;

stringuname;

stringcity;

Ref<Faculty>president;

Set<Ref<Faculty>>staffinverseFaculty::works_for;

Set<Ref<Coursetext>>editinverseCoursetext::editor;};classCoursetext:publicPersistent_Object{public:stringcname;stringtextname;

Ref<Faculty>teacherinverseFaculty::teach;

Ref<University>editorinverseUniversity::edit;};5.4ODMGC++對(duì)象操縱語(yǔ)言

----C++OML,插入實(shí)例①打開(kāi)數(shù)據(jù)庫(kù);②事務(wù)開(kāi)始;③查詢(xún)工號(hào)為fno值的Faculty對(duì)象ofa;④查詢(xún)校名為uname值的University對(duì)象oun;⑤創(chuàng)建Coursetext對(duì)象oco,送入cname和textname值:

Ref<Coursetext>oco=new(faco_db)Coursetext;

oco->cname=cname;

oco->textname=textname;⑥在oco的teacher中插入Faculty對(duì)象ofa:

oco->teacher.insert_element(ofa);⑦在oco的editor中插入U(xiǎn)niversity對(duì)象oun:

oco->editor.insert_element(oun);⑧事務(wù)提交(commit)。5.4OQL中的SELECT語(yǔ)句1.檢索上海地區(qū)大學(xué)中教師開(kāi)設(shè)課程的課程名。SELECTDISTINCT

C.cnameFROMUniversityU,U.staffF,F(xiàn).teachCWHEREU.city=′shanghai′;2.下面查詢(xún)返回的是列表值而不是集合或多集:SELECTF.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論