第十二章物件互動行為塑模-系統(tǒng)分析與設(shè)計理論與實務(wù)應用_第1頁
第十二章物件互動行為塑模-系統(tǒng)分析與設(shè)計理論與實務(wù)應用_第2頁
第十二章物件互動行為塑模-系統(tǒng)分析與設(shè)計理論與實務(wù)應用_第3頁
第十二章物件互動行為塑模-系統(tǒng)分析與設(shè)計理論與實務(wù)應用_第4頁
第十二章物件互動行為塑模-系統(tǒng)分析與設(shè)計理論與實務(wù)應用_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第十二章物件互動行為塑模物件導向分析與設(shè)計需求塑模SA&D塑模RASASD需求使用者介面架構(gòu)PAC或MVC活動圖狀態(tài)圖元件圖部署圖物件圖類別圖應用分治原理物件導向介面藍圖介面元件規(guī)格循序圖狀態(tài)圖合作圖循序圖活動圖藍圖資料詞彙使用個案圖導論物件互動行為塑模主要以互動圖來表達物件間動態(tài)之互動行為?;訄D:描述一個使用個案內(nèi)物件間之互動行為循序圖著重以時間發(fā)生之先後順序來表達物件間的訊息傳遞與處理之程序合作圖著重表達物件間之連結(jié)結(jié)構(gòu),並能同時展現(xiàn)物件間的訊息傳遞與處理之程序。循序圖與合作圖可以完全相互轉(zhuǎn)換,因此除非必要,否則僅建構(gòu)一種圖(例如循序圖)就可以了,以避免重複。有些CASE工具提供自動轉(zhuǎn)換的功能(MagicDraw好像沒有)。CollaborationDiagram在UML2稱為CommunicationDiagram循序圖之元件循序圖之重要元件物件訊息操作與操作描述生命線與控制焦點物件循序圖之物件可直接用類別圖上類別之物件,其表達之方式是在類別之名稱下劃一底線。循序圖之元件(續(xù))訊息循序圖之訊息或刺激是由某一物件(A)送至另一物件(B)以啟動操作(operationsormethods)。在A中呼叫B.操作名稱()在循序圖中,訊息是以水平之箭頭表示,且箭頭起始於送訊息之區(qū)域(也就是下面所介紹之控制焦點;FocusofControl),終止於接受訊息之區(qū)域。操作與操作描述循序圖之操作在於描述循序圖中,某一物件接到另一物件送達的訊息時,接收端之物件為了執(zhí)行發(fā)送端物件送來之要求,所提供因應處理該訊息之方法。循序圖之元件(續(xù)1)生命線(LifeLine)循序圖之生命線是劃在物件底下與物件垂直之虛線,用於表達物件在某時段之存在,例如從物件接收到訊息或被新創(chuàng)出來開始到其被刪除為止??刂平裹c循序圖之控制焦點表達物件執(zhí)行某動作之時段,包括由其執(zhí)行或透過其附屬程式??刂平裹c用高且瘦的矩形(長條圖)表示,且與該物件之生命線重疊。圖12-1循序圖範例客戶(行為者)系統(tǒng)邊界使用者介面購物車:購物車修改訂購數(shù)量()設(shè)訂定夠數(shù)量()購物車內(nèi)容明細計算總金額()訊息與操作控制焦點生命線物件為了讓分析工作能夠順利進行,而不會被枝枝節(jié)節(jié)的小事絆住,一開始的訊息可以只表達出需要由另一個物件完成的動作。在後續(xù)的tuneup

