




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三部分:設計篇2OOD模型框架——從兩個側面來描述人機交互部分數據接口部分控制驅動部分問題域部分從一個側面看:OOD模型包括幾個主要部分?一個核心加三個外圍需求模型輔助模型類圖模型規約從另一側面看:OOD模型每個部分如何用OO概念表達?采用與OOA相同的概念及模型組織方式回顧3問題域部分設計輸入OOA模型人機交互部分設計控制驅動部分設計數據接口部分設計構件化與系統部署向OOP輸出OOD模型OOD過程4將OOA模型搬到OOD作為OOD的基礎人機交互部分數據接口部分控制驅動部分問題域部分OOA模型按編程語言、網絡、操作系統、復用支持等實現條件進行必要的調整11.1什么是問題域部分問題域部分是OOD模型的四個組成部分之一,由來自問題域的對象構成,是在OOA模型基礎上,按照具體的實現條件進行必要的修改、調整和細節補充而得到的。第11章 問題域部分的設計5人機交互部分數據接口部分控制驅動部分OOA模型編程語言、網絡、操作系統、復用支持等實現條件OOD過程從MDA的觀點看問題域部分的產生問題域部分611.2實現條件對問題域部分的影響編程語言語言的實現能力硬件、操作系統及網絡設施對象分布、并發、通信、性能復用支持根據復用支持對模型做適當調整,以實現復用數據管理系統為實現對象的持久存儲,對問題域部分做某些修改界面支持系統問題域部分與人機界面之間的消息傳輸7設計準備保留OOA文檔復制OOA文檔,作為OOD的輸入根據需求的變化和發現的錯誤進行修改設計內容與策略(本節的重點)針對編程語言支持能力的調整增加一般類以建立共同協議實現復用提高性能為實現對象持久存儲所做的修改完善對象的細節定義對象實例對輔助模型、模型規約的修改和補充建立OOD文檔與OOA文檔的映射11.3設計過程81、按編程語言調整繼承與多態起因:OOA強調如實地反映問題域,OOD考慮實現問題,如果語言不支持多繼承或多態,就要進行對模型調整多繼承模式狹義菱形廣義菱形(1)多繼承化為單繼承9方法1:簡單轉換(a)一般方法或AC111111BACB1ACB(c)不合適的例子?職員學員在職學員職員學員在職學員1111(b)合適的例子汽車制冷設備冷藏車或111111汽車制冷設備冷藏車汽車制冷設備冷藏車(d)轉換產生信息重復AABCD?BCD10方法2:重新定義對象類,化解多繼承職員學員在職學員人員職員身份學員身份人員10..110..1職員身份學員身份身份人員10..211不適當的方法增加程序代碼職員學員人員在職學員方法3:保持分類,剝離多繼承信息職員學員人員在職學員職員信息學員信息1111111112(2)取消多態性(a)(b)多邊形線條色線型邊數頂點坐標繪圖填充正多邊形*頂點坐標*繪圖矩形×邊數*頂點坐標*繪圖多邊形線條色線型正多邊形繪圖矩形頂點坐標繪圖不規則多邊形繪圖邊數頂點坐標邊數頂點坐標填充132、增加一般類以建立共同協議增加根類:將所有的類組織在一起 提供全系統通用的協議
例:提供創建、刪除、復制等操作增加其他一般類:提供局部通用的協議 例:提供持久存儲及恢復功能14
B
CE
A屬性操作DF1*屬性操作屬性操作屬性操作屬性操作屬性操作例:Object?復用?153、實現復用的設計策略如果已存在一些可復用的類,而且這些類既有分析、設計時的定義,又有源程序,那么,復用這些類即可提高開發效率與質量。目標:盡可能使復用成分增多,新開發的成分減少當前所需的類的信息比可復用類定義的信息= 直接復用< 通過繼承復用> 刪除可復用類的多余信息≈ 刪除多余信息,通過繼承而復用16例:車輛序號顏色式樣出廠年月序號認證車輛序號廠商式樣序號認證可復用的類問題域部分的類?復用?車輛序號廠商式樣序號認證可復用的類174、提高性能(1)調整對象分布(2)縮短對象存取時間設立緩沖區甲機乙機?send??call??call??send?類A類A類B類C類B類C甲機乙機18(3)合并通訊頻繁的類流速調節器指定流速……流速調節……流速探測器當前流速……流速探測取當前流速……流速控制器指定流速當前流速……流速調節流速探測……合并前合并后(4)增加屬性以減少重復計算?call?19(5)降低算法的計算復雜性(6)細化對象的分類
二次曲線繪圖
二次曲線
拋物線繪圖
雙曲線繪圖
橢圓繪圖20(7)將復雜對象化為整體-部分結構
幀5、為數據存儲管理增補屬性與操作在數據接口部分設計中介紹背景前景顯示顯示1*11216、完善對象的細節OOD在OOA模型基礎上所做的主要工作,不能用“細化”二字概括,但細化是不可缺少的(1)完善與問題域有關的屬性和操作在OOA階段允許不詳盡,OOD必須加以完善(2)解決OOA階段推遲考慮的問題,包括:因封裝原則而設立的對象操作與OOD模型其他部分有關的屬性和操作(3)設計類的每個操作(算法、數據結構)必要時用流程圖或者活動圖表示(4)設計表示關聯的屬性區分多重性的3種情況,決定屬性設置在哪一端(5)設計表示聚合的屬性區分組合與松散的聚合對于組合,用嵌套對象實現對于松散的聚合,采用與關聯相同的策略227、定義對象實例在邏輯上,一個類的對象實例是:問題域中所有可用這個類描述的實際事物在物理上,一個類的對象實例可以是:內存中的對象變量文件的一個記錄,或數據庫表的一個元組一個類的對象實例可以分布到不同的處理機上對每一臺處理機說明在它之上創建的每一個(或組)內存對象說明在它之上保存的外存對象類的對象實例說明:{
處理機:<結點名>{,<結點名>}
內存對象:{<名稱>[(n元數組)][<文字描述>]}
外存對象:{<名稱>[<文字描述>]}}238、修改或補充輔助模型及模型規約包圖類的增減、拆分、合并以及各個類之間關系的變化
順序圖操作與消息活動圖操作流程其他模型圖狀態機圖、定時圖、交互概覽圖、組合結構圖
模型規約類的屬性、操作及其對外關系的修改或細化24建立與OOA文檔的映射指出OOA模型中的哪個(或哪些)類演化為OOD模型中的哪個(或哪些)類2512.1什么是人機交互部分人機交互部分是OOD模型的外圍組成部分之一,是系統中負責人機交互的部分。其中所包含的對象(稱作界面對象)構成了系統的人機界面?,F今的系統大多采用圖形方式的人機界面——形象、直觀、易學、易用,遠遠勝于命令行方式的人機界面,是使軟件系統嬴得廣大用戶的關鍵因素之一。但開發工作量大,成本高。近30年出現了許多支持圖形用戶界面開發的軟件系統,包括:窗口系統(如XWindow,News);圖形用戶界面(GUI)(如OSF/Motif,OpenLook);可視化開發環境(如VisualC++,VisualBasic,Delphi)——統稱界面支持系統。人機交互部分既取決于需求,又與界面支持系統密切相關。第12章 人機交互部分的設計26人機界面的開發不僅是設計和實現問題,也包括分析問題——對人機交互需求的分析。人機界面的開發也不純粹是軟件問題,它還需要心理學、美學等許多其它學科的知識。把人機交互部分作為系統中一個獨立的組成部分進行分析和設計,有利于隔離界面支持系統的變化對問題域部分的影響控制驅動部分問題域部分數據接口部分人機交互部分
X-Window人機交互部分
OSF/Motif人機交互部分
VisualC++2712.2人機交互部分的需求分析對使用系統的人進行分析以便設計出適合其特點的交互方式和界面表現形式對人和機器的交互過程進行分析核心問題是人如何命令系統,以及系統如何向人提交信息(1)分析與系統交互的人(參與者)人對界面的需求,不僅在于人機交互的內容,而且在于他們對界面表現形式、風格等方面的愛好。前者是客觀需求,對誰都一樣后者是主觀需求,因人而異分析工作包括列舉所有的人員參與者調查研究區分人員類型統計(或估算)各類人員的比例了解使用者的主觀需求28(2)從用況分析人機交互用況的構成參與者的行為和系統行為按時間順序交替出現,左右分明。形成交叉排列的段落。每個段落至少含有一個輸入語句或輸出語句;有若干純屬參與者自身或系統自身的行為陳述;可能包含一些控制語句或括號。抽取方法:刪除所有與輸入、輸出無關的語句刪除不再包含任何內容的控制語句與括號剩下的就是對一項功能的人機交互描述29收款員·收款輸入開始本次收款的命令;作好收款準備,應收款總數置為0,輸出提示信息;for
顧客選購的每種商品do
輸入商品編號;
if
此種商品多于一件then
輸入商品數量
endif;檢索商品名稱及單價;貨架商品數減去售出數;if
貨架商品數低于下限then
通知供貨員請求上貨endif;計算本種商品總價并打印編號、名稱、數量、單價、總價;總價累加到應收款總數;endfor;打印應收款總數;輸入顧客交來的款數;計算應找回的款數,打印以上兩個數目,收款數計入賬冊。(b)刪除與輸入輸出無關的陳述收款輸入開始本次收款的命令;作好收款準備,應收款總數置為0,輸出提示信息;for
顧客選購的每種商品do
輸入商品編號;
if
此種商品多于一件then
輸入商品數量
endif;檢索商品名稱及單價;貨架商品數減去售出數;if
貨架商品數低于下限then
通知供貨員請求上貨endif;計算本種商品總價并打印編號、名稱、數量、單價、總價;總價累加到應收款總數;endfor;打印應收款總數;輸入顧客交來的款數;計算應找回的款數,打印以上兩個數目,收款數計入賬冊。(a)一個用況的例子收款員.收款(人機交互)輸入開始本次收款的命令;輸出提示信息;for
顧客選購的每種商品do
輸入商品編號;
if
此種商品多于一件then
輸入商品數量
endif;打印商品編號、名稱、數量、單價、總價;endfor;打印應收款總數輸入顧客交來的款數打印交款數及找回款數;(c)得到人機交互描述例:30人機交互的細化輸入的細化輸入步驟的細化輸入設備的選擇輸入信息表現形式的選擇輸出的細化輸出步驟的細化輸出設備的選擇輸出信息表現形式的選擇輸入與輸出相比,輸入在人機交互中起到主導作用一次輸入,廣義地稱為對系統的一條“命令”31(3)分析處理異常事件的人機交互(4)命令的組織不受歡迎的命令組織方式:一條命令含有大量的參數和任選項系統有大量命令,不加任何組織和引導基本命令:使用一項獨立的系統功能的命令。命令步:
基本命令交互過程中所包含的具體輸入步驟。高層命令:由其他若干命令組合而成,起組織和引導作用命令的組織措施——分解與組合分解:將一條含有許多參數和選項的命令分解為若干命令步組合:將基本命令組織成高層命令,從高層命令引向基本命令32(c)半序網狀結構(b)樹型結構(a)線性結構(d)一般的網狀結構基本命令及其命令步的結構33高層命令的組織結構
34(5)輸出信息的組織結構分析兩層命令之間的輸出信息結構兩層命令反饋信息處理結果提示信息典型的輸出信息結構反饋信息處理結果處理結果提示信息提示信息處理結果提示信息復雜的輸出信息結構3512.3人機界面的設計準則使用簡便一致性啟發性減少人腦記憶的負擔減少重復的輸入容錯性及時反饋其它:藝術性、趣味性、風格、視感……3612.4人機界面的OO設計(1)選擇界面支持系統窗口系統:“窗口系統是控制位映像顯示器與輸入設備的系統軟件,它所管理的資源有屏幕、窗口、像素映像,色彩表、字體、光標、圖形資源及輸入設備。”例:Smalltalk,Macintosh,XWindow圖形用戶界面(GUI):在窗口系統之上提供了層次更高的界面支持功能,具有特定的視感和風格,支持應用系統界面開發的系統。例:OSF/Motif,OpenLook
可視化編程環境:將窗口系統、GUI、可視化開發工具、編程語言以及類庫結合為一體的可視化開發平臺,支持用戶以“所見即所得”的方式構造用戶界面。例:VisualC++,Delphi,VisualBasic考慮的因素:硬件、操作系統及編程語言,支持級別,風格與視感
37(2)根據人機交互需求選用界面元素不同的界面支持系統提供不同的界面元素,常用的界面元素例如:窗口、菜單、對話盒、圖符、滾動條等系統的啟動選用實現主界面的界面元素,如框架窗口、對話框窗口高層命令組織結構的實現通過界面元素的構造層次體現高層命令的組織結構例如:窗口—菜單—下級菜單……基本命令的執行通過高層命令引向基本命令例如:窗口—菜單—菜單選項詳細交互過程的輸入與輸出選擇適當的界面元素完成每個命令步的輸入與輸出異常命令的輸入使用支持異常命令輸入的界面功能,如鼠標右鍵菜單38(3)用OO概念表示界面元素對象和類盡可能使用界面類庫中提供的可復用類自定義的類類名屬性……操作……
類名?復用?復用類庫中的類屬性與操作用屬性表示界面對象的靜態特征物理特征——如:位置、尺寸、顏色、立體效果
邏輯特征——聚合、關聯用操作表示界面對象的行為例如:創建、激活、最大化、最小化、移動、選中、單擊、雙擊……39整體-部分結構表示界面元素之間的構成關系,例如:窗口與其中的菜單、按鈕、圖符、對話框、滾動條表示界面對象在操作中的邏輯層次反映上、下兩層命令之間的關系例:框架窗口40框架窗口主菜單下拉菜單視窗工具條滾動條按鈕111*1*1112111*41一般-特殊結構表示較一般的界面類和較特殊的界面類之間的關系自定義的類之間的一般-特殊關系用一般-特殊結構特化可復用類CDialog?復用?操作屬性對話框A42關聯表示界面類之間一個有特定意義的關系,例如:按鈕11對話框消息高層命令到低層命令——界面對象之間的消息基本命令的執行——從界面對象向功能對象發消息信息輸出——從功能對象向界面對象發消息工具條1*4312.5可視化編程環境下的人機界面設計(1)問題的提出(2)所見即所得的界面開發(3)設計的必要性為實現提供依據·為了滿足人機交互的需求,人機界面中要使用哪些界面對象?·交互過程中的各項輸入和輸出應由哪些界面對象完成?·如何通過界面對象類之間的各種關系體現人機交互命令的組織結構與層次?·如何通過界面對象和功能對象之間的消息實現它們之間的動態聯系?降低失敗的風險設計策略需要改進類庫的存在以所見即所得的定義界面對象的各種物理屬性更為直接44(4)基于可視化編程環境的設計策略類的設立——首先想到復用Cdialog?復用?CMysystemDig…………CEdit?復用?通過繼承復用直接復用45屬性——忽略物理特征,著重表示邏輯特征設計階段不必關心描述界面物理特征的屬性諸如:大小、形狀、位置、顏色、邊框、底紋、圖案式樣、三維效果等,由實現人員去自主處理效果更好,效率更高以主要精力定義描述界面邏輯特征的屬性表現命令的組織結構的屬性、例如:菜單類的每個選項表示什么命令表現界面元素之間組成關系和關聯的屬性例如:對話框中包含哪些控件46CMysystemDig…
…√SetDlgItemText…
…
操作——顯式地表示從高層類繼承的操作例:CDialog?復用?47整體-部分結構——表現界面的組織結構和命令層次通過整體-部分結構表現界面對象之間的組成關系和人機交互命令的層次關系——與采用其它界面支持系統的策略相同區分界面對象的普通屬性和它的部分對象有些組成部分被作為對象的一個普通屬性——例如下拉菜單的選項,窗口的邊框有些組成部分則被作為一個部分對象——例如對話框的一個下拉菜單或按鈕區分兩種情況的依據——環境類庫有沒有給出這種組成部分的類定義48一般-特殊結構——多從可復用類直接繼承例:對話框?復用?對話框A對話框B編輯框?復用?按鈕?復用?1311…
…
…
…
…
…
…
…
普通策略21對話框?復用?…
…
…
…
對話框A…
…
…
…
對話框B編輯框?復用?按鈕?復用?11151113直接繼承可復用類的策略49消息——忽略自動實現的消息注意需要編程實現的消息1、界面對象接收到一個操作事件,通過它的一個操作向處理該事件的功能對象所發送的消息。2、從功能對象向完成其輸入/輸出的界面對象發送的消息。3、其它:凡是需要通過手工編程來實現的消息,都要在設計中加以表示。5013.1什么是控制驅動部分控制驅動部分是OOD模型的外圍組成部分之一,由系統中全體主動類構成。這些主動類描述了整個系統中所有的主動對象,每個主動對象是系統中一個控制流的驅動者??刂屏鳎╟ontrolflow)——進程(process)和線程(thread)的總稱有多個控制流并發執行的系統稱作并發系統(多任務系統)第13章控制驅動部分的設計51為什么需要控制驅動部分并發行為是現實中固有的當前大量的系統都是并發系統(多任務系統),例如:外圍設備與主機并發工作的系統有多個窗口進行人機交互的系統多用戶系統多個子系統并發工作的系統單處理機上的多任務系統多處理機系統……多任務的設置描述問題域固有的并發行為表達實現所需的設計決策隔離硬件、操作系統、網絡的變化對整個系統的影響5213.2相關技術問題(1)由系統總體方案決定的實現條件:計算機硬件性能、容量和CPU數目操作系統對并發和通訊的支持網絡方案網絡軟硬件設施、網絡拓撲結構、通訊速率、網絡協議等軟件體系結構(詳后)編程語言對進程和線程的描述能力其它商品軟件如數據管理系統、界面支持系統、構件庫等——對共享和并發訪問的支持53(2)軟件體系結構抽象地說,軟件體系結構描述了構成系統的元素、這些元素之間的相互作用、指導其組合的模式以及對這些模式的約束——MaryShaw
幾種典型的軟件體系結構風格管道與過濾器風格(pipeandfilterstyle)數據抽象風格(dataabstractionstyle)面向對象風格(object-orientedstyle)隱式調用風格(implicitinvocationstyle)層次風格(layeredstyle)倉庫風格(repositorystyle)黑板風格(blackboardstyle)解釋器模型(interpretermodel)進程控制風格(processcontrolstyle)客戶-服務器風格(client-serverstyle)
54主機+仿真終端體系結構文件共享體系結構客戶-服務器體系結構二層客戶-服務器體系結構三層客戶-服務器體系結構對等式客戶-服務器體系結構瘦客戶-服務器體系結構瀏覽器-服務器體系結構(3)分布式系統的體系結構風格55進程(process)概念出現之前,并發程序設計困難重重主要原因:并發行為彼此交織,理不出頭緒與時間有關的錯誤不可重現進程概念的提出使這個問題得到根本解決進程的全稱是順序進程(sequentialprocess),其基本思想是把并發程序分解成一些順序執行的進程,使得:每個進程內部不再包含并發行為所以叫做順序進程,其設計避免了并發問題多個進程之間是并發(異步)執行的所以能夠構成并發程序(4)系統的并發性56線程(Thread)由于并行計算的需要,要求人為地在順序程序內部定義和識別可并發執行的單位。因此后來的操作系統大多支持線程概念。線程與進程的區別:進程既是處理機分配單位,也是存儲空間、設備等資源的分配單位(重量級的控制流);線程只是處理機分配單位(輕量級的控制流)
;一個進程可以包含多個線程,也可以是單線程的。控制流是進程和線程的總稱。57應用系統的并發性從網絡、硬件平臺的角度看:分布在不同計算機上的進程之間的并發在多CPU的計算機上運行的進程或線程之間的并發在一個CPU上運行的多個進程或線程之間的并發從應用系統的需求看:需要跨地域進行業務處理的系統需要同時使用多臺計算機或多個CPU進行處理的系統需要同時供多個用戶或操作者使用的系統需要在同一時間執行多項功能的系統需要與系統外部多個參與者同時進行交互的系統58處理應用系統并發性的例子見教材節例1~例759例5:用多進程實現遙感信息的輸入、處理和顯示輸入進程操作數據數據處理進程操作數據顯示進程操作數據數據數據IPCIPC數據數據顯示屏地面接收設備輸入輸出遙感信息處理系統60例6:用多線程實現遙感信息的輸入、處理和顯示輸入線程數據處理線程顯示線程數據數據數據輸入輸出地面接收設備顯示屏遙感信息處理進程61……業務處理進程1操作輸入線程數據處理線程顯示線程遙感信息處理進程數據數據庫管理系統數據庫數據數據業務處理進程n操作數據IPC/RPC例7:同時采用多進程和多線程
6213.3如何設計控制驅動部分(1)選擇軟件體系結構風格二層客戶-服務器體系結構(數據)服務器——客戶機三層客戶-服務器體系結構數據服務器——應用服務器——客戶機
63考慮分布方案之前,暫時將系統看作集中式的確定分布方案之后,將對象分布到各個處理機上以每臺處理機上的類作為一個包集中式類圖分布到不同結點上結點A包A結點B包B結點C包C(2)確定系統分布方案64系統分布包括功能分布和數據分布在面向對象的系統中都體現于對象分布原則:減少遠程傳輸,便于管理對象分布軟件體系結構系統功能在哪些結點提供數據在哪些結點長期存儲管理,在哪些結點臨時使用參照用況把合作緊密的對象盡可能分布在同一結點追蹤消息把一個控制流經歷的對象分布在同一結點65分布在每個結點上的對象,都需要相應的類來創建(1)如果一個類只需要在一個結點上創建對象實例——把這個類分布在該結點上(2)如果一個類需要在多個結點上創建對象實例——把這個類分布到每個需要創建其實例的結點上其中一個作為正本,其他作為副本類的分布:根據對象分布的需要66(a)一個集中式類圖1*ABCDEFG*1服務器HIJABCDEFG*1(b)服務器包1*?副本?DHIJ?副本?A客戶機(c)客戶機包(第一種策略)(d)客戶機包(第二種策略)1*?副本?DHIJ客戶機?call??call??call?例6713.3.3識別控制流(1)以結點為單位識別控制流不同結點上程序的并發問題已經解決考慮在每個結點上運行的程序還需要如何并發(2)從用戶需求出發認識控制流有哪些任務必須在同一臺計算機上并發執行
(3)從用況認識控制流關注描述如下三類功能的用況要求與其他功能同時執行的功能用戶隨時要求執行的功能處理系統異常事件功能(4)參照OOA模型中的主動對象(5)為改善性能而增設的控制流高優先級任務、低優先級任務、緊急任務(6)實現并行計算的控制流(線程)(7)實現結點之間通訊的控制流(進程)(8)對其它控制流進行協調的控制流68?active?類名UML1的主動類表示法類名?process?類名?thread?類名UML2的主動類表示法13.3.4用主動對象表示控制流控制流是主動對象中一個主動操作的一次執行。其間可能要調用其他對象的操作,后者又可能調用另外一些對象的操作,這就是一個控制流的運行軌跡。問題:一個主動類可以有多個主動操作和若干被動操作,這種表示法不能顯式地表示哪個(哪些)操作是主動操作。69用關鍵詞表示主動操作類名?進程?操作名()?線程?操作名()?線程?操作名()……操作名()……?active?類名?進程?操作名()?線程?操作名()?線程?操作名()……操作名()……70顯示地表示由進程創建線程類B?線程?T1……?create??create?類C?線程?T2……類A?進程?P……71把控制驅動部分看成一個包其中包含了系統中全部主動類可以從多種觀點把OOD模型劃分成包人機交互部分數據接口部分控制驅動部分問題域部分問題域部分控制驅動部分人機交互部分數據接口部分按OOD模型的四個組成部分按分布的結點數據服務器應用服務器客戶機按子系統技術部財物部營業部人事部72主動對象屬于控制驅動部分,也可以同時屬于其他部分因為OOD模型的各個部分可以交叉例:訂單系統中營業員對象可以有不同的設計方案人機交互部分數據接口部分控制驅動部分問題域部分營業員?active?營業員進程營業員窗口?call??call?方案1:無交叉73人機交互部分數據接口部分控制驅動部分問題域部分?進程?營業員營業員窗口?call?方案2:問題域部分和控制驅動部分交叉74方案3:問題域部分和人機交互部分交叉人機交互部分數據接口部分控制驅動部分問題域部分營業員?call??active?營業員進程75人機交互部分數據接口部分控制驅動部分問題域部分方案4:問題域部分、人機交互部分、控制驅動部分都交叉?active?營業員提問:1、還有沒有其他方案?2、是否違背了隔離對問題域部分影響的初衷?76數據接口部分是OOD模型中負責與具體的數據管理系統銜接的外圍組成部分,它為系統中需要長久存儲的對象提供了在選定的數據管理系統中進行數據存儲與恢復的功能。問題范圍:對象在永久性存儲介質上的存儲只須存儲對象的屬性部分可能只有一部分對象需要長久存儲11.1什么是數據接口部分大部分實用的系統都要處理數據的持久存儲問題數據保存于永久性存儲介質在數據管理系統的支持下實現其存儲、檢索和維護
在面向對象的系統中,數據的存儲表現為對象存儲第14章 數據接口部分的設計77不同的數據管理系統:文件系統關系型數據庫管理系統面向對象的數據庫管理系統——各有不同的數據定義方式和數據操縱方式針對不同的數據管理系統,需要做不同設計根據所選用的數據管理系統特點,設計一些專門處理其它對象的持久存儲問題的對象組織成一個獨立的組成部分——數據接口部分78優點:集中解決對象存儲問題隔離數據管理系統對其它部分的影響選用不同的數據管理系統時,問題域部分變化較少人機交互部分控制驅動部分問題域部分數據接口部分文件系統數據接口部分文件系統數據接口部分關系型DBMS數據接口部分OO-DBMS7914.2數據管理系統及其選擇數據管理系統——實現數據存儲、檢索、管理與維護的系統包括文件系統和數據庫管理系統兩大類文件系統filesystem關系型數據庫管理系統RDBMS面向對象的數據庫管理系統OODBMS80(一)文件系統通常是操作系統的一部分管理外存空間的文件數據提供存儲、檢索、更新、共享和保護等功能文件結構物理結構文件數據在存儲空間的存放方法和組織關系
邏輯結構呈現給用戶的文件結構如流式結構、記錄式結構等文件系統提供的支持在人機界面上進行操作的系統命令在程序中使用的廣義指令創建、刪除、打開、關閉、讀、寫、控制等
編程語言可以提供更方便的文件定義與使用方式81優點:廉價,容易學習和掌握,對數據類型沒有限制
缺點:功能貧乏、低級不容易體現數據之間的關系只能按地址或者記錄讀寫,不能按屬性進行數據檢索與更新缺少數據完整性支持數據共享支持薄弱文件系統的優缺點82(二)數據庫管理系統數據庫:長期存儲在計算機內、有組織、可共享的數據集合。其中的數據按一定的數據模型組織、描述和儲存,具有較小的冗余度,較高的數據獨立性和易擴展性,并可為各種用戶共享。數據庫管理系統(DBMS):用于建立、使用和維護數據庫的軟件。它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性數據模型:描述如何在數據庫中定義數據及其操作,內容包括:實體及實體間聯系的數據結構描述,對數據的操作,完整性約束不同的數據庫基于不同的數據模型網狀數據庫關系型數據庫面向對象的數據庫層次數據庫基于網狀數據模型基于層次數據模型基于關系數據模型基于面向對象數據模型831、關系數據庫管理系統RDBMS關系模型給定一組域D1,D2,…,Dn其笛卡爾積D1×D2×…×Dn的一個子集就是一個關系,又稱二維表
基本要求:關系的每個屬性必須是原子的
數據的組織:用二維表組織各類數據既可存放描述實體自身特征的數據也可存放描述實體之間聯系的數據每一列稱作一個屬性每一行稱作一個元組數據的運算:提供并、交、差等集合運算以及選取、投影、聯結等操作84
關系數據庫術語對照數據庫專業術語開發者的習慣術語用戶習慣術語關系relation文件file表table元組tuple記錄record行row屬性attribute字段,域field列column852、面向對象數據庫管理系統OODBMS采用面向對象數據模型的數據庫管理系統
背景:越來越多的系統用OO技術開發(采用OO數據模型)RDBMS的局限性(采用關系數據模型)不能直接、有效地組織和存儲對象數據,需要對數據模式進行轉換,并提供相應的接口因此出現了面向對象數據庫管理系統——OODBMSOODBMS的特征:是面向對象的:支持對象、類、對象標識、對象的屬性與操作、封裝、繼承、聚合、關聯、多態等OO概念。具有數據庫管理系統的功能:數據定義與操縱語言、完整性保障、安全機制,并發控制、故障恢復、事務運行管理、可擴充86三種類型的OODBMS產品1)在OOPL基礎上增加數據庫管理系統的功能例如:GemStone
和ObjectStore2)對RDBMS進行擴充,使之支持面向對象數據模型并向用戶提供面向對象的應用程序接口例如:Iris
和POSTGRES3)“全新的”OODBMS即按照面向對象數據模型進行全新的設計例如:O2
和DAMOKLES
目前狀況:理論和技術上都有待完善87(三)數據管理系統的選擇理論上OODBMS最適合用OO方法開發的系統實際上要權衡技術和非技術兩方面的因素非技術因素與項目的成本、工期、風險、宏觀計劃有關的問題產品的成熟性和先進性價格開發隊伍的技術背景與其它系統的關系88技術因素考慮各種數據管理系統適應哪些情況,不適應哪些情況文件系統的適應性優點:可儲任何類型的數據,包括具有復雜內部結構的數據和圖形、圖象、視頻、音頻等多媒體數據。以類和對象的形式定義的數據都可以用文件存儲適應:數據類型復雜,但對數據存取、數據共享、數據完整性維護、故障恢復、事務處理等功能要求不高的應用系統;缺點:操作低級;數據操縱功能貧乏;缺少數據完整性支持;缺少多用戶及多應用共享、故障恢復、事務處理等功能不適應:數據操縱復雜、多樣,數據共享及數完整性維護要求較高的系統。89關系數據庫管理系統的適應性優點:對數據存取、數據共享、數據完整性維護、故障恢復、事務處理等功能提供強有力的支持適應:對這些功能要求較高的應用系統,以及需大量保存和管理各類實體之間關系信息的應用系統問題:關系數據模型對數據模式的限制較多當對象的內部結構較為復雜時,就不能直接地與關系數據庫的數據模式相匹配,需要經過轉換更不適合圖形、圖象、音頻、視頻等多媒體數據和經過壓縮處理的數據文件系統和RDBMS的優點和缺點形成了明顯對照但是對二者的選擇卻未必互相排斥,有時它們是互補的。某些應用系統可能同時采用RDBMS和文件系統,分別存儲各自所適合的數據。90面向對象數據庫管理系統的適應性從純技術的角度看,對用OO方法開發的系統采用OODBMS是最合理的選擇,幾乎沒有不適合的情況。如果某些項目不適合,主要是由于非技術因素,而不是技術因素各種OODBMS采用的對象模型多少有些差異,與用戶選用的OOA&D方法及OOPL中的匹配程度不盡一致,功能也各有區別,對不同的應用系統有不同的適應性9114.3對象存儲方案和數據接口的設計策略針對三種數據管理系統文件系統RDBMSOODBMS對象存儲方案——如何把對象映射到數據管理系統數據接口部分的設計策略——如何設計數據接口部分的對象類分別討論如何對問題域部分做必要的修改92(一)針對文件系統的設計應用系統數據接口…文件系統對象對象對象1、對象在內存空間和文件空間的映像如何看待用文件系統存儲對象應用系統仍然是面向對象的只是用文件系統存儲對象的數據93從應用系統的對象到文件記錄的不同映射方式類A對象1數據接口實例化…記錄1記錄2…記錄n對象2對象n內存空間文件系統文件A一一對應的映射方式類A數據接口實例化記錄1記錄2…記錄n對象內存空間文件系統文件A非一一對應的映射方式942、對象在文件中的存放策略1)基本策略把由每個類直接定義、需要持久存儲的全部對象實例存放在一個文件中;每個對象實例的全部屬性作為一個存儲單元,占用該文件的一個記錄。如何理解“由一個類直接定義的”對象實例另一種策略——一個結構用一個文件浪費空間模糊了對象分類關系使操作復雜化人員姓名············教職工職稱專業············研究生學號班級專業············在職研究生在職單位
······
······例:952)提高檢索效率
——在對象和文件記錄之間建立有規律的映射關系對象名或關鍵字呈線性規律按對象名或關鍵字的順序形成文件記錄給出對象名稱或關鍵字,快速地計算出它的存放位置
對象名稱或關鍵字可以比較和排序按關鍵字順序安排記錄,檢索時采用折半查找法建立按對象名稱或者按關鍵字排序的索引表,通過該表中的記錄指針找到相應的記錄其他措施如散列表、倒排表、二叉排序樹等等963、設計數據接口部分的對象類對象存取器對象存儲對象恢復類名-文件名對照表負責對象的存儲與恢復換算型對象存取器*對象存儲*對象恢復查找型對象存取器*對象存儲*對象恢復索引型對象存取器*對象存儲*對象恢復索引表查記錄指針文件記錄索引特殊類提供不同的查找功能974、問題域部分的修改…………類B……………………類D…………問題域部分數據接口部分類A類C對象存取器…………每個持久對象類都要增加請求存儲和恢復所需的屬性和操作,以便向數據接口部分發出請求類名……請求保存請求恢復……類名……請求保存請求恢復……類名……請求保存請求恢復……持久對象請求保存請求恢復……類名……增加一個一般類來定義它們,作為共同協議,供所有的持久對象類繼承98(二)針對RDBMS的設計應用系統數據接口…RDBMS對象對象對象1、對象及其對數據庫的使用如何看待用RDBMS存儲對象應用系統仍然是面向對象的只是用關系數據庫存儲對象的數據關系數據庫99從應用系統的對象到數據庫表元組的不同映射方式類A對象1實例化…元組1元組2…元組n對象2對象n內存空間數據庫表A一一對應的映射方式數據接口RDBMS類A數據接口實例化元組1元組2…元組n對象內存空間數據庫表A非一一對應的映射方式RDBMS100使用RDBMS和使用文件系統的不同(1)系統以不同方式使用數據庫中的數據存儲對象或使用其普通數據——原因:數據庫的共享性(2)可能需要數據格式轉換原因:關系數據庫對規范化的要求對象從數據庫獲得其他數據關系數據庫
應用系統對象數據接口對象…RDBMS對象對象保存與恢復1012、對象在數據庫中的存放策略對象數據的規范化修改類圖確定關鍵字從類圖映射到數據庫表類→表類的屬性→表的屬性對象實例→行對一般-特殊結構、整體-部分結構、關聯等OO概念的處理102第一范式(1NF):關系(表)的每個屬性都必須是原子的。就是說,關系的每個屬性都是單值的,它不再包含內部的數據結構。第二范式(2NF):如果一個關系的所有非關鍵字屬性都只能依賴整個關鍵字(而不是依賴關鍵字的一部分屬性),則該關系在第二范式中。第三范式(3NF):如果一個關系在第二范式中,而且沒有傳遞依賴,則該關系在第三范式中。Boyce-Codd范式(BCNF):如果一個關系的每個決定因素都是候選關鍵字,則該關系在BCNF中。第四范式(4NF):如果一個關系在BCNF中,而且沒有多值依賴,則該關系在第四范式中。1)對象數據的規范化關系數據庫要求存入其中的數據符合一定的規范,并且用范式衡量規范化程度的高低。是由關系數據模型決定的,是對一個關系的起碼要求主要為了解決關系中的函數依賴帶來的更新異常問題。也可以減少數據冗余,但更新異常問題更為重要主要為了減少數據冗余103未必規范化程度越高越好規范化的代價——影響系統的可理解性,增加了多表查詢和連接操作面向對象方法與關系數據庫的規范化目標既有相違的一面,又有相符的一面
以對象為中心組織數據與操作,恰恰有助于達到第2NF、3NF、BCNF和4NF要求的條件對象的數據結構常常連1NF的要求都不能滿足例如“通信地址”屬性104HOUSING(SID,Building,Fee)Key:SIDFunctionalDependencies:Building→FeeSID→Building→Fee100Randolph1200150Ingersoll1100200Randolph1200250Pitkin1100300Randolph1200SIDBuildingFee例1:一個不滿足3NF的關系及其規范化STU-HOUSING(SID,Building)Key:SIDSIDBuilding100Randolph150Ingersoll200Randolph250Pitkin300RandolphBLDG-FEE(Building,Fee)Key:Building
BuildingFeeRandolph1200Ingersoll1100Pitkin1100從面向對象的觀點看應該定義“學生”和“建筑物”兩個類——恰好與規范化要求吻合學生住所······建筑物房費······分析原因:把描述不同事物的數據組織在一起摘自:施伯樂等譯,[美]DavidM.Kroenke著.數據庫處理.北京:電子工業出版社,1998105例2:一個不滿足4NF的關系及其規范化STUDENT(SID,Major,Activity)Key:(SID,Major,Activity)
SIDMajorActivity100MusicSwimming100AccountingSwimming100MusicTennis100AccountingTennis150MathJoggingSTU-MAJOR(SID,Major)Key:(SID,Major)
SIDMajor100Music100Accounting150MathSTU-ACT(SID,Activity)Key:(SID,Activity)
SIDActivity100Skiing100Swimming100Tennis150Jogging106
SIDMajor1111****
課程學生活動學生-課程學生-活動SIDActivity****
課程學生活動用面向對象方法得到的分類——有三類對象化解多對多關聯之后的結果107用面向對象方法未能避免函數依賴的例子職工職工編號月工資所得稅
…………可以不通過規范化解決問題——討論為什么108規范化的兩種策略保持類圖,對表規范化缺點是對象的存儲與恢復必須經過數據格式的轉換修改類圖對問題域的映射可能不像規范化之前那么直接。但是這個問題并不嚴重——利大于弊采用第二種策略——按規范化的要求修改類圖中的類作為問題域部分的設計內容之一2)修改類圖1093)確定關鍵字
用較少的屬性作關鍵字,將為含關鍵字的操作帶來方便常用的技巧——引入編號最終效果:經過必要的規范化處理和關鍵字處理之后,得到一個符合數據庫設計要求的類圖,其中每個需要映射到數據庫表的類,都滿足如下條件:至少滿足第一范式滿足所期望的更高范式有一組屬性被確定為關鍵字1104)從類圖到數據庫的映射(1)映射策略概要對每個要在數據庫中存儲對象實例的類,都建立一個數據庫表類的每個屬性(包括從所有祖先繼承來的屬性)都對應表的一個屬性(列)名稱、數據類型完全相同其中一組屬性被確定為關鍵字類的每個對象實例將對應表的一個元組(行)111(2)對OO概念的處理對一般-特殊結構的處理抽象類不對應數據庫表特殊類包括自己定義的和繼承來的所有屬性人員姓名出生年月······教職工職稱從事專業······研究生學號班級攻讀專業······在職研究生在職單位
······例:5個屬性4個屬性8個屬性不建表112在關聯連接線一端的類中定義一個(或一組)屬性,表明另一端類的哪個對象實例與本端的對象實例相關聯該屬性(屬性組)應該和另一端的關鍵字相同如果另一端的關鍵字包含多個屬性,本端也要定義同樣的多個屬性在對應的數據庫表中,一個表以該屬性(或屬性組)作為外鍵,另一個表以它作為主鍵,使前者的元組通過其屬性值指向后者的元組對關聯的處理一對一的關聯AB0..11從B端指向A端,則B表的外鍵對有些元組可能是空值(NULL)從A端指向B端則不存在這一問題表A表B113一對多的關聯從多重性約束為“m”的一端指向多重性約束為“1”的一端AB1*映射為數據庫表后,A表以B表的主鍵作為自己的外鍵表A表B114多對多的關聯AB**先在類圖中化為兩個一對多的關聯AC11B**C表含有兩個外鍵,一個是A的主鍵,一個是B的主鍵然后將每個類映射到一個數據庫表表A表B115對象類轉化為數據庫表的三種情況:①表中只包含描述本類事物自身特征的屬性②表中既包含描述本類事物自身特征的屬性,也包含作為外鍵指向另一個表的元組的屬性③表中只包含作為外鍵指向其它表的元組的屬性116對整體-部分結構的處理分為緊密、固定的方式和松散、靈活的方式二者的區別將通過數據庫表的設計體現出來緊密、固定方式:把部分對象類的屬性合并到整體對象類中松散、靈活方式:整體對象類和部分對象類分別建立一個表通過外鍵表現整體部分關系117A1B1A0..1B1A*B1A1B*A*B*(a)(b)(c)(d)(e)緊密方式:B的屬性合并到A建立A表松散方式:建立A、B兩個表A指向B或者B指向A
緊密方式:B的屬性合并到A建立A表還要建立B表松散方式:建立A、B兩個表A指向B松散方式:建立A、B兩個表A指向B松散方式:建立A、B兩個表B指向A松散方式:參考多對多關聯解決辦法首先解決多對多問題然后建立A、B兩個表以及新增類的表118例:多對多的整體-部分結構的轉化**運動隊*1學生運動隊1*隊員學生1193、數據接口部分類的設計設計一個名為“對象存取器”的對象類,它提供兩種操作“對象保存”將內存中一個對象保存到相應的數據庫表中“對象恢復”從數據庫表中找到對象所對應的元組,把它恢復成內存中的對象執行這些操作需要知道對象的下述信息:·它在內存中是哪個對象為了知道從何處取得對象數據或者把數據恢復到何處·它屬于哪個類為了知道該對象應保存在哪個數據庫表中·它的關鍵字為了知道該對象對應數據庫表的哪個元組120第一種設計方案對每個要求保存和恢復的對象類,分別設計一個“對象保存”操作和一個“對象恢復”操作對象存取器對象保存1對象恢復1……對象保存n對象恢復n每個操作只負責一類對象的存或取因此下述信息是確定的:對象存放在哪個數據庫表關鍵字所包含的屬性數目與名稱在操作接口中只需傳遞如下參數:內存中的一個對象變量用來提供或接收對象數據對象關鍵字的值優點:每個操作都很容易實現,通常只需要一個數據操縱語句,(例如靜態SQL語句)缺點:操作個數太多很難在問題部分采用統一的消息協議121第二種設計方案只設計一個“對象保存”操作和一個“對象恢復”操作供全系統所有要求保存和恢復的對象類共同使用對象存取器對象保存對象恢復類名-表名對照表操作接口的參數應傳送三項信息:類名指明被存取的對象屬于哪個類對象變量提供或接受被存取的對象數據關鍵字的值指明是哪個對象實例要求保存或恢復數據類型不能靜態確定優點:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天氣卡通英文課件
- 叮叮DIY創意生活體驗館商業項目策劃書
- 中國聚酰亞胺覆銅板項目商業計劃書
- 金融科技的創新技術方案
- 地板磚鋪設合同協議書
- 無底薪合同協議書模板
- 零食客棧創業規劃書與零食店創業計劃書匯編
- 大學生西裝創業計劃書
- 簡易勞務清包工合同協議書
- 2025年高純度鉻行業深度研究分析報告
- 老年社會工作試題及答案
- 國家開放大學《統計與數據分析基礎》形考任務1-5答案
- 動靜脈內瘺評估護理課件
- 開展2025年全國“安全生產月”活動的通知
- 2025至2030中國廈門市數字經濟行業發展趨勢與投資策略研究報告
- Unit 5 Animals Lesson 2課件 人教精通版三年級英語下冊
- DB3309T 106-2024人力資源和社會保障數據分類分級規范
- 租賃法律知識講座課件
- 2025屆吉林省長春市高三質量監測(三)政治試題及答案
- GB/T 24894-2025動植物油脂甘三酯分子2-位脂肪酸組分的測定
- 2024年江蘇常州中考滿分作文《那么舊那樣新》8
評論
0/150
提交評論