




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十三章面向對象數據庫系統本章主要內容及重點:面向對象數據庫系統的基本概念。第十三章面向對象數據庫系統13.1面向對象程序設計方法13.2面向對象數據模型13.3面向對象數據庫建模13.4對象-關系數據庫第十三章面向對象數據庫系統13.1面向對象程序設計方法
13.1面向對象程序設計方法第十三章面向對象數據庫系統面向對象的數據庫系統(ObjectOrientedDatabaseSystem,簡稱OODBS)是數據庫技術與面向對象程序設計方法相結合而產生的數據庫系統。三條線路展開:1.以關系數據庫和SQL為基礎的擴展關系模型。Informix、DB2、Oracle、Sybase等。2.以面向對象的程序設計語言為基礎,研究持久的程序設計語言,支持OO模型。3.建立新的面向對象數據庫系統,支持OO模型。一、面向對象的程序設計方法二、對象和類的概念三、結構化程序設計和面向對象的程序設計13.1面向對象程序設計方法第十三章面向對象數據庫系統一、面向對象的程序設計方法
是一種支持模塊化設計和軟件重用的實際可行的編程方法。它把程序設計的主要活動集中在建立對象和對象之間的聯系(或通信)上,從而完成所需要的計算。一個面向對象的程序就是相互聯系(或通信)的對象集合。13.1面向對象程序設計方法第十三章面向對象數據庫系統對象1對象2對象3對象4基本思想是封裝和可擴展性。二、對象和類的概念
1.對象客觀世界中任何一個事物都可以看成一個對象。對象是以對象名封裝的數據結構和可施加在這些數據上的私有操作。如:學校、一個班級、軍隊中的一個團、一個連都是對象。
(1)作為對象,它應該至少有兩個要素:①從事活動的主體:如班級中的學生②活動的內容:如上課、開會等。
13.1面向對象程序設計方法第十三章面向對象數據庫系統
(2)從計算機角度看,一個對象應包括兩個要素:
①數據:相當于班級中的學生。數據結構描述了對象的狀態。②需要進行的操作:相當于學生進行的活動。對象的操作就是對象的行為。如:定義一個學生對象,其狀態由:“學號、姓名、性別、專業號、年齡”等屬性組成,其行為由:“顯示學生信息、增加一個學生、刪除一個學生”等操作組成。13.1面向對象程序設計方法第十三章面向對象數據庫系統對象數據操作代碼
從計算機角度看,對象就是一個包含數據以及與這些數據有關的操作的集合。13.1面向對象程序設計方法第十三章面向對象數據庫系統
2.類①描述有一些對象是具有相同的結構和特性的。類代表了某一批對象的共性和特征。每個對象都屬于一個類型。
對象的類型就是類。②類和對象
類是對象的抽象,而對象是類的具體實例。三、結構化程序設計和面向對象的程序設計1.傳統的面向過程的程序設計是圍繞功能進行的,用一個函數實現一個功能。所有的數據都是公用的,一個函數可以使用任意一組數據,而一組數據又能被多個函數所使用。
程序設計者必須考慮每一個細節,什么時候對什么數據進行操作。當程序規模較大,數據很多,操作繁多時,程序設計者往往感到難以應付。
2.面向對象程序設計方法的一個重要特點就是“封裝性”,把數據和操作代碼封裝在一個對象中。面向對象程序設計面對的是一個個對象。所有的數據分別屬于不同的對象把相關的數據和操作放在一起,形成一個整體,與外界相對獨立。
實際上,每一組數據都是有特定用途的,是某種操作的對象。
13.1面向對象程序設計方法第十三章面向對象數據庫系統3.面向對象程序設計的可擴展性體現在繼承性和行為擴展兩方面。繼承性是因為對象有層次關系,父對象有子對象,子對象繼承父對象的數據結構和操作。實際上是一種重用。行為擴展是指增加對象的行為。
程序設計者的任務包括兩個方面:(1)設計對象,即決定把那些數據和操作代碼封裝在一起;(2)在此基礎上怎樣通知有關對象完成所需的任務。13.1面向對象程序設計方法第十三章面向對象數據庫系統一、面向對象數據庫模型二、OO模型的核心概念13.2面向對象數據模型第十三章面向對象數據庫系統一、面向對象數據庫模型
面向對象數據模型(ObjectOrientedDataModel,簡稱OO模型)是用面向對象觀點來描述現實世界實體(對象)的邏輯組織、對象間限制、聯系等的模型。是一種可擴充的數據模型,在該數據模型中,數據模型是可擴充的,即用戶可根據需要,自己定義新的數據類型及相應的約束和操作。
面向對象數據庫系統是一個持久的、可共享的對象庫的存儲和管理者;而一個對象庫是由一個OO模型所定義的對象的集合體。13.2面向對象數據模型第十三章面向對象數據庫系統二、OO模型的核概念
一系列面向對象核心概念構成了OO模型的基礎。1.對象與對象標識OID(1)對象結構屬性集合每一個對象都有各自的狀態、組成和特性,稱為對象的屬性。屬性可能是一個簡單的值,也可能是其他對象,即對象的嵌套,并且這種嵌套可以繼續下去,從而組成各種復雜的對象。
所有屬性合起來構成了對象數據的數據結構。13.2面向對象數據模型第十三章面向對象數據庫系統方法集合方法是對象的行為特性。方法可改變對象的狀態,對對象進行各種操作。方法的定義包含兩個部分:
一是方法的接口,又稱調用說明,說明方法的名稱、參數和結果類型;
二是方法的實現部分,它是用程序設計語言編寫的一個過程,以實現方法的功能。13.2面向對象數據模型第十三章面向對象數據庫系統消息集合對象是封裝的,即每一個對象是其狀態和行為的封裝。消息是對象間通信的手段。一個對象通過向另一個對象發送消息來請求服務。
方法是在數據定義的過程中定義的。為了真正執行一個方法中的步驟,用戶必須向對象發送消息。消息傳送給對象,調用對象的相應方法,進行相應的操作,最后,以消息形式返回操作的結果。一條消息是一個執行方法的請求。包括:接收對象名調用的操作適當的參數13.2面向對象數據模型第十三章面向對象數據庫系統(2)對象標識面向對象數據庫中的每個對象都有一個唯一的不變的標識,稱為對象標識(OID)。
OID是獨立于屬性值的,系統全局唯一的。一個對象的OID不會隨著它的屬性值的改變而改變。
常用的幾種標識:值標識(關系數據庫中的元組)名標識(程序變量)內標識(面向對象數據庫)
標識的幾種持久性:程序內持久性:變量名程序間持久性:關系名永久持久性:對象標識13.2面向對象數據模型第十三章面向對象數據庫系統(3)封裝封裝是對象的外部界面與內部實現之間實行清晰隔離的一種抽象,外部與對象的通信只能通過消息,這是OO模型的主要特征之一。封裝提高了數據的獨立性,程序的可靠性。也帶來了查詢的不便,失去了關系數據庫的重要優點。13.2面向對象數據模型第十三章面向對象數據庫系統2.類、類的層次和類的繼承(1)類的概念具有相似特性的對象集合為類,是型的概念。類中的每個對象稱為類的一個實例,是值的概念。一個類中的所有對象其特性必須相同,即具有相同的屬性、響應相同的消息、使用相同的方法。類的概念相當于關系模型中的關系模式,類的一個實例對象類似關系中的一個元組,類的實例之間和類之間可以有復雜的聯系。面向對象數據庫模式是類的集合。13.2面向對象數據模型第十三章面向對象數據庫系統(2)類層次
超類:一個類的父類。
類層次:一個超類的子類還可以定義子類,一組類形成一個有限的層次結構。一組類可以形成一個類層次,一個面向對象數據庫模式可能有多個類層次。在一個類層次中,一個類繼承其所有超類的全部屬性。13.2面向對象數據模型第十三章面向對象數據庫系統超類/子類體現了“ISA”語義。(3)繼承單繼承:一個子類只能繼承一個超類的特性(屬性、方法和消息)。多繼承:若一個子類能繼承多個超類的特性。
13.2面向對象數據模型第十三章面向對象數據庫系統兩個優點:①建模的有力工具,提供了對現實世界簡明而精確的描述。②提供了信息重用機制。避免重復定義。(4)對象的嵌套對象的層次結構:對象的某一個屬性可以是單值或值的集合。即一個對象的屬性可以是一個對象。形成對象間的嵌套層次結構。對象嵌套概念是面向對象數據庫系統中又一個重要概念,它允許用戶采用不同的粒度來觀察對象。13.2面向對象數據模型第十三章面向對象數據庫系統一、面向對象數據庫語言二、面向對象數據庫建模13.3面向對象數據庫建模第十三章面向對象數據庫系統一、面向對象數據庫語言(OODB語言)
13.3面向對象數據庫建模第十三章面向對象數據庫系統
OODB語言用于描述面向對象數據庫模式,說明并操縱類定義與對象實例。(1)類的定義與操縱(ODL)
包括定義、生成、存取、修改與撤銷類。其中類的定義包括定義類的屬性、操作特征、繼承性與約束等。(2)操作/方法的定義在操作實現中,語言的命令可用于操作對象的局部數據結構。對象模型中的封裝性允許操作/方法由不同程序設計語言來實現,并且隱藏不同程序設計語言實現的事實。(3)對象的操縱(OML)
可以用于操縱(即生成、存取、修改與刪除)實例對象。二、面向對象數據庫建模
面向對象數據庫的模型描述工具ODL((ObjectDefinitionLanguage:對象定義語言),它是CORBA(正在制定的分布式面向對象計算的標準)的一個組件。ODL是從設計者的角度觀察數據的結構,與具體的DBMS無關。所以,ODL和E-R圖一樣,是建立數據庫概念模型的工具,它們都可以向DBMS支持的數據模型轉化,如圖所示。13.3面向對象數據庫建模第十三章面向對象數據庫系統13.3面向對象數據庫建模第十三章面向對象數據庫系統1.ODL的類說明在對象的定義中主要包括以下幾個部分:①關鍵字Interface(接口);②類的名字;③類的特性表,可以是屬性、聯系、方法。ODL類說明的最簡單形式是:
Interface<類名字>{<特性表>};2.ODL中屬性的說明屬性是類的一種最簡單的特性。例:利用ODL描述職工(employee)類,語句如下:
interfaceemployee{
attributestringname;
attributeintegerage;
attributeenumsextype{male,female}sex;};13.3面向對象數據庫建模第十三章面向對象數據庫系統說明:第一行說明employee是一個類;第二行說明屬性name,其類型是string,即長度未知的字符串;第三行說明屬性age,類型是整型;第四行說明屬性sex,其類型是枚舉型,枚舉類型名字為sextype,sex的值從male或female中選擇。這是employee類的說明,任何一個employee對象在這幾個屬性上均對應一個分量。13.3面向對象數據庫建模第十三章面向對象數據庫系統3.ODL中的聯系為了得到對象與同類或不同類的其他對象的連接方式,需要在類的定義中說明類與類之間的聯系。如職工類與部門類之間有聯系。一個職工對象總與某個部門對象有關系(工作關系)。在employee類說明中,可用下面的ODL語句表示這種聯系:
Relationshipdepartmentworkin;
該語句說明在employee類中的每個對象,都有一個對department對象的引用,引用名為workin。13.3面向對象數據庫建模第十三章面向對象數據庫系統4.ODL中的類的繼承假設類D是類C的子類,那么在定義類D時,可以在后加上“:C”,說明類D是類C的子類,并可繼承類C的所有特性。例:定義類manager(部門經理)為employee的子類。
interfacemanager:
employee{Relationshipdepartmentlead};
語句說明:第一行說明類manager是類employee的子類;第二行表明所有的manager對象都有一個聯系lead,表示該經理所管理的部門,并且一位經理只能管理一個部門。
13.3面向對象數據庫建模第十三章面向對象數據庫系統在多重繼承時,特性名之間可能會發生沖突。如兩個或多個超類可能有同名的屬性或聯系,而這些特性的類型可能不同。在ODL中提供以下幾種機制來建立解決多重繼承產生的沖突:指出超類特性的多個定義中哪一個用于子類;在子類中,對于有相同名字的另一個特性給一個新的名字;在子類中重新定義一個或多個超類中已定義的某些特性。13.3面向對象數據庫建模第十三章面向對象數據庫系統5.ODL中方法的說明類的另一個特性是方法,方法是與類相關的函數。類中的每一個對象都能引用方法,同一方法可用于多個類,這是面向對象語言的特點。方法說明中主要有方法名、方法的輸入/輸出類型說明等。而方法的實際代碼是用宿主語言寫的,代碼本身不是ODL的一部分。13.3面向對象數據庫建模第十三章面向對象數據庫系統6.E-R模型向面向對象數據模型的轉換當建立了現實世界的E-R模型以后,可將其轉換為OO模型。轉換時,可按照以下的步驟進行:(1)將E-R模型中的每個實體集生成一個類,實體集的屬性轉換為類的屬性。(2)將E-R模型中具有ISA聯系的實體集生成的類之間建立類/子類關系。(3)在轉換得到的類中加入聯系的說明:①對原E-R模型中有一對一聯系的實體集,在其生成的類中,都加入聯系說明,說明其和另一個類中的一個對象有關。13.3面向對象數據庫建模第十三章面向對象數據庫系統②對原E-R模型中有一對多聯系的實體集,在一方生成的類中,加入聯系說明,說明其和另一個類中的對象集合有關;在多方生成的類中,加入聯系說明,說明其和另一個類中的一個對象有關。③對原E-R模型中有多對多聯系的實體集,在其生成的類中,都加入聯系說明,說明其和另一個類中的對象集合有關。13.3面向對象數據庫建模第十三章面向對象數據庫系統1990年,以MichaelStonebraker為首的高級DBMS功能委員會發表了“第三代數據庫系統宣言”的文章,提出一個面向對象數據庫系統必須具有兩個條件:一是支持一核心的面向對象數據模型;二是支持傳統數據庫系統所有的數據庫特性。雖然面向對象數據庫系統在一些特定應用領域(例如CAD等)較好地滿足了其應用需要,但是,這種純粹的面向對象數據庫系統并不支持SQL,在通用性方面失去了優勢,其應用領域受到很大的局限性。13.4對象-關系據庫第十三章面向對象數據庫系統而同時,面向對象技術和數據庫技術相結合的另一個產物————對象―關系數據庫管理系統(ORDBMS)卻得到了快速的發展。
ORDBMS是將傳統的關系數據庫加以擴展,增加面向對象特性,既支持已被廣泛使用的SQL,具有良好的通用型,又具有面向對象特性,支持復雜對象和復雜對象的復雜行為,適應了新應用領域的需要和傳統應用領域發展的需要。正在制定中的國際標準SQL3也體現了ORDBM特性。13.4對象-關系據庫第十三章面向對象數據庫系統
ORDBMS在SQL環境中主要增加了以下四個特征:·對基本類型擴充的支持;·對復雜對象的支持;·對繼承性的支持;·對產生式規則系統的支持。13.4對象-關系據庫第十三章面向對象數據庫系統一、基本數據類型的擴充目前的RDBMS中只支持固定的數據類型集、操作符和少量的函數。而ORDBMS中具有可擴充的數據類型、函數和操作符。
Illustra把一組數據類型及其上的有關函數和操作符、訪問方法進行封裝,稱為DataBlade(數據刀片)模塊。13.4對象-關系據庫第十三章面向對象數據庫系統1.創建基本數據類型創建一個新的數據類型需要指明類型名、類型的存儲信息和該數據類型同ASCII來回轉換的子程序。例如:CreateTypeMytype(
Internallength=8,Input=MytypeInput,
Output=MytypeOutput);13.4對象-關系據庫第十三章面向對象數據庫系統該SQL語句創建了用戶自定義的數據類型Mytype,其中Internallength指明存儲該類的實例時將分配到的字節數,兩個函數MytypeInput和MytypeOutput分別是在該數據類型的實例同ASCII之間轉換時調用的輸入、輸出例程,該例程可以用于加密、解密運算等,也可以什么都不做。另外,創建數據類型時還可以包含約束,方便數據的完整性檢查并拒絕不合適的數據輸入。13.4對象-關系據庫第十三章面向對象數據庫系統2.用戶自定義函數
ORDBMS中既可以用SQL也可以用第三代編程語言(例如C等)編寫函數,然后把函數注冊到系統中以供調用。函數定義中必須指明函數名、參數、返回值類型以及函數的執行代碼,命令格式為:
CreateFunction函數名(類型1,類型2,…)
Returns類型AS(文件名或SQL語句表達式);13.4對象-關系據庫第十三章面向對象數據庫系統例如:在職工表Employee中,假設有工資字段Salary,可定義一個函數,用來計算每個職工的工資與平均工資的差別:
CreateFunctionDiff-salary(float)
Returnsfloatas
Select$1―AVG(salary)
Fromemployee;
然后就可以在數據的操作中自由運用函數Diff-salary了。13.4對象-關系據庫第十三章面向對象數據庫系統例如:查詢所有職工的姓名及其與平均工資的差別,可表示成:
Selectname,Diff-salary(Salary)Fromemployee;自定義函數也可以是C語言程序,在此不作介紹。13.4對象-關系據庫第十三章面向對象數據庫系統3.用戶自定義操作符在Illustra系統中,用CreateOperator命令來登記操作符,形式如下:
CreateOperator
Binding操作符名
To函數名;說明中允許用戶用任何符號作為操作符,并把它賦給一個指定的函數。13.4對象-關系據庫第十三章面向對象數據庫系統二、支持復雜對象復雜對象是由多種基本的或用戶定義的類型構成的對象。在ORDBMS中創建復雜對象的構件有:組合、集合、引用、數組、列表、堆棧等,其中最基本的是前面三種。1.使用組合構造對象構造一個組合類型,需要指明該類型的名字、每一個組成成分的名字和類型。組合類型的成分也可以是另一個組合類型,即組合類型可以嵌套使用。13.4對象-關系據庫第十三章面向對象數據庫系統定義一組合photo-t,由國家號(country-num)、區號(area-num)和電話號碼(tele-num)組成:
CreateTypephoto-t(country-numvarchar(4),area-numvarchar(4),tele-numvarchar(8));13.4對象-關系據庫第十三章面向對象數據庫系統組合類型創建好后,就可以在創建表時使用:
CreateTableemployee(
Namevarchar(10),Ageinteger,
Salaryfloat,
Photophoto-t);`
為了對組合進行操作,ORDBMS對標準SQL進行了擴充,提供多種方法使用組合或組合對象的屬性。如路徑表達式的使用:組合名.屬性名。13.4對象-關系據庫第十三章面向對象數據庫系統例如:查詢職工(如胡一民)的電話號碼:
Selectphoto.tele-numFromemployeeWherename="胡一民";13.4對象-關系據庫第十三章面向對象數據庫系統2.使用集合構造對象在ORDBMS中任何一種數據類型值的集合也是一種數據類型,表示成:
Setof(T)
其中T可以是基本數據類型,也可以是組合數據類型。例如:查詢所有杭州地區職工的電話號碼:
Selectname,photo.tele-num
FromemployeeWhere′0571′inphoto.area-num;photo.area-num是一個集合,如果集合中有0571,則Where條件為真。13.4對象-關系據庫第十三章面向對象數據庫系統3.使用引用構造對象在ORDBMS中任何一種數據類型值的引用也是一種數據類型,表示成:
Ref(T)
其中T可以是集合或組合數據類型。引用可以作為任何表的任何列的數據類型。13.4對象-關系據庫第十三章面向對象數據庫系統三、支持繼承
ORDBMS的第三個特性是支持子類對超類的各種特性的繼承,包括數據繼承和函數繼承,單繼承和多重繼承。首先考慮類型的繼承,假如在前面圖所示的數據庫中,有如下關于人的類型定義:
CreateTypePerson(
identifyinteger,namevarchar(10),
sexchar(2));13.4對象-關系據庫第十三章面向對象數據庫系統在數據庫中需要對學生和教師分別存儲一些信息。由于學生和教師同樣是人,因而可以使用繼承來定義學生和教師類型如下:
CreateTypeStuednt(
degreevarchar(10),
departmentvarchar(20))underPerson;CreateTypeTeacher(
salaryinteger,
departmentvarchar(20))underPerson;13.4對象-關系據庫第十三章面向對象數據庫系統
Student和Teacher都繼承了Person的屬性,即identify和name。Student和Teacher稱為Person的子類,Person既是Student的超類,也是Teacher的超類。假定要存儲關于在職研究生的信息,這些研究生既是教師又是學生,甚至可能是不同的系。如果類型系統支持多重繼承,可以為在職研究生定義類型如下:
CreateTypeTeachStudentunderStudent,Teacher;TeachStudent應該繼承Student和Teacher的所有屬性,但這引起了另一個問題:屬性identify、name和department同時存在于Student和Teacher表中。13.4對象-關系據庫第十三章面向對象數據庫系統屬性identify和name都是從類Person中繼承來的,因此同時從Student和Teacher中繼承這兩個屬性不會引起沖突。但Student和Teacher中都有department定義,由于一個在職研究生可能是一個系的研究生,同時是另一個系的教師,為避免方式沖突,可以使用as子句將它重新命名,下面是重新命名后的TeachStudent類型:
CreateTypeTeachStudent
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 爺孫房屋繼承協議書
- 沒合同簽保密協議書
- 社區房屋分配協議書
- 申請貸款用途協議書
- 私人遺物交接協議書
- 烤煙轉讓承包協議書
- 海南轉讓汽車協議書
- 物流運輸賠償協議書
- 2025屆浙江省泉山市臺商投資區七年級生物第二學期期末綜合測試模擬試題含解析
- 老舊單車購買協議書
- 產品追溯及模擬召回演練計劃
- 舒普電子套結機的設置和保養
- 植物中鐵的作用及缺鐵癥狀圖文演示文稿
- 合同到期協議書(3篇)
- 2022年教學教材《石油裂解與乙烯》精品優秀教案
- IPC-A-610國際標準中英文對照(doc 17)
- 山大《毛澤東思想和中國特色社會主義理論體系概論》教案第3章 社會主義改造理論
- 部編版四年級下冊語文全一冊期末總復習—重點歸納整理
- (國開)2019年春電大本科水利水電工程造價管理形考3答案
- 金普新區預防性體檢人員審核表
- 礦山地質環境保護與治理恢復方案編制規范2011
評論
0/150
提交評論