,才把動作換成方法的方式表達(含參數(shù))。循序圖之建構(gòu)步驟與準則循序圖之建構(gòu)可以由類別圖來確認:類別之物件物件間傳遞之訊息及操作等,再進一步繪製循序圖確認物件循序圖中之物件來自類別圖(也可能發(fā)現(xiàn)物件,而該物件的類別尚未定義於類別圖中)到了最後,所有循序圖中的物件,都可以在類別圖中找到其相對應的物件放置物件的法則以物件出現(xiàn)順序或按時間發(fā)生之順序排列兩個物件間,表達訊息之水平線距離愈短愈好圖12-3a物件排列範例一物件A物件B物件C圖12-3b物件排列範例二物件A物件B物件C循序圖之建構(gòu)步驟與準則(續(xù))真實系統(tǒng)都存在一個系統(tǒng)邊界,以作為系統(tǒng)與外界溝通之介面,該系統(tǒng)邊界常被擺在循序圖最左邊第一個物件之左側(cè)。一般來說,下頁圖中的系統(tǒng)邊界和時間軸都不會畫出來。圖12-4系統(tǒng)邊界擺置範例物件1物件2物件3物件4系統(tǒng)邊界時間軸循序圖之建構(gòu)步驟與準則(續(xù)1)描述操作描述操作是操作之細部詳細說明,主要是從系統(tǒng)行為之觀點,描述系統(tǒng)之動作與邏輯順序及所需之輸入與輸出。一般來說,如果你的操作名稱就足以清楚的表達,並不需要操作的描述。描述操作是往後程式設(shè)計的重要依據(jù),程式編輯完成後,這些描述操作可作為程式的註解。為了讓操作能清楚表達各物件之動作,可以一條水平虛線隔開不同物件之操作。循序圖之建構(gòu)步驟與準則(續(xù)2)描述操作放置於循序圖的最左邊,並按發(fā)生之時間順序由上而下排列,操作之內(nèi)容主要來自使用個案之情節(jié)描述。實在是不常見。在標準內(nèi),也找不到。循序圖之建構(gòu)步驟與準則(續(xù)4)描述訊息一般來說,訊息常需與操作相結(jié)合。若使用個案之情節(jié)是以事件條列式描述,也就是採用(主詞)+動詞+受詞的方式表示,且其中的動詞若是操作,則該操作的輸入或輸出就可能是訊息。將每一訊息之參數(shù)數(shù)目減到最少。相同或類似的訊息處理,其命名應該相同。命名時,應能從名稱上反應出物件間訊息傳遞的作用、訊息的內(nèi)容或其意義。循序圖之建構(gòu)步驟與準則(續(xù)5)繪製循序圖之步驟將物件置於循序圖之上方,並依物件間訊息傳送╱接收發(fā)生之時間順序等原則安排物件由左至右之順序。在物件下劃與物件垂直之生命線,再標示物件間傳送╱接收之訊息與相關(guān)之操作。再依每一物件執(zhí)行某動作之時段劃控制焦點。循序圖之架構(gòu)循序圖之呈現(xiàn)架構(gòu)集中式階梯式集中式集中式架構(gòu)之特徵是所有的物件訊息傳遞皆由一個物件負責物件A物件B物件C物件D圖12-6集中式循序圖階梯式階梯式架構(gòu)之特徵是物件訊息傳遞不全然由某一物件負責,每一物件均可涉及物件之訊息傳遞,此種架構(gòu)下,系統(tǒng)設(shè)計之複雜度可分散到每一個物件上。循序圖之架構(gòu)(續(xù))物件A物件B物件C物件D圖12-7階梯式循序圖循序圖之建構(gòu)案例(一)以下將以夢幻系統(tǒng)之新增送貨單為例,說明如何建構(gòu)循序圖。確認物件由類別圖可以得知該使用個案有送貨單、客戶、送貨明細、成品、稅率等五個類別,因此該類別之物件就是循序圖中之物件。確認物件間之訊息與操作依據(jù)使用個案描述找出每個類別物件所啟動的訊息,以及該訊息屬於哪個類別物件的操作,這些資訊可表示如圖12-8。

