![第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要_第1頁(yè)](http://file4.renrendoc.com/view/e6d13a128876bc1e9d8e7629a3ae8b1e/e6d13a128876bc1e9d8e7629a3ae8b1e1.gif)
![第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要_第2頁(yè)](http://file4.renrendoc.com/view/e6d13a128876bc1e9d8e7629a3ae8b1e/e6d13a128876bc1e9d8e7629a3ae8b1e2.gif)
![第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要_第3頁(yè)](http://file4.renrendoc.com/view/e6d13a128876bc1e9d8e7629a3ae8b1e/e6d13a128876bc1e9d8e7629a3ae8b1e3.gif)
![第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要_第4頁(yè)](http://file4.renrendoc.com/view/e6d13a128876bc1e9d8e7629a3ae8b1e/e6d13a128876bc1e9d8e7629a3ae8b1e4.gif)
![第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要_第5頁(yè)](http://file4.renrendoc.com/view/e6d13a128876bc1e9d8e7629a3ae8b1e/e6d13a128876bc1e9d8e7629a3ae8b1e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要綱要前言類別的規(guī)劃物件導(dǎo)向設(shè)計(jì)階段(OOD)建立動(dòng)態(tài)模型建立設(shè)計(jì)模型總結(jié)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要前言O(shè)OD目標(biāo):將OOA階段的分析模型,繼續(xù)透過物件導(dǎo)向原則,反覆的修正與演進(jìn),使得整個(gè)模型能更趨於完備。(即:足以拿來實(shí)作之完整類別模型)手段:以圖7-4為藍(lán)圖,繼續(xù)以各種基於好的物件導(dǎo)向設(shè)計(jì)原則進(jìn)行檢視。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要物件導(dǎo)向之分析設(shè)計(jì)程序(圖7-4)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要主要任務(wù)建構(gòu)互動(dòng)圖(InteractionDiagram)建構(gòu)狀態(tài)圖(StatechartDiagram)建構(gòu)詳細(xì)的類別模型(DetailedClassDiagram)撰寫虛擬程式碼(Pseudo-Code)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要在這之前…類別的規(guī)劃問題:在OOA階段,「使用者與系統(tǒng)的互動(dòng)媒介」似乎並不明顯?誰(shuí)輸入資料?資料如何呈現(xiàn)?人機(jī)介面(HumanInterface):ATM(自動(dòng)提款機(jī))的輸入裝置圖形使用者介面(GraphicalUserInterfaces)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要範(fàn)例探討(1)一般商務(wù)系統(tǒng)至少具備了…核心類別:”訂單”功能:顯示訂單明細(xì)假設(shè)以GUI為人機(jī)介面第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)就物件設(shè)計(jì)的角度來看,顯示訂單明細(xì)的功能由”訂單”物件自己來負(fù)責(zé),似乎是理所當(dāng)然!考慮以下的狀況:若系統(tǒng)中存在上百個(gè)有需要跟使用者直接做輸入輸出的類別,一旦使用者與系統(tǒng)互動(dòng)的介面需求有所變更時(shí),套用此設(shè)計(jì)方法將有何影響?
第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)主要影響:此時(shí)會(huì)有很多的類別需要跟著修改(如:上例中的”訂單”)。問題根源:核心類別與使用者介面之間的過度耦合
(核心類別被使用者介面綁住了!)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要典型解法隔離核心類別與使用者介面邊界類別(BoundaryClass)專司使用者介面實(shí)體類別(EntityClass)即核心類別(通常為永續(xù)物件(PersistentObject))注意圖中的相依關(guān)係理論上,核心類別對(duì)邊界類別一無(wú)所悉。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)變更訂單介面等邊界類別(如:Form/Frame、Edit、Button),並不用跟著修改”訂單”類別。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要範(fàn)例探討(2)基於上例,考慮另一個(gè)需求:假設(shè)透過邊界類別需要完成的是-”替某顧客建立訂單的程序”可能之類別結(jié)構(gòu)以及物件合作關(guān)係如下…第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)部分流程控制的工作將落到邊界類別邊界類別需協(xié)調(diào)多個(gè)實(shí)體類別(如”顧客”、”訂單”以及”訂購(gòu)明細(xì)”)來完成登錄程序??紤]同樣的狀況:當(dāng)使用者介面需求有所變更時(shí)…儘管實(shí)體類別不需修改,但邊界類別中的部分商務(wù)邏輯(控制流程)卻還是得重新撰寫!第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要再次隔離…在實(shí)體類別與邊界類別間加上控制類別(ControlClass)由控制類別包辦商務(wù)邏輯相關(guān)的控制流程第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)此時(shí)邊界物件便不需涉及特定之控制流程,就算邊界物件有所變更時(shí),嵌在控制物件中的控制流程仍可被保留下來。此外,許多錯(cuò)誤處理的相關(guān)動(dòng)作,也可由控制物件集中處理,不需分散在邊界物件中。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要小結(jié)對(duì)類別作如此細(xì)膩的切割動(dòng)作固然需要不少時(shí)間成本,但將有利於系統(tǒng)日後的擴(kuò)充與維護(hù)。依照類別(物件)的性質(zhì)可區(qū)分成:邊界類別(BoundaryClass):負(fù)責(zé)使用者介面實(shí)體類別(EntityClass):負(fù)責(zé)問題領(lǐng)域的核心資料控制類別(ControlClass):負(fù)責(zé)邊界物件與實(shí)體物件的協(xié)調(diào)(流程控制)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)其他應(yīng)用:資料庫(kù)存取(更換不同的資料庫(kù)系統(tǒng)也是很常見的事情)Note:此概念源自於MVC(Model-View-Controller)Pattern。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要物件導(dǎo)向設(shè)計(jì)階段(OOD)主要執(zhí)行步驟,細(xì)分如下:加入邊界類別與控制類別建構(gòu)互動(dòng)圖(InteractionDiagram)建構(gòu)狀態(tài)圖(StatechartDiagram)建構(gòu)詳細(xì)的類別模型(DetailedClassDiagram)決定類別行為(Operation)加入設(shè)計(jì)階段的類別決定可見度(Visibility)決定資料型態(tài)撰寫虛擬程式碼(Pseudo-Code)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要Case-Study:
加入邊界類別與控制類別考量是否需要控制類別被協(xié)調(diào)的兩端在性質(zhì)上是否有明顯分野例如:邊界類別與實(shí)體類別之間被協(xié)調(diào)的兩端是否有需求變更之虞例如:軟體元件或(類別)函示庫(kù)通常使用者(Actor)與UseCase之間,會(huì)是置入控制類別的適當(dāng)位置Controller,Handler,Manager第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要以訂房程序?yàn)槔喎窟吔珙悇e泛指所有相關(guān)的視窗元件(為簡(jiǎn)化起見)資料庫(kù)控制類別專司資料庫(kù)存取動(dòng)作降低實(shí)體類別與資料庫(kù)介面之間的耦合性第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)Note:“訂房控制類別”與”資料庫(kù)控制類別”均有機(jī)會(huì)指涉到許多實(shí)體類別,這跟實(shí)際運(yùn)作的流程有關(guān),在此暫時(shí)省略這些關(guān)係。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要Case-Study:建構(gòu)互動(dòng)圖靜態(tài)關(guān)係類別圖(模型)互動(dòng)關(guān)係互動(dòng)圖來源類別圖(模型)取得物件(類別)互動(dòng)時(shí)的主角Use-Case腳本取得物件的互動(dòng)流程第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)是否物件間所有的互動(dòng)都要畫出?畫出的互動(dòng)情形越多,將有利於決定詳細(xì)類別模型時(shí)的精確度?;疽螅褐辽僖枥L出每個(gè)UseCase腳本的主要流程原則上夠用就好!其他考量因素:時(shí)間、成本、軟體系統(tǒng)種類以及是否有透過輔助工具(CASETools)…等第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)互動(dòng)圖要詳細(xì)到什麼程度?基本原則-”盡量保持簡(jiǎn)單”把複雜的互動(dòng)情況拆解成多張互動(dòng)圖OOA-分析透過互動(dòng)圖的過程來檢視類別模型與使用案例圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要基本流程-順序圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要基本流程-合作圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要訂房操作細(xì)節(jié)-順序圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要訂房操作細(xì)節(jié)-合作圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要Case-Study:建構(gòu)狀態(tài)圖狀態(tài)圖只針對(duì)單一物件來描述狀態(tài)圖非絕對(duì)必要:除非…
”某類別的行為與狀態(tài)有相當(dāng)程度的關(guān)連性”例如:”電話連線類別”,該類別”撥電話”、”掛電話”等基本行為都跟電話的狀態(tài)有關(guān)(如:連線狀態(tài)、響鈴狀態(tài))。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要資料庫(kù)控制類別-狀態(tài)圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要Case-Study:建構(gòu)詳細(xì)的類別模型OOA未考慮類別相關(guān)責(zé)任(功能)有attribute,無(wú)operationOOD決定類別行為加入設(shè)計(jì)階段的類別決定可見度(Visibility)決定資料型態(tài)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要決定類別行為責(zé)任導(dǎo)向設(shè)計(jì)(Responsibility-DrivenDesign)訊息接收端(服務(wù)端)負(fù)責(zé)提供該訊息的服務(wù)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)互動(dòng)圖提供了大部分的訊息資訊通常直接把互動(dòng)圖中的訊息當(dāng)成類別行為互動(dòng)圖愈精密,捕捉到的類別行為也就愈多第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要訂房程序相關(guān)類別圖(1)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)資訊隱藏(InformationHiding)保護(hù)物件內(nèi)部資料(屬性)Java/C++之private修飾子為資料提供公開的存取介面(方法)Java/C++之public修飾子例如:訂房資訊類別(訂房程序相關(guān)類別圖(1))中的訂房日期應(yīng)該受到保護(hù),並提供一組存取方法,分別是”設(shè)定訂房日期”以及”取出訂房日期”。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)基於“資訊隱藏”的概念,可再次捕捉到許多行為!如下圖-訂房程序相關(guān)類別圖(2)Note:訂房程序相關(guān)類別圖(2)中,只列出部分屬性對(duì)應(yīng)的方法。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要訂房程序相關(guān)類別圖(2)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要加入設(shè)計(jì)階段的類別設(shè)計(jì)階段的容器類別如:Array、List、Vector...必須在OOD階段被考慮進(jìn)來例如:”訂房控制類別”向”資料庫(kù)控制類別”要求取回房間物件清單,此”清單”便是設(shè)計(jì)時(shí)期需要的類別,它可以是Array、List或Vector。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)對(duì)於這類的結(jié)構(gòu),在此一律以List來表示List所包含的資料項(xiàng)目通常是物件參考或識(shí)別碼加入容器類別第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)考慮應(yīng)用程式的起始點(diǎn):在此補(bǔ)上一邊界類別-”訂房系統(tǒng)應(yīng)用程式”,該類別為應(yīng)用程式的起始點(diǎn)以Java而言,此類別中包含了main方法第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要加入系統(tǒng)起始類別第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要(Cont.)考慮多重性(Multiplicity)例如:”顧客”可以有多筆”訂房資訊”,而每筆”訂房資訊”則只歸屬於一個(gè)”顧客”。此時(shí)通常讓顧客保有一份”訂房資訊清單”,而訂房資訊則保有可參考到顧客的屬性。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要決定可見度(Visibility)軟體組成(單元):屬性、行為、類別、套件…等某個(gè)軟體組成之可見度,決定了該軟體組成是否可被其他軟體組成所存取。第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要常見的可見度分類(以Java為例)private屬性通常宣告成privatepublic方法通常宣告成publicprotected當(dāng)類別本身落在某個(gè)繼承體系,有時(shí)為了提供子類別存取權(quán)限,屬性/方法的可見度可能設(shè)定成protectedfriendly/package只能被相同套件中的其他成員存取第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要公開(public)等級(jí)以’+’來表示,’-’則為私有(private)等級(jí)加入可見度後的類別圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要決定資料型態(tài)目的:決定屬性資料型態(tài)例如:整數(shù)(integer)、字串(String)決定行為的原型定義傳入的參數(shù)列(ParameterList)以及回傳值型態(tài)
(Note:若屬性具有初始值,此時(shí)可一併設(shè)定)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要加入資料型態(tài)後的類別圖第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要撰寫虛擬程式碼目的:讓後續(xù)的實(shí)作更有所依據(jù)通常只挑選具代表性的或是比較複雜的程序來撰寫。撰寫語(yǔ)言:自然語(yǔ)言程式描述語(yǔ)言(ProgramDescriptionLanguage)(Note:應(yīng)避免直接用特定的程式語(yǔ)言)第八章分析與設(shè)計(jì)階段–物件導(dǎo)向設(shè)計(jì)(OOD)概要類別名稱:訂房控制類別方法(操作):訂房輸入:name:String,id:String,roomNumber:Integer,startDate:Date,endDate:Date輸出:None(Void)功能描述:完成單筆訂房資訊登錄的動(dòng)作,而相關(guān)的資訊會(huì)反應(yīng)到資料庫(kù)中。voidorder(name:String,id:String,roomNumber:Integer,startDate:Date,endDate:Date){
房間room=資料庫(kù)控制類別.取回房間(roomNumber);
時(shí)間範(fàn)圍timeInterval=資料庫(kù)控制類別.取回時(shí)間範(fàn)圍(roomNumber,startDate,endDate); room.加入時(shí)間範(fàn)圍(timeInterval);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廣告市場(chǎng)拓展與渠道建設(shè)合同
- 2025年度建筑廢棄物處理工程施工合同范本
- 2025年度江蘇二手車買賣合同電子版下載
- 2025年度農(nóng)業(yè)化肥農(nóng)藥種子電商合作運(yùn)營(yíng)合同
- 2025年度九夾板綠色建筑項(xiàng)目采購(gòu)合同范本
- 2025年度智能家電產(chǎn)品銷售合同變更協(xié)議
- 2025年國(guó)際貿(mào)易經(jīng)紀(jì)人服務(wù)合同
- 2025員工短期聘用合同
- 2025年銀行借款合同模板填寫
- 2025年田地租賃合同模板
- “一帶一路”背景下的西安市文化旅游外宣翻譯研究-基于生態(tài)翻譯學(xué)理論
- 2024年江蘇省昆山市六校中考聯(lián)考(一模)化學(xué)試題
- 大學(xué)生文學(xué)常識(shí)知識(shí)競(jìng)賽考試題庫(kù)500題(含答案)
- 國(guó)家電網(wǎng)智能化規(guī)劃總報(bào)告
- 邢臺(tái)市橋西區(qū)2024年事業(yè)單位考試《公共基礎(chǔ)知識(shí)》全真模擬試題含解析
- 太原頭腦外賣營(yíng)銷方案
- 2023年寧夏中考物理試題(附答案)
- JBT 7041.1-2023 液壓泵 第1部分:葉片泵 (正式版)
- 2024年浙江首考英語(yǔ)聽力原文解惑課件
- 國(guó)家基層糖尿病防治管理指南(2022)更新要點(diǎn)解讀-1074177503
- 湖南省長(zhǎng)沙市長(zhǎng)郡教育集團(tuán)聯(lián)考2023-2024學(xué)年九年級(jí)上學(xué)期期中道德與法治試卷
評(píng)論
0/150
提交評(píng)論