面向對象的數據庫
隨著近年來面向對象技術的興起,面向對象方法在數據庫應用領域也日益顯示出其強大的生命力,其中主要的原因在于對象模型能夠更好地描述復雜的對象,更好地維護復雜的對象語義信息。由于多媒體數據的特殊性,模型對象數據庫的這種機制正好滿足了多媒體數據庫在建模方面的要求。但我們必須指出,面向對象數據庫并不等于多媒體數據庫,它們在很多方面研究的側重點是不同的。
對象、屬性、方法、消息的概念
對象 在面向對象的系統中,現實世界中所有概念實體都將模型化成為對象。對象由實體所包含的數據和定義在這些數據上的操作組成。
屬性 組成對象的數據就稱為對象的屬性。對象的屬性可以是系統或用戶定義的數據類型,也可以是一個抽象的數據類型,也就是說,組成對象的某個屬性本身可能仍然是一個對象,具有自己的屬性和定義在屬性上的操作。屬性的這種本身仍然可以是對象的性質,可以方便地用來描述不同對象之間的聯系。
方法 定義在對象屬性上的一組操作稱為對象的方法。方法體現了對象的行為能力,它與屬性一樣是對象的組成部分。在對象這個抽象層次上,我們用戶只需要了解對象的外部特征,即對象具有哪些處理能力,而不需要了解其內部構成,包括數據和處理能力的實現方法。
消息 在面向對象的系統中,對象之間的通信和請求對象完成某種處理工作是通過消息傳送實現的。消息傳送相當于一個間接的過程調用。對象對它能夠接受的每一個消息有一個相應的方法解釋消息的內容,并執行消息指示的操作。一個對象可以同時向多個對象發送消息,也可以接受多個對象發送的消息。由于消息內容由接受消息的對象解釋,同樣的消息可能被不同對象解釋為不同的含義。
對象的劃分與界定
實際上,對于對象的劃分與界定我們可以用一個概念――“對象封裝”來表示。從數據存儲的角度來看,所謂封裝就是把一個個對應具體事物的數據集合明確地定義為一個個對象,并以對象作為數據庫存儲和訪問的基本單位。這里有兩點值得注意:第一,既然封裝的數據對象是對應某一具體事物屬性、特征的數字描述,那么,由于客觀事物是運動的、動態變化的,對象封裝的數據也應該體現這種動態性,所以在面向對象技術中,強調應該把數據與訪問這些數據的有關程序一起封裝到對象之中。程序實際上就是對數據如何進行處理和可能進行哪些處理的一種描述,所以,程序也是一種信息類型,一種特殊的動態數據。程序在未執行時,是以一種二進制數字代碼文件方式存儲或傳輸的,計算機網絡或通信網絡也把它當成一種廣義的數據看待;程序在執行時對有關數據進行處理、操作,體現了客觀事物屬性、特征的動態變化。所以,在面向對象數據庫中,把數據與其相關的程序封裝在一起,能夠更準確地體現客觀事物的動態特征,也體現系統的動態性和生命力。如果存儲的靜態數據永遠不去訪問和使用它,那么,所存儲的數據信息將失去其價值,也有人稱為信息“腐爛”了。第二,對象封裝的定義是一個邏輯的概念,封裝在一個對象中的數據或程序可以是實際上集中在一起的,也可以是分布的,甚至可以分布在網絡中的不同通信點上,重要的是封裝的對象要有一個清楚的界限和一個明確的對外聯系的接口。這樣,我們就可以把對象的內部和對象的定義與實現分開,從而使內部內容受到保護,使數據信息內容更為隱蔽。所以,對象封裝技術,有時也稱為是一種信息隱蔽技術。
對象在多媒體中的應用
既然對象在計算機網絡和通信網絡中是對某種事物屬性、特征的數字化的描述,而客觀事物屬性、特征又通常是以多媒體――多種信息類型綜合表現的,那么用對象作為存儲多媒體信息的基本單位,用面向對象方法構造數據庫來解決多媒體信息的存儲、檢索和管理也就順理成章了。例如,一幅圖像、一首歌曲、一部包括伴音的電影以至一篇文章,都可以與它們對應的訪問程序、操作方法封裝在一起,作為一個個對象存儲。關系型數據庫主要面向數值、字符等比較簡單的數據類型,而面向對象數據庫則不限制存儲數據的類型,自然支持多媒體的任何結構和類型的數據,包括綜合的多媒體數據和允許用戶自行定義的任何類型數據。允許用戶自行定義數據類型進行存儲,被認為是面向對象數據庫方法的一個重要特點,也是面向對象數據庫能夠支持多媒體信息存儲的一種體現。
對象的繼承性與可重復利用性
對象的繼承性與可重復利用性,是面向對象數據庫技術的基礎。在現實世界中,事物是以其不同屬性和特征進行區分的,以其相同屬性而聯系的,這是系統劃分子系統形成系統層次結構的基本概念與方法。它是面向對象數據庫中形成對象數據模型和實現對數據存儲、訪問和管理的重要基礎。俗話說物以類聚,把許多具有一定共同屬性、特征的對象集合在一起,就可以形成一類對象或稱為一個對象類,例如,黃種人、黑種人、白種人都具有能夠思維、能夠使用工具等人類的共同屬性而形成人類,人類就是一個對象類,稱為人類對象;反過來,黃種人、黑種人、白種人又都是人類對象的一個個實例,稱為實例對象。這樣分類以后,在類對象中只定義這一類對象的共同屬性――人類的共性,而在實例對象中只定義各種人的不同個性――不同的膚色等。這體現了認識客觀世界常用的兩種方法:綜合與分析方法。綜合方法從不同具體事物屬性、特征中歸納其共同特征,認識事物之間的聯系和本質特征;分析方法從相似事物屬性中分析其不同特征,認識事物之間的差異,以更深刻地認識具體事物。
面向對象方法中引入類的概念后,可以極大地減少數據存儲的重復和提高訪問效率,因為同一類數據中的相同數據和對這類數據的相同操作程序,都可以集中封裝在一個類對象中,為屬于這個類對象的所有實例對象所共享。共享的實現是與面向對象方法中的繼承概念相聯系的,因為實例對象自動繼承它所屬類對象的所有屬性和特征,當訪問具體實例對象時,就可以根據其在對象類別當中的位置,自動調用它屬于的類對象中的操作程序。這種對象屬性的繼承性,大大提高了共用程序和數據的可重用性。
對象之間的“交流”
對象之間的“交流”是對面向對象數據庫訪問的基礎。如果我們把面向對象數據庫看成是一個系統,那么存儲于面向對象數據庫中按照一定數據模型和結構關系組織起來的數據對象,就是這個系統中的一個個子系統。數據對象的封裝和數據對象之間的聯系,要求為對象之間的通信交流設計一種規范的方法,我們稱之為消息傳遞,它既是對象之間信息傳遞的一種通信協議,又是每個封裝對象與外界聯系的途徑。封裝在對象內部的程序及對有關數據的操作,只能由接收外部的消息來啟動和執行。因此,敏感對象所能夠接收的消息,實際上是根據對象中可能的操作來決定的。每一類操作設計一類消息,我們稱之為消息模式,它規定了消息的基本格式。在給定的消息模式中設定一定參數,就可以形成具體的消息,對應對象中的各種具體操作。一個對象可以接受多種消息模式,對應對象內部的多種消息具體操作。
對對象發送消息的消息源,可能是訪問和使用面向對象數據庫而設計的應用程序或用戶,也可能是數據庫內部的另一個對象。應用程序通過規定格式的消息訪問數據庫,是面向對象數據庫系統與外界聯系的途徑。數據對象接收到應用程序發送來的消息,執行消息規定的有關操作。在執行中可能需要根據與其他對象的繼承關系,調用其他對象的共享數據,于是它也以發送消息的方式通知其他對象,所以用戶的每次數據庫訪問,可能是在數據庫中多個對象協同活動而完成的。面向對象數據庫的各個子系統,正是利用這種通過消息傳遞方式的聯系方式,既保證了對象內部操作的隱蔽性,又體現了數據庫系統的結構整體性和對象之間的相關性。
[上一頁] [下一頁]
|