1.1產(chǎn)生送貨單編號1.2查詢客戶資訊1.3新增送貨明細1.3.1查詢成品資訊1.3.2更新成品庫存1.4查詢稅率1.5計算各項金額1.6儲存送貨單送貨單查詢新增查詢新增查詢送貨明細成品稅率客戶業(yè)務(wù)部新增圖12-8新增送貨單循序圖ClassStereotypeNotation何謂stereotype?AstereotypeisanextensionofthevocabularyoftheUML,allowingyoutocreatenewkindsofbuildingblockssimilartoexistingonesbutspecifictoyourproblem.可以<<名稱>>表示,也可以用其他的icons來代表ClassStereotypeNotationUML預設(shè)三種類別的stereotypes:Boundaryobject(邊界物件)一般來說,指的就是使用者介面以<<boundary>>表達Ex.Web-based的系統(tǒng)其介面就是網(wǎng)頁一般來說,若某usecase與actor間連線的話,就應該要存在一個邊界物件。ClassStereotypeNotationUML預設(shè)三種類別的stereotypes:Controlobject(控制物件)一個控制物件是用來管理行為、控制程序執(zhí)行的流程(也就是我們之前說的控制類別)一般來說,控制物件是用來表達businesslogic或者businessrules以<<control>>表達Entityobject(實體物件)代表現(xiàn)實世界中的事、物、或概念,通常是系統(tǒng)認為需要將它們的資料儲存在資料庫中。也就是我們之前說的modelclass、或者DB中的entity以<<entity>>表達使用原則Actors只能跟BoundaryObjects溝通Boundaryobjects只能跟使用者或者是ControlObjects溝通Entityobjects只能跟ControlObjects溝通ControlObjects能夠跟Entityobjects、Boundaryobjects、或是其他的Controlobjects溝通ControlObjects不能跟Actors溝通使用原則LoopIf-ElseGuardcondition(UML1.x)Alternatives(UML2.x)AlternativesareusedtodesignateamutuallyexclusivechoicebetweentwoormoremessagesequencesOptionsOptions(UML2.x)Theoptioncombinationfragmentisusedtomodelasequencethat,givenacertaincondition,willoccur;otherwise,thesequencedoesnotoccur.Anoptionisusedtomodelasimple"ifthen"statement夢幻系統(tǒng)修改後的sequencediagram新增了一個controlclass和boundaryclass你必須為這些修改classdiagram有些方法已經(jīng)加上了傳遞的參數(shù),有必要,你們可以把這個圖補完整這樣的設(shè)計可以用在window-based(如JFrame)的程式在一些小系統(tǒng),control和boundaryclasses不是很容易區(qū)分Example/*DistanceConverter.javaAuthors:Koffman&Wolz*Classthatconvertsmilestokilometersandvice-versa.*/publicclassDistanceConverter{//DatafieldprivatestaticfinaldoubleCONVERT_FACTOR=1.609;

//MethodspublicdoubletoMiles(double

kms){returnkms/CONVERT_FACTOR;}publicdoubletoKilometers(doublemiles){returnmiles*CONVERT_FACTOR;}}Exampleimportjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassDistanceGUIFrameextendsJFrameimplementsActionListener{privateJTextFieldinput=newJTextField(10);privateJTextAreaoutput=newJTextArea(2,20);privateJButton

toKms=newJButton("Converttokms");privateJButton

toMiles=newJButton("Converttomiles");//ConstructorpublicDistanceGUIFrame(){//Declarelocalvariables

JLabel

inputLab=newJLabel("Inputdistance>>");

JPanel

dataPanel=newJPanel();……}Example//由main產(chǎn)生一個DistanceGUIFrame

的物件//DistanceGUIFrame

是一個兼具boundaryclass和controlclass的類別//較複雜的系統(tǒng),可以利用另一個類別來處理事件。publicstaticvoidmain(String[]args){

DistanceGUIFrame

dGUI=newDistanceGUIFrame();dGUI.setSize(300,200);

dGUI.setVisible(true);

