第7章-面向對象分析與設計_第1頁
第7章-面向對象分析與設計_第2頁
第7章-面向對象分析與設計_第3頁
第7章-面向對象分析與設計_第4頁
第7章-面向對象分析與設計_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

面向對象的分析與設計第7章本章要點

理解面向對象分析的主要任務和一般過程;

初步掌握對象模型的建立方法;

了解動態(tài)模型和功能模型的建立方法;

理解面向對象設計的基本模型及主要內容。面向對象的分析與設計第7章項目任務學會利用面向對象思想對圖書管理系統(tǒng)進行需求分析;了解利用面向對象思想對圖書管理系統(tǒng)進行軟件設計的內容和過程。7.1面向對象分析第7章面向對象分析(ObjectOrientedAnalysis,OOA)是軟件開發(fā)過程中的問題定義和需求分析階段,這一階段最后得到的是對問題領域的清晰、精確的定義。OOA的目標是完成對所需求解問題的分析,確定目標系統(tǒng)所要做的工作,定義所有與待解決問題相關的類,并建立系統(tǒng)的模型。OOA的核心思想是利用面向對象的概念和方法為軟件需求建造模型,以使用戶需求逐步精確化、一致化、完全化。為了達到這一目標,必須完成以下任務:(1)與用戶進行充分溝通,全面理解和分析用戶需求,明確所開發(fā)的軟件系統(tǒng)的職責,形成文件并規(guī)范地加以表述;(2)識別解決問題的對象集合及對象間的關系;(3)定義類(包括定義其屬性和操作)并建立類間的層次關系;(4)通過建立模型來表示對象之間的關系及行為特性。7.1.1面向對象分析的目標和任務7.1面向對象分析第7章7.1.2面向對象分析的過程7.1面向對象分析第7章1.分析需求文檔系統(tǒng)分析通常是從一個需求文檔(或稱需求陳述)和用戶一系列的討論開始的。大多數(shù)需求陳述都是有二義性的、不完整的甚至不一致的。通過分析可以發(fā)現(xiàn)和改正需求文檔中的歧義性、不一致性,剔除冗余的內容,挖掘潛在的內容,彌補不足,從而使需求文檔更完整、更準確。分析過程中,系統(tǒng)分析員除了要反復多次地與用戶討論溝通外,還應調研、觀察和了解現(xiàn)有的類似系統(tǒng),從而快速地建立一個原型系統(tǒng),通過在計算機上運行原型系統(tǒng),使得分析員和用戶盡快交流和相互理解,從而能更正確地、更完整地提取和確定用戶的需求。7.1.2面向對象分析的過程7.1面向對象分析第7章2.需求建模系統(tǒng)分析員根據(jù)所提取的用戶需求,深入地理解用戶需求,識別出問題域內的對象,并分析它們之間相互的關系,抽象出目標系統(tǒng)應該完成的任務,并用OOA模型準確地表示出來,即用面向對象觀點建立對象模型、動態(tài)模型和功能模型。OOA模型是OOD的基礎,它應該準確、簡潔地表示問題。通過建立模型,可以避免理解上的片面性,提高目標系統(tǒng)的正確性和可靠性,在此基礎上,編寫出面向對象的需求規(guī)格說明書。3.需求評審需求規(guī)格說明文檔經用戶、領域專家、系統(tǒng)分析員和系統(tǒng)設計人員以及其他有關人員評審、并進行反復修改后形成定稿,該文檔將成為面向對象設計的依據(jù)。7.1.2面向對象分析的過程7.1面向對象分析第7章面向對象建模是OOA的關鍵。OOA的模型要表示出系統(tǒng)的數(shù)據(jù)、功能和行為三方面的基本特征,因此通常需要建立三種模型,分別是對象模型、動態(tài)模型和功能模型。其中:(1)對象模型描述系統(tǒng)的數(shù)據(jù)結構,它是用來描述系統(tǒng)包含的對象及對象之間關系的模型;(2)動態(tài)模型描述系統(tǒng)的控制結構,它是用來確定各個對象之間交互及整體的控制結構的模型;(3)功能模型描述系統(tǒng)的功能,它是用來描述系統(tǒng)要實現(xiàn)的功能的模型。7.1.3面向對象分析的三種模型7.1面向對象分析第7章1.對象模型的五個層次復雜問題(大型系統(tǒng))的對象模型由五個層次組成,即主題層、類&對象層、結構層、屬性層和服務層,如圖7-3所示。7.1.4對象模型的層次7.1面向對象分析第7章2.OOA的五項活動OOA對象模型的五個層次對應著OOA過程中建立對象模型的五項活動。這五項活動是:確定類&對象、識別結構、識別主題、定義屬性、定義服務。需要說明的是,這五項工作完全沒有必要順序完成,也無需在徹底完成一項工作以后再開始另外一項工作,在分析過程中并不需要嚴格遵循自頂向下,逐步求精的原則。五項活動可以同時(并行)處理,也可以從較高抽象層轉移到較低的具體層,然后再返回到較高抽象層繼續(xù)處理。例如,當系統(tǒng)分析員在確定類&對象時,想到了該類應該包含的一個服務,于是把這個服務的名字寫在服務層,然后又返回到類&對象層,繼續(xù)尋找另外的類&對象。7.1.4對象模型的層次7.1面向對象分析第7章3.OOA的主要流程面向對象分析大體上按照如圖7-4所示的順序進行。7.1.4對象模型的層次7.2建立對象模型第7章OOA的核心是確定問題域中相關的對象,找出這些對象是個重要而復雜的過程。一般采用基于詞匯分析的方法:從目標系統(tǒng)的描述開始,找出其中的名詞作為候選對象類,此外,還可找出其中的動詞作為候選方法(即后面要介紹的服務),然后產生一個由對象(名詞)和方法(動詞)構成的表格,作為詞匯分析的初步結果,最后從中選出確定的真正的對象類。如圖7-5所示。7.2.1確定對象和類7.2建立對象模型第7章采用系統(tǒng)詞匯法確定對象類,并進行建模的具體做法如下:(1)確定對象類(2)準備數(shù)據(jù)詞典(3)確定關聯(lián)(4)確定屬性(5)使用繼承來細化對象類(6)完善對象模型7.2.1確定對象和類7.2建立對象模型第7章主題是一種關于模型的抽象機制,起一種控制作用。引入主題有助于分解大型項目以便成立工作小組來承擔不同的主題任務。主題有兩種表示形式,如圖7-6所示。7.2.3確定主題圖7-6主題的兩種表示7.2建立對象模型第7章所謂服務是在接收到一條消息后所要進行的加工。定義服務時,首先定義行為,然后定義實例的通信。值得說明的是,確定服務和消息,只有在建立了動態(tài)模型和功能模型之后,才可能最后確定對象類的服務。本教材為保持案例的連續(xù)性,故將服務和消息在此介紹。確定一個類中的服務,主要取決于該類在問題中的實際作用以及求解過程中承擔的處理責任,確定的原則如下:(1)基本的屬性操作服務。即類中應提供的訪問、修改自身屬性值的基本操作。這類操作屬于類的內部操作,可不必在對象模型中顯式表示。(2)事件的處理操作。動態(tài)模型中狀態(tài)圖描述了對象應接收的事件(消息),類和對象中必須提供處理相應消息的服務,這些服務用于修改對象的狀態(tài)(屬性值)并啟動相應的服務。7.2.4確定服務和消息7.2建立對象模型第7章(3)數(shù)據(jù)流圖中處理框對應的操作。功能模型中的每個處理框代表了系統(tǒng)應實現(xiàn)的部分功能,而這些功能都與一個或幾個對象中提供的服務相對應。因此,要仔細分析狀態(tài)圖和數(shù)據(jù)流圖,以便正確地確定對象應提供的服務。(4)利用繼承機制優(yōu)化服務集合,減少冗余服務。應盡量抽取相似的公共屬性和服務,以建立這些相似類的新父類,并在類的不同層次中正確定義各個服務。7.2.4確定服務和消息7.3建立動態(tài)模型第7章動態(tài)模型描述系統(tǒng)的動態(tài)行為,表現(xiàn)對象在系統(tǒng)運行期間不同時刻的動態(tài)交互。下列三個因素有關:(1)狀態(tài)。狀態(tài)是對象在其生存周期中的某個特定階段所具有的行為模式,它是對影響對象行為的屬性值的一種抽象。狀態(tài)規(guī)定了對象對輸入事件的響應方式。對象對輸入事件的響應,既可以執(zhí)行一個或一系列動作,也可以是僅僅改變對象本身的狀態(tài)。狀態(tài)有持續(xù)性,占用一段時間間隔。(2)事件。事件是一個觸發(fā)行為,是引起對象狀態(tài)轉換的控制信息,是引起對象從一種狀態(tài)轉換到另一種狀態(tài)的事情的抽象。事件沒有持續(xù)的時間,是瞬間完成的。(3)行為。行為也稱服務,是指對象在某種狀態(tài)下所做的一系列處理操作,行為是需要消耗時間的7.3建立動態(tài)模型第7章1.構建事件追蹤圖要建立一個事件追蹤圖,通常首先要編寫腳本。腳本是系統(tǒng)執(zhí)行某個功能的一系列事件。腳本通常起始于一個系統(tǒng)外部的輸入事件,結束于一個系統(tǒng)外部的輸出事件,它可以包括發(fā)生在此期間內系統(tǒng)所有的內部事件。表7-1使用移動手機通話的腳本7.3建立動態(tài)模型第7章圖7-7移動電話的事件追蹤圖7.4建立功能模型第7章功能模型主要用來說明系統(tǒng)內部數(shù)據(jù)是如何傳送和處理的,表示變化的系統(tǒng)的“功能”性質。功能模型描述了系統(tǒng)“做什么”,它更直接、明確地反映了用戶對目標系統(tǒng)的需求。建立功能模型有助于軟件開發(fā)人員更深入地理解整個問題域,改進和完善自己的設計。通常在建立對象模型和動態(tài)模型之后再建立功能模型。在UML中,用用例圖描述用例模型,用例圖包含系統(tǒng)、行為者、用例、用例之間的關系等元素。其中:系統(tǒng)是一個提供用例的黑盒子,可用方框表示;行為者是與系統(tǒng)交互的角色或其他外部系統(tǒng);用例是一個完整的功能,完成系統(tǒng)內部的計算及與行為者的交互,它對應于對象模型中的類所提供的服務;行為者與用例之間的關系用直線連接,表示兩者之間有交換信息,稱為通信聯(lián)系。7.4建立功能模型第7章用數(shù)據(jù)流圖建立功能模型的主要步驟如下:(1)確定輸入和輸出值;(2)用數(shù)據(jù)流圖表示功能的依賴性;(3)具體描述每個功能;(4)確定對象的約束;(5)確定功能優(yōu)化的準則。功能模型中的數(shù)據(jù)流圖往往形成一個層次結構。在這個層次結構中,一個數(shù)據(jù)流圖中的過程(即處理)可以由下一層的數(shù)據(jù)流圖作進一步說明。7.5面向對象設計第7章1.面向對象分析與面向對象設計的關系面向對象設計(ObjectOrientedDesign,OOD)是根據(jù)面向對象分析中確定的類和對象設計軟件系統(tǒng)。從OOA到OOD是一個逐步建立和擴充對象模型的過程。OOA是分析用戶需求并建立問題域模型的過程,是解決系統(tǒng)“做什么”問題的;OOD則是根據(jù)OOA得到的需求模型,建立求解域模型的過程,是解決系統(tǒng)“怎么做”問題的。OOA主要是模擬問題域和系統(tǒng)任務,而OOD則是對OOA的擴充,主要是增加各種組成部分。具體來說,OOA識別和定義類和對象。這些類和對象直接反映問題域和系統(tǒng)任務。而OOD識別和定義其他附加類和對象,它們反映需求的一種實現(xiàn),當然,也可以交替進行這兩個階段的工作。從OOA到OOD是一個逐漸擴充模型的過程,分析和設計活動是一個多次反復迭代的過程。7.5.1面向對象設計概述7.5面向對象設計第7章2.面向對象設計的基本模型OOD是在OOA模型的基礎上建立對象模型的過程,兩個階段同樣是建立對象模型,但側重點不同,OOA建立問題域對象模型,而OOD建立求解域的對象模型。因此OOD模型同樣也由主題、類&對象、結構、屬性和服務等五個層次組成,并且每個透明層在邏輯上都劃分為四個子系統(tǒng):問題域子系統(tǒng)(PDC)、人機交互子系統(tǒng)(HIC)、任務管理子系統(tǒng)(TMC)和數(shù)據(jù)管理子系統(tǒng)(DMC),具體面向對象設計的五個層次、四個組成部分構成的典型的面向對象設計模型如圖7-8所示。7.5.1面向對象設計概述圖7-8典型的面向對象設計模型7.5面向對象設計第7章3.面向對象設計的主要工作面向對象設計技術進行問題解決方案的設計工作的大致做法是,它將問題的解決方案表述為:“類+關聯(lián)”的形式,其中,類包括問題空間(域)類、用戶界面類(即人機交互類)、任務管理類和數(shù)據(jù)管理類,是從設計的角度出發(fā)對問題解決方案中的對象的抽象和描述,關聯(lián)則用于描述這些類和類之間的關系。7.5.1面向對象設計概述圖7-9OOD的工作內容及步驟7.5面向對象設計第7章1.面向對象設計的準則在進行面向對象設計的過程中,應該遵循軟件設計的基本原理,此外,還要考慮面向對象的特點。面向對象設計準則主要包括模塊化、抽象、信息隱藏、低耦合、高內聚和復用性幾點。具體內容如下:(1)模塊化(2)抽象(3)信息隱藏(4)低耦合(5)高內聚(6)復用性7.5.2面向對象設計的準則和啟發(fā)式規(guī)則7.5面向對象設計第7章2.面向對象設計的啟發(fā)式規(guī)則(1)設計結果應該清晰易懂(2)一般/特殊結構的深度應適當(3)設計簡單的類(4)使用簡單的協(xié)議(5)設計簡單的服務(6)最小設計變動7.5.2面向對象設計的準則和啟發(fā)式規(guī)則7.6系統(tǒng)設計第7章系統(tǒng)設計確定實現(xiàn)系統(tǒng)的策略和目標系統(tǒng)的高層結構設計。系統(tǒng)設計是要將系統(tǒng)分解為若干個子系統(tǒng),子系統(tǒng)和子系統(tǒng)之間通過接口進行聯(lián)系。系統(tǒng)設計的一般步驟如圖7-10所示:圖7-10系統(tǒng)設計的一般步驟7.6系統(tǒng)設計第7章1.將系統(tǒng)分解為子系統(tǒng)(1)子系統(tǒng)之間的交互方式在應用系統(tǒng)中,子系統(tǒng)之間的關系可分為客戶/服務器(供應商)關系和同等伙伴(端對端)關系。①在客戶/服務器關系中,“客戶”的子系統(tǒng)調用作為“服務器”的子系統(tǒng),“服務器”完成某些服務工作并返回結果。每個子系統(tǒng)只承擔一個角色,服務只是單向地從服務器流向客戶端。②在同等伙伴關系中,每個子系統(tǒng)都可能調用其他子系統(tǒng),因此每個子系統(tǒng)都必須了解其他子系統(tǒng)的接口,該方案比客戶/服務器方案交互復雜,易發(fā)生設計錯誤。因此推薦盡量使用客戶/服務器關系7.6系統(tǒng)設計第7章(2)系統(tǒng)組織通常,系統(tǒng)中子系統(tǒng)結構的組織有兩種方式:水平層次組織和垂直塊狀組織。①層次組織層次組織是將子系統(tǒng)按層組織成為一個層次軟件系統(tǒng),每層是一個子系統(tǒng)。②塊組織塊組織將系統(tǒng)垂直地分解成若干個相對獨立的、弱耦合的子系統(tǒng),一個子系統(tǒng)相當于一塊,每塊提供一種類型的服務。7.6系統(tǒng)設計第7章(3)設計系統(tǒng)的拓撲結構由子系統(tǒng)組成完整的系統(tǒng)時,典型的拓撲結構有管道型、樹型、星型等。設計者應該采用與問題結構相適應的、盡可能簡單的拓撲結構,以減少子系統(tǒng)之間的交互數(shù)量。7.6系統(tǒng)設計第7章2.設計問題域類子系統(tǒng)問題域類是指那些直接從OOA分析結果模型得到的類,它是讓軟件系統(tǒng)能夠實現(xiàn)對應用問題求解的最基本的類,也是面向對象軟件系統(tǒng)的核心類。對問題域子系統(tǒng)的設計,即定義這些類或對象的細節(jié)。雖然在OOA階段已經標識和定義了系統(tǒng)的類與對象,以及它們之間的各種關系,但是隨著對需求理解的加深和對系統(tǒng)認識程度的逐步提高,開發(fā)人員還需要在OOD階段對OOA階段得到的模型進行改進和增補,主要是對OOA模型增添、合并或分解類與對象、屬性及服務,調整繼承關系等。7.6系統(tǒng)設計第7章3.設計用戶界面類子系統(tǒng)用戶界面類是指那些為實現(xiàn)人機交互接口而設計的類,它是使軟件系統(tǒng)能夠接收用戶的命令,并能夠為用戶提供信息所需要的類,所以也叫人機交互類。該類用以確定人機交互的細節(jié),對圖形用戶界面(GUI),則包括指定窗口和報表的形式、設計命令層次等。盡管在OOA過程中已經對用戶界面方面進行了分析,但是在OOD過程中仍需繼續(xù)完成這項工作,必須具體設計確定交互作用的時間、交互的方式和交互的技術等。7.6系統(tǒng)設計第7章4.設計任務管理類子系統(tǒng)任務(Task)是一個處理過程或進程,它可能包含不同類的多個操作的執(zhí)行。而任務管理類是指那些為實現(xiàn)對多操作并發(fā)執(zhí)行的管理任務而設計的類,它是使軟件系統(tǒng)能夠同時處理多個并發(fā)行為所需要的類。當軟件系統(tǒng)中有并發(fā)行為時,需要依據(jù)各個行為的協(xié)調和通信關系,劃分各種任務,以簡化軟件系統(tǒng)結構的設計及部分編碼工作。設計任務管理子系統(tǒng)主要有以下工作:(1)設計任務管理子系統(tǒng)(2)分析評審各個任務(3)定義各個任務7.6系統(tǒng)設計第7章5.設計數(shù)據(jù)管理類子系統(tǒng)數(shù)據(jù)管理類是指為實現(xiàn)對數(shù)據(jù)進行管理而設計的類,它是使軟件系統(tǒng)能夠對對象的屬性值進行存貯和檢索所需要的類。設計數(shù)據(jù)管理類的目的是為了使得對對象屬性值的管理獨立于各種不同的數(shù)據(jù)管理模式,包括對永久性數(shù)據(jù)的訪問和管理。數(shù)據(jù)管理子系統(tǒng)是系統(tǒng)存貯和檢索對象的基本設施,它建立在某種數(shù)據(jù)存儲管理模式(文件、關系數(shù)據(jù)庫或面向對象數(shù)據(jù)庫)之上,而隔離了數(shù)據(jù)存儲管理模式對對象存儲或檢索的影響。(1)選擇數(shù)據(jù)存儲管理模式(2)設計數(shù)據(jù)管理類的操作(3)數(shù)據(jù)的存儲管理7.7類&對象設計第7章OOA階段中得到的對象模型,通常并沒有描述類中的服務。OOD階段主要是擴充、完善和細化對象模型的過程。類&對象設計是低層設計,設計類中的服務、實現(xiàn)服務的算法是OOD的重要任務,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論