




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)在面向?qū)ο笤O(shè)計(jì)中的應(yīng)用
1實(shí)體管理模型類是具有相同屬性和服務(wù)的一組對(duì)象的抽象定義。它為所有對(duì)象提供了統(tǒng)一的描述,并給出了屬于該對(duì)象的抽象定義,對(duì)象是相對(duì)于該定義的對(duì)象。少量的對(duì)象實(shí)體處理較簡(jiǎn)單,當(dāng)系統(tǒng)中某個(gè)類的對(duì)象實(shí)體數(shù)量很多時(shí),管理(增加、修改、刪除、查詢)這些實(shí)體是系統(tǒng)必須解決的問題。所以,系統(tǒng)建立的對(duì)象模型,必須為管理已有對(duì)象實(shí)體而建,它可用于增加、修改、刪除、查詢已有對(duì)象的實(shí)體,稱為實(shí)體管理模型。實(shí)體管理模型在面向?qū)ο蟮姆治鲈O(shè)計(jì)中也是一個(gè)類,這個(gè)類在建模時(shí)容易被忽略。在純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)中,一般使用一個(gè)管理對(duì)象的類來進(jìn)行多個(gè)對(duì)象的管理。本文用一個(gè)人通信錄的處理實(shí)例,建立一個(gè)傳統(tǒng)實(shí)體管理模型。通信錄是一個(gè)對(duì)象,它所包含的每一個(gè)其他人的情況也是一個(gè)對(duì)象。OBJclass的對(duì)象是一個(gè)通信錄里的人,對(duì)整個(gè)通信錄的管理,不能直接放在該類中實(shí)現(xiàn),而應(yīng)該是通信錄類提供的操作。2屬性屬性型數(shù)據(jù)庫(kù)可以用來保存系統(tǒng)中已實(shí)例化的一些對(duì)象特征,如屬性。但數(shù)據(jù)庫(kù)不能直接將整個(gè)對(duì)象存貯起來(至少不能直接存貯對(duì)象的服務(wù)),即數(shù)據(jù)庫(kù)不能直接作為永久對(duì)象的保留媒介,解決此問題有以下兩種思路:1中小型企業(yè)設(shè)計(jì)把對(duì)象、類等不能直接保留在數(shù)據(jù)庫(kù)中的部分(如服務(wù)),以數(shù)據(jù)庫(kù)的概念及方法間接地保留在數(shù)據(jù)庫(kù)中,再?gòu)臄?shù)據(jù)庫(kù)中取出后還原。由此建立了屬性-方法的對(duì)應(yīng)關(guān)系,每一個(gè)獨(dú)立的聯(lián)合記錄就構(gòu)成了一個(gè)完整的對(duì)象。2模式2:數(shù)據(jù)庫(kù)僅為雙重對(duì)象數(shù)據(jù)庫(kù)僅記錄對(duì)象的屬性,完成屬性的增加、修改、查找、刪除功能,至于對(duì)象中的“服務(wù)”等,不放入數(shù)據(jù)庫(kù)中,而在面向?qū)ο蟮姆治黾霸O(shè)計(jì)以至最終的實(shí)現(xiàn)中解決,故數(shù)據(jù)庫(kù)僅是永久對(duì)象屬性的保留,而不是整個(gè)永久對(duì)象的保留。第一種思路破壞了面向?qū)ο蟾拍畹耐暾?保留在數(shù)據(jù)庫(kù)中間接部分及其轉(zhuǎn)換的過程在面向?qū)ο蟮姆治黾霸O(shè)計(jì)時(shí)的建模,無論在設(shè)計(jì)還是實(shí)現(xiàn)上,都存在很大的復(fù)雜性,而第二種思路實(shí)現(xiàn)則非常容易,可以充分發(fā)揮數(shù)據(jù)庫(kù)與面向?qū)ο笳Z言的長(zhǎng)處,且絕大多數(shù)的OO語言都支持。基于第二種思路,將數(shù)據(jù)庫(kù)與對(duì)象的屬性聯(lián)系起來必須解決從對(duì)象到數(shù)據(jù)庫(kù)的存貯及從數(shù)據(jù)庫(kù)到對(duì)象的恢復(fù),解決的方法如下:1錄入性的改變對(duì)象屬性的改變方式可以劃分為錄入性的改變和程序觸發(fā)性兩種,無論哪種方式都必須把這個(gè)改變永久性地記錄到數(shù)據(jù)庫(kù)中。對(duì)于錄入性的改變,直接設(shè)計(jì)一個(gè)錄入界面并將錄入的屬性存盤即可。對(duì)于程序觸發(fā)性的屬性改變,在屬性所在的類模型(類)中設(shè)計(jì)改變這些屬性的服務(wù)。2發(fā)送符合屬性的實(shí)例在永久屬性所在的模型中設(shè)計(jì)“取出”服務(wù),該服務(wù)首先根據(jù)屬性所在的類,實(shí)例化出一個(gè)空對(duì)象(所有屬性值均為初始值的對(duì)象),再根據(jù)取出的條件,從數(shù)據(jù)庫(kù)中取出符合條件的對(duì)象屬性值,并將具體的屬性值賦予該實(shí)例的對(duì)應(yīng)屬性,最終返回對(duì)象實(shí)體。當(dāng)“取出”服務(wù)根據(jù)屬性所在的類實(shí)例化出一個(gè)對(duì)象時(shí),這個(gè)空對(duì)象已經(jīng)具有了該類所有的一切服務(wù)。3數(shù)據(jù)庫(kù)設(shè)計(jì)原則數(shù)據(jù)庫(kù)中只記錄對(duì)象的屬性值,不處理對(duì)象的服務(wù),對(duì)象的服務(wù)是面向?qū)ο蟮姆治?、設(shè)計(jì)以至最終實(shí)現(xiàn)中解決的問題。因此,類的關(guān)系中數(shù)據(jù)庫(kù)只需解決屬性的關(guān)系。數(shù)據(jù)庫(kù)是對(duì)象屬性的永久保留,而對(duì)象所在的類可能存在繼承關(guān)系,屬性是從其他類繼承而來的,因此,類的繼承關(guān)系必須在數(shù)據(jù)庫(kù)中得到體現(xiàn)。類之間不僅僅存在繼承關(guān)系,還有其他的關(guān)系。同樣,所有關(guān)系在數(shù)據(jù)庫(kù)設(shè)計(jì)中都必須得到體現(xiàn)。不考慮這些關(guān)系,將破壞面向?qū)ο蠓治鲈O(shè)計(jì)或數(shù)據(jù)庫(kù)理論的完整性、統(tǒng)一性,不能正確將面向?qū)ο蟮姆治鲈O(shè)計(jì)與數(shù)據(jù)庫(kù)理論真正結(jié)合起來。3.1類與類的關(guān)系類與類之間的關(guān)系可以分為三種:整體-部分結(jié)構(gòu)、一般-特殊結(jié)構(gòu)和實(shí)例連接關(guān)系。1整體-部分關(guān)系說整體-部分結(jié)構(gòu)的定義如下:如果對(duì)象A是對(duì)象B的一個(gè)組成部分,則稱B為A的整體對(duì)象,A為B的部分對(duì)象,并把B和A之間的關(guān)系稱作整體-部分關(guān)系。整體-部分結(jié)構(gòu)表現(xiàn)為“apartof”的關(guān)系,如發(fā)動(dòng)機(jī)與轎車、電腦與CPU等。2般-特殊類一般-特殊結(jié)構(gòu)的定義如下:如果類A具有類B的全部屬性和全部服務(wù),而且具有自己特有的某些屬性或服務(wù),則A稱為B的特殊類,B稱A的一般類。一般-特殊結(jié)構(gòu)表現(xiàn)為“is_a”或“akindof”的關(guān)系,即繼承關(guān)系,如蝴蝶與昆蟲、卡車與轎車、人與學(xué)生等。一般-特殊結(jié)構(gòu)使特殊類通過繼承而擁有一般類的特征,整體-部分結(jié)構(gòu)使整體對(duì)象通過組裝而擁有部分對(duì)象的特征。盡管途徑不同,但結(jié)果卻一致,即一些對(duì)象擁有另一些對(duì)象的特征。3對(duì)象的依賴關(guān)系實(shí)例連接用于表達(dá)對(duì)象之間的靜態(tài)聯(lián)系,是指最終可通過對(duì)象屬性來表示的一個(gè)對(duì)象對(duì)另一個(gè)對(duì)象的依賴關(guān)系。如上級(jí)與下級(jí)間、教師與學(xué)生的授課關(guān)系等。3.2嵌入部分對(duì)象整體-部分結(jié)構(gòu)有兩種實(shí)現(xiàn)方式:一是用部分對(duì)象的類作為數(shù)據(jù)類型,靜態(tài)地說明整體對(duì)象中代表部分對(duì)象的屬性變量,這樣部分對(duì)象就被嵌入到整體對(duì)象的屬性空間中,形成嵌套對(duì)象;二是把整體對(duì)象中的屬性變量定義成指向部分對(duì)象的指針或部分對(duì)象的對(duì)象標(biāo)識(shí),運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建部分對(duì)象,并使整體對(duì)象中的指針或?qū)ο髽?biāo)識(shí)指向它。22特殊結(jié)構(gòu)利用OO語言的繼承實(shí)現(xiàn)?;蛘邔⒁话?特殊結(jié)構(gòu)在建模時(shí)轉(zhuǎn)化為整體-部分結(jié)構(gòu),用整體-部分結(jié)構(gòu)的方法實(shí)現(xiàn)。3作為類的關(guān)聯(lián)實(shí)例連接的概念比較難以理解,尤其是復(fù)雜的實(shí)例連接。如用戶使用某個(gè)文件的關(guān)系,可能要求附加表明“優(yōu)先級(jí)”、“使用權(quán)限”等與這個(gè)關(guān)系密切相關(guān)的其他信息。本文引進(jìn)一種新的概念來解決這個(gè)問題,稱為“作為類的關(guān)聯(lián)”,關(guān)聯(lián)是一種類,既有屬性,又有操作,鏈(即實(shí)例連接)是關(guān)聯(lián)的對(duì)象實(shí)體。對(duì)象不僅可以用于表示有形的事物(如用戶、工作站),也可以用于表示無形的事物(如使用權(quán))。當(dāng)兩類對(duì)象之間的實(shí)例連接比較復(fù)雜時(shí)(帶有一些屬性或操作),說明在它們之間存在某種尚未用對(duì)象加以描述的事物。在上面的例子中,用戶與文件之間在建模時(shí)應(yīng)建立一個(gè)“使用權(quán)”類,該類的屬性有“優(yōu)先級(jí)”等,每種使用權(quán)可以給多個(gè)用戶,也可以給多個(gè)文件。故只要解決了以上三種關(guān)系,將數(shù)據(jù)庫(kù)理論應(yīng)用于面向?qū)ο蟮姆治觥⒃O(shè)計(jì)與實(shí)現(xiàn)則完全可能。3.3數(shù)據(jù)庫(kù)的設(shè)計(jì):繼承關(guān)系與組合屬性的組裝將一般-特殊結(jié)構(gòu)與整體-部分結(jié)構(gòu)是實(shí)現(xiàn)“一些對(duì)象可以擁有另外一些對(duì)象的特性”的兩種方式的理論加以推廣,即將父類的屬性組裝到子類中就有理論根據(jù)。在面向?qū)ο蟮姆治雠c設(shè)計(jì)中,數(shù)據(jù)庫(kù)僅是實(shí)現(xiàn)永久屬性保存的一種輔助。因此,在分析階段,無需轉(zhuǎn)化為數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)的整體-部分關(guān)系。在數(shù)據(jù)庫(kù)的設(shè)計(jì)階段,將具有繼承關(guān)系、而又需要永久保留的屬性考慮用組裝的方法。組裝父類、子類屬性的方法可以分為緊密組裝與連接組裝。緊密組裝是指父類的屬性直接與子類的屬性組裝在一起,共同形成子類的數(shù)據(jù)庫(kù)結(jié)構(gòu)。連接組裝是父類的屬性與子類的屬性并不在同一個(gè)實(shí)際數(shù)據(jù)庫(kù)中,它們各自所在的數(shù)據(jù)庫(kù)通過某個(gè)字段相聯(lián)系,如數(shù)據(jù)庫(kù)理論中常見的Master-Detial結(jié)構(gòu)。如果父類的已有對(duì)象實(shí)體已經(jīng)用數(shù)據(jù)庫(kù)管理,尤其是子類的對(duì)象實(shí)體可能是父類已有實(shí)體的某些特性擴(kuò)充時(shí),子類與父類間應(yīng)該用連接組裝。按照連接組裝的概念,在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),除了要在子類的屬性數(shù)據(jù)庫(kù)中有對(duì)象實(shí)體的唯一標(biāo)識(shí)字段外,還要有標(biāo)定該對(duì)象實(shí)體與父類屬性數(shù)據(jù)庫(kù)中相應(yīng)對(duì)象實(shí)體相連接的字段。3.4“可能擁有的所有屬性”在子類的“取出”服務(wù)中,首先實(shí)例化出一個(gè)子類空對(duì)象(所有屬性值均為初始值的對(duì)象),此時(shí),這一實(shí)例化的子類空對(duì)象已經(jīng)從父類中繼承了所有的屬性。對(duì)于緊密組裝,由于父類與子類的屬性值全部都緊密地組裝在一個(gè)數(shù)據(jù)庫(kù)中,將數(shù)據(jù)庫(kù)中相應(yīng)對(duì)象各字段的值賦予子類可能擁有的所有屬性即可。這里,“可能擁有的所有屬性”包括了從父類繼承過程的屬性,從而最終返回這一具有實(shí)際意義的對(duì)象實(shí)體。對(duì)于連接組裝,由于子類數(shù)據(jù)庫(kù)中只有相對(duì)父類特殊的屬性,所以除了從子類屬性的保存數(shù)據(jù)庫(kù)中取出子類的特殊屬性值外,還要用連接找到父類對(duì)應(yīng)的屬性保存數(shù)據(jù)庫(kù),取出其屬性值,給這一實(shí)例中的相應(yīng)屬性賦值。由此,即產(chǎn)生了一個(gè)包括全部父類、子類屬性的對(duì)象。當(dāng)“取出”服務(wù)根據(jù)屬性所在的類實(shí)例化出一個(gè)對(duì)象時(shí),其空對(duì)象已經(jīng)具有了該類所有的一切服務(wù),包括從父類中繼承的所有服務(wù)。當(dāng)這個(gè)類所有的屬性值(包括從父類中繼承的)賦值完成后,一個(gè)可跨越系統(tǒng)的運(yùn)行期而存在、系統(tǒng)中曾經(jīng)實(shí)例化的已有的對(duì)象實(shí)體就被完整地還原出來了。組裝連接可以解決多重繼承的關(guān)系,一方面使各自的對(duì)象可以封裝得更好,另一方面也產(chǎn)生了新的問題,即如何解決在組裝連接中修改(無論是錄入性修改還是程序觸發(fā)性修改)子類中從父類繼承下來的已經(jīng)永久保留的屬性。3.5數(shù)據(jù)庫(kù)的虛擬實(shí)現(xiàn)所謂多態(tài)是指一個(gè)服務(wù)有多種算法或?qū)崿F(xiàn),即一個(gè)相同的服務(wù)名可以具有不同的實(shí)際實(shí)現(xiàn)。對(duì)于永久對(duì)象屬性的錄入性修改,重新設(shè)計(jì)錄入界面時(shí),將屬性錄入并存盤即可。對(duì)于永久對(duì)象屬性的程序觸發(fā)性修改,修改的服務(wù)必須是虛擬的,如果屬性所在的實(shí)際數(shù)據(jù)庫(kù)與原服務(wù)所處理的數(shù)據(jù)庫(kù)不同,必須針對(duì)實(shí)際的數(shù)據(jù)庫(kù)另行設(shè)計(jì)算法,即實(shí)現(xiàn)虛擬。例如:有一輛“奧拓”與轎車是繼承關(guān)系,系統(tǒng)存在2個(gè)數(shù)據(jù)庫(kù),一個(gè)是一般類轎車數(shù)據(jù)庫(kù),記錄的轎車對(duì)象的已有實(shí)體,另一個(gè)是“奧拓”數(shù)據(jù)庫(kù),記錄的是“奧拓”對(duì)象的已有實(shí)體,“奧拓”數(shù)據(jù)庫(kù)對(duì)父類的發(fā)動(dòng)狀態(tài)屬性采用緊密組裝,系統(tǒng)要求對(duì)所有的轎車初始化置停止?fàn)顟B(tài)。在OO語言實(shí)現(xiàn)時(shí),只需用一般轎車(最高層父類)的ChangeState服務(wù)遍歷所有轎車(包括一般轎車與“奧拓”)即可。這樣,就必須分別為一般轎車設(shè)計(jì)一個(gè)ChangeState服務(wù),這個(gè)服務(wù)是虛擬的,修改是一般類轎車的數(shù)據(jù)庫(kù),子類“奧拓”必須針對(duì)“奧拓”的數(shù)據(jù)庫(kù)結(jié)構(gòu)重新編寫ChangeState服務(wù),當(dāng)系統(tǒng)通過父類的ChangeState遍歷到“奧拓”(子類)的實(shí)體時(shí),OO語言的編譯系統(tǒng)將根據(jù)多態(tài)的原則,認(rèn)為子類的ChangeState是真正要調(diào)用的服務(wù)。3.6通過實(shí)例連接數(shù)據(jù)庫(kù)連接起來實(shí)例連接的實(shí)現(xiàn)用數(shù)據(jù)庫(kù)實(shí)現(xiàn)非常容易,實(shí)現(xiàn)的方法是將實(shí)例連接類建庫(kù),將實(shí)例連接的屬性組成數(shù)據(jù)庫(kù)結(jié)構(gòu),同時(shí)將實(shí)例連接的兩端也加入到數(shù)據(jù)庫(kù)結(jié)構(gòu)中,使兩個(gè)數(shù)據(jù)庫(kù)通過實(shí)例連接數(shù)據(jù)庫(kù)連接起來。如操作員與工作站之間的“使用權(quán)”實(shí)例連接,使用權(quán)數(shù)據(jù)庫(kù)除了要有“使用權(quán)限”等屬性外,還應(yīng)加上操作員編號(hào)及工作站編號(hào)兩個(gè)屬性。值得注意的是,操作員編號(hào)及工作站編號(hào)并不是“使用權(quán)”類的屬性,即在分析建模時(shí),這些屬性并不是“使用權(quán)”的類屬性,但在“使用權(quán)”的已實(shí)例化對(duì)象實(shí)體中,必須表明“誰用什么使用權(quán)使用哪臺(tái)工作站的”關(guān)系,因此記錄已實(shí)例化對(duì)象實(shí)體的數(shù)據(jù)庫(kù)必須有操作員編號(hào)及工作站編號(hào)兩個(gè)屬性。4實(shí)現(xiàn)了相關(guān)概念的統(tǒng)一本文提出的方法成功地解決了數(shù)據(jù)庫(kù)在類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025藥店轉(zhuǎn)讓合同協(xié)議書店鋪轉(zhuǎn)讓合同范本
- 傳遞快樂游戲題目及答案
- 初中修改病句題目及答案
- 楚雄法院面試題庫(kù)及答案
- 初中足球考試試題及答案
- 初中信息考試試題及答案
- 中國(guó)家政O2O行業(yè)政策、市場(chǎng)規(guī)模及投資前景研究報(bào)告(智研咨詢發(fā)布)
- 初中美術(shù)考試試題及答案
- 初中安全考試試題及答案
- 特種設(shè)備q1作業(yè)證考試試題及答案
- 15電泳件的檢驗(yàn)標(biāo)準(zhǔn)
- 抑郁病診斷證明書
- 中國(guó)歷史地理概述 第三版
- “創(chuàng)客中國(guó)”中小企業(yè)創(chuàng)新創(chuàng)業(yè)大賽大賽評(píng)分標(biāo)準(zhǔn)
- 維克多高中英語3500詞匯
- 2023年?duì)I口中考語文(四篇)
- 高考地理復(fù)習(xí)課件:摩爾曼斯克(共12張PPT)
- 關(guān)節(jié)型機(jī)器人腕部結(jié)構(gòu)設(shè)計(jì)(全套,CAD有圖)
- 帶傳動(dòng)教學(xué)課件
- 部編語文八年級(jí)語文下冊(cè)專題復(fù)習(xí)課件
- 2021年英語專業(yè)四級(jí)TEM4考試真題和答案
評(píng)論
0/150
提交評(píng)論