dGUI.setTitle("Distance

Conversion");

dGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}ExamplepublicvoidactionPerformed(ActionEvent

aE){StringinputStr=input.getText();doubleinputDist=Double.parseDouble(inputStr);doubleoutputDist;

DistanceConverter

dC=newDistanceConverter();ObjectbuttonPressed=aE.getSource();if(buttonPressed==toMiles){

outputDist=dC.toMiles(inputDist);

output.setText(inputDist+"kilometersconvertsto\n"+outputDist+"miles");}elseif(buttonPressed==toKms){

outputDist=dC.toKilometers(inputDist);

output.setText(inputDist+"milesconvertsto\n"+outputDist+"kilometers");}

input.requestFocus();//Givesthefocustoinput}夢幻系統(tǒng)夢幻系統(tǒng)這樣的設(shè)計如果用在web-based(如JSP)的程式,需要變動嗎?Prefer程式,而非靜態(tài)的HTML網(wǎng)頁,因為sessionmanagement。要如何修改?夢幻系統(tǒng)–JSP版合作圖合作圖主要用於描述許多物件在單一使用個案中之互動行為,但不太適用於對這些行為的精準定義。本節(jié)將介紹合作圖之元件與建構(gòu)步驟及準則。合作圖之元件合作圖之重要元件物件連結(jié)訊息物件合作圖之物件與循序圖之物件相同,均是來自於類別圖上類別之物件,其表達之方式是在類別之名稱下劃一底線。合作圖之元件(續(xù))連結(jié)合作圖之連結(jié)是用於表示一個物件如何與另一個物件連接,以直線來表示。合作圖上之連結(jié)也就是物件間之路徑。訊息合作圖之訊息包含兩物件間之訊息傳送╱接收內(nèi)容與操作,並且將這些訊息伴隨著一個箭頭來表示,訊息之發(fā)生順序可在訊息前面加一個序數(shù)來表示。圖12-10合作圖範例1.修改訂單數(shù)量客戶(行為者)使用者介面購物車:購物車連結(jié)2.設(shè)定訂購數(shù)量()4.購物車內(nèi)容明細3.計算總金額訊息與操作合作圖之建構(gòu)步驟與準則合作圖與循序圖均表達一個使用個案內(nèi),許多物件間之互動行為,兩者均由相同的資料中推演出,因此兩種圖在語意上是相同的。也就是說,您可以從循序圖轉(zhuǎn)換成合作圖,也可以從合作圖轉(zhuǎn)換成循序圖,轉(zhuǎn)換中不應有資訊遺失。合作圖之建構(gòu)步驟與準則(續(xù))由以下之步驟可將循序圖轉(zhuǎn)成合作圖合作圖中之物件與循序圖中之物件是相同的。合作圖中之連結(jié)是來自於循序圖中兩物件間有訊息傳送╱接收者。合作圖中之訊息與操作和循序圖也是相同的,只不過在表達時循序圖是依時間順序來表達發(fā)生順序,而合作圖是以數(shù)字(自然數(shù)或杜威數(shù))來表達發(fā)生順序。類別封裝所謂類別封裝(encapsulation),就是找出類別的屬性與操作,並將之封裝在一起,以達到抽象資料類型之目的。在物件導向分析與設(shè)計過程中,是以一個使用個案為單位,找出該使用個案之類別、類別屬性與操作,並建構(gòu)類別圖。接著,針對每個類別圖建構(gòu)一個循序圖或合作圖。封裝類別時,必須將該類別分散在不同使用個案的屬性與操作彙整在一起。類別封裝(續(xù))為便於屬性與操作之彙整,可使用類別與使用個案對照表,橫軸表示系統(tǒng)所有的使用個案,縱軸記錄所有類別,逐一分析每一個類別參與那幾個使用個案,並在其相對應的座標格填入「*」。例如表12-2表達夢幻系統(tǒng)送貨處理與銷退處理類別參與使用個案之情況,其中客戶類別參與送貨處理與銷退處理兩個使用個案,因此封裝客戶類別時,必須將分散在這兩個使用個案的屬性與操作彙整在一起。表12-2類別與使用個案對照表使用個案類別送貨處理銷退處理送貨單*客戶**送貨明細*成品**稅率*銷退單*銷退明細*類別封裝(續(xù)1)完成表12-2後,可從類別所參與的每一個使用循序圖,找出每個類別之操作,並以PDL描述,彙總在表12-3之操作描述欄。此外,可從類別所參與的每一個使用個案之類別圖,將屬性彙總在類別屬性表中(如表12-4,範例如表12-6)。表12-3類別操作描述表樣板操作描述操作名稱類別名稱:表12-4類別屬性表樣版參與之使用個案資料型態(tài)屬姓名稱類別名稱:表12-5新增送貨單操作描述表類別名稱:送貨單操作名稱操

述新增Begin設(shè)定送貨單日期計算該日期的送貨單筆數(shù)加1為序號產(chǎn)生一筆新送貨單編號(送貨單日期+序號)以客戶代號,送訊息給類別客戶,查詢客戶名稱、地址、電話以送貨單編號,送訊息給類別送貨明細,建立送貨單的送貨明細項目,並傳回送貨明細小計以送貨單日期,送訊息給稅率類別,查詢符合送貨單日期所用的稅率計算送貨單總金額設(shè)定折扣數(shù)與折讓金額計算送貨單未稅總金額=小計

×折

溫馨提示

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

評論

0/150

提交評論