摘要:該文對面向對象數據庫設計中所涉及的主要問題進行了較詳闡述,對其通用性和實用性進行了研究。
關鍵詞:類;對象;管理信息系統
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)34-2042-01
Research on the Current Nature of Object Oriented Database
ZHOU Xue-jun
(Yunfu Secondary School, Yunfu 527300, China)
Abstract: This paper expounds in detail the involved problem in design of object oriented database,and makes research on its current and applicablenature.
Key words: class; orientation; MIS
1 引言
目前,在MIS系統的分析和設計中,面向對象的分析和設計方法(OOAOOD)已經成功地用于許多工程和控制領域的軟件研制中。它克服了面向過程方法從系統調查到系統分析和系統設計的舊模式和一經定型如要修改,則退回到前幾個階段,造成繁瑣的軟件工程量的缺點。OOAOOD是一種軟件開發的新方法,它具有全新的數據和功能抽象、封裝、繼承和多態性等概念,與現實世界事物的一對一映射,分析和設計均以對象為核心等一系列特點。其過程非常容易理解和修改,中間轉換環節幾乎沒有,十分平滑。OOAOOD方法也引入到信息管理領域中,但還有需探討和研究的問題。
2 Windows與C++
Windows具有純圖形用戶界面,多進程管理,動態數據交換和動態數據連接等特點,因而可以根據用戶的要求設計出新穎、直觀、簡單方便的操作界面。
C++的精華在于“類”,一個類就是能共享相同特性和操作的一類對象,對象是類的實例,所謂面向對象程序設計就是用戶和對象聯系并且通過給其發送消息來控制狀態,消息會告訴對象該做什么,方法告訴對象怎樣對消息作出反應。繼承性是面向對象程序設計的重要環節,因為它提供了類的再使用,子類繼承其父類的屬性和操作。多態性是面向對象程序設計的一個非常重要的特性,它支持同一層中類之間的統一響應,但層次中的類可以通過執行稍微不同的任務來自由支持統一響應。
Windows應用程序是采用面向對象思想設計的,C++的上述特點在Windows應用程序中能充分體現出來。Windows程序設計方法與MS—DOS不同在于Windows是事件驅動的,事件驅動程序不由事件的順序來控制,而是由事件的發生來控制。事件驅動程序設計是密切圍繞著消息的產生與處理展開的。Windows只有通過消息才能取得多任務的能力。消息允許應用程序響應環境中的事件,Windows應用程序的主要任務就是處理消息,而消息的傳遞是面向對象的特征之一。一個最簡單的Windows應用程序,它必須具有兩個函數,一是主函數winmain(),另一個是窗口過程函數wndproc(),其中winmain()函數為應用程序的入口點。Windows在啟動應用程序時,先調用主函數,然后再調用窗口過程函數。Windows并不是把事件發生而來的消息直接送給應用程序,而是把此消息放到應用程序隊列中去,每個應用程序循環檢索消息,并通過Windows把它們發送到每個應用程序的相應窗口函數。
3 基本數據分析與抽象
用面向對象方法生成數據庫時,應先建立領域問題的類層次結構,而要建立領域問題的類層次結構,必須掌握繼承性技術和相應的知識結構,二者缺一不可,它們的關系是:對領域問題知識結構中的每一個非葉結點,分別用一個相應的類來描述,這些類之間的繼承和派生關系根據該領域問題的知識結構來確定。數據分析與抽象基本步驟為:分析確定在問題空間和解空間出現的所有對象及其屬性;確定應施加于每個對象的操作,即對象固有處理能力;分析對象間的聯系,確定對象間彼此應傳遞的消息,設計對象的消息模式,分析對象的外部特性;確定各對象的繼承關系,通過繼承而共享對公共性質的描述。建立起對象類之間的層次關系和引用關系,使得概念清楚,層次分明,對開發和調試帶來極大方便。
4 面向對象數據庫的框架設計
MIS以CLASS類的形式建立起面向對象的數據庫框架,即數據結構。數據以文本方式存儲,便于多種編輯方式,為系統的動態修改創造了基本條件。在類定義中重要的是成員函數的編制,數據庫的查詢,統計,動態修改,輸出等都是通過對象類成員函數調用來實現的。如果成員函數在public段中說明,類外部均可調用此成員函數,調用方式有如C語言的struc結構調用,有用指針方式加以調用和用reference方式加以調用。如果成員函數說明在private段中,則它只能被類內的函數程序調用。
(下轉第2048頁)
(上接第2042頁)
成員函數前是構造函數,它是類的對象化過程,負責進行對象的創建,初始化。將讀取相應的數據文件的內容作為初始數據,此初始數據設置成數據成員初始值。根據數據庫文件某些數據的含義,建立類對象之間的關聯的索引,并確定新一輪類對象的創建過程。
成員函數后是析構函數,當一個對象不再使用時,C++自動調出析構函數,處理一些出口工作,如釋放存儲器等。
因此,構成數據庫的框架分為三個步驟:根據系統的客觀組成,按照面向對象原則將其劃分為若干個對象類,對每個對象類再進一步細化形成一個描述樹;標明對象類的屬性,并進行規范;設計對象類的成員函數,基本函數有:構造函數(增加對象、創建關聯),析構函數(刪除對象),查詢及修改對象的參數的函數等。
5 建立信息管理功能模塊
整個系統功能模塊可分為:
主模塊主模塊的主要功能是定義主窗口,實現主窗口的所有操作。在WinMain()函數中定義主窗口,加上主菜單,并裝入快捷鍵資源,然后進入消息循環隊列。在Wndproc()函數中,對應實現了主菜單的各種操作,在菜單項中還可定義子窗口,子窗口的層次還可以延伸下去。本模塊中還定義了窗口句柄指針數組,用全局變量Windeep標識子窗口層次,當顯示一子窗口時Windeep加1,當撤消一子窗口時Windeep減1,并用它來作有關數組的下標。
對話框模塊在此模塊中定義若干個對話框函數,分別實現顯示版本信息,錄入信息等功能,它們分別在主模塊中被調用。
資源模塊本模塊定義主菜單,快捷鍵,及對應對話框函數的對話框屏幕顯示形式及樣式。
低級I/O模塊主要功能為實現前三個模塊與數據庫的聯系。它將從數據庫中讀出的對象內容存于一個字符串鏈表中,由本模塊傳出該鏈表的首地址,供前三個模塊操作對象使用。還可將用戶新建對象和修改后的對象存入數據庫。本模塊是數據庫和上層模塊之間的橋梁。
數據庫管理模塊本模塊的功能為實現數據庫的查詢統計、輸入、修改、輸出等。其具體功能的實現由成員函數完成。
OO數據庫MIS是一個動態人機交互系統,因此系統的實時性優化處理顯得十分重要,數據庫的檢索操作直接影響各功能模塊的運行效率,而數據庫有大量的工作是檢索。因此提高檢索速度是數據庫及其管理優化的核心內容,主要可采納:
1) 建立數據庫索引,同時要修改和設計相應的成員函數供其他模塊調用。
2) 變量優化和算法優化,減少主循環中不必要的重復檢索,減少數據傳遞和存儲次數,降低函數調用深度。
6 結束語
到目前,OOAOOD方法應用于MIS的開發是一個新的研究課題,面向對象數據庫和關系數據庫之間是互補的。本文對面向對象數據庫管理信息系統的通用性進行了研究。對面向對象數據庫涉及的對象模型和實現模型均給出了具體的方法和步驟,希望這些研究與探索有助于面向對象方法在MIS中廣泛應用。
參考文獻:
[1] 陳宏中.面向對象程序設計與C++[M].上海:同濟大學出版社,1992.
[2] 劉振安.Windows編程實踐[M].西安:西安電子科技大學出版社,1995.