




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章物件互動行為塑模物件導向分析與設計需求塑模SA&D塑模RASASD需求使用者介面架構PAC或MVC活動圖狀態圖元件圖部署圖物件圖類別圖應用分治原理物件導向介面藍圖介面元件規格循序圖狀態圖合作圖循序圖活動圖藍圖資料詞彙使用個案圖導論物件互動行為塑模主要以互動圖來表達物件間動態之互動行為。互動圖:描述一個使用個案內物件間之互動行為循序圖著重以時間發生之先後順序來表達物件間的訊息傳遞與處理之程序合作圖著重表達物件間之連結結構,並能同時展現物件間的訊息傳遞與處理之程序。循序圖與合作圖可以完全相互轉換,因此除非必要,否則僅建構一種圖(例如循序圖)就可以了,以避免重複。有些CASE工具提供自動轉換的功能(MagicDraw好像沒有)。CollaborationDiagram在UML2稱為CommunicationDiagram循序圖之元件循序圖之重要元件物件訊息操作與操作描述生命線與控制焦點物件循序圖之物件可直接用類別圖上類別之物件,其表達之方式是在類別之名稱下劃一底線。循序圖之元件(續)訊息循序圖之訊息或刺激是由某一物件(A)送至另一物件(B)以啟動操作(operationsormethods)。在A中呼叫B.操作名稱()在循序圖中,訊息是以水平之箭頭表示,且箭頭起始於送訊息之區域(也就是下面所介紹之控制焦點;FocusofControl),終止於接受訊息之區域。操作與操作描述循序圖之操作在於描述循序圖中,某一物件接到另一物件送達的訊息時,接收端之物件為了執行發送端物件送來之要求,所提供因應處理該訊息之方法。循序圖之元件(續1)生命線(LifeLine)循序圖之生命線是劃在物件底下與物件垂直之虛線,用於表達物件在某時段之存在,例如從物件接收到訊息或被新創出來開始到其被刪除為止。控制焦點循序圖之控制焦點表達物件執行某動作之時段,包括由其執行或透過其附屬程式。控制焦點用高且瘦的矩形(長條圖)表示,且與該物件之生命線重疊。圖12-1循序圖範例客戶(行為者)系統邊界使用者介面購物車:購物車修改訂購數量()設訂定夠數量()購物車內容明細計算總金額()訊息與操作控制焦點生命線物件為了讓分析工作能夠順利進行,而不會被枝枝節節的小事絆住,一開始的訊息可以只表達出需要由另一個物件完成的動作。在後續的tuneup
,才把動作換成方法的方式表達(含參數)。循序圖之建構步驟與準則循序圖之建構可以由類別圖來確認:類別之物件物件間傳遞之訊息及操作等,再進一步繪製循序圖確認物件循序圖中之物件來自類別圖(也可能發現物件,而該物件的類別尚未定義於類別圖中)到了最後,所有循序圖中的物件,都可以在類別圖中找到其相對應的物件放置物件的法則以物件出現順序或按時間發生之順序排列兩個物件間,表達訊息之水平線距離愈短愈好圖12-3a物件排列範例一物件A物件B物件C圖12-3b物件排列範例二物件A物件B物件C循序圖之建構步驟與準則(續)真實系統都存在一個系統邊界,以作為系統與外界溝通之介面,該系統邊界常被擺在循序圖最左邊第一個物件之左側。一般來說,下頁圖中的系統邊界和時間軸都不會畫出來。圖12-4系統邊界擺置範例物件1物件2物件3物件4系統邊界時間軸循序圖之建構步驟與準則(續1)描述操作描述操作是操作之細部詳細說明,主要是從系統行為之觀點,描述系統之動作與邏輯順序及所需之輸入與輸出。一般來說,如果你的操作名稱就足以清楚的表達,並不需要操作的描述。描述操作是往後程式設計的重要依據,程式編輯完成後,這些描述操作可作為程式的註解。為了讓操作能清楚表達各物件之動作,可以一條水平虛線隔開不同物件之操作。循序圖之建構步驟與準則(續2)描述操作放置於循序圖的最左邊,並按發生之時間順序由上而下排列,操作之內容主要來自使用個案之情節描述。實在是不常見。在標準內,也找不到。循序圖之建構步驟與準則(續4)描述訊息一般來說,訊息常需與操作相結合。若使用個案之情節是以事件條列式描述,也就是採用(主詞)+動詞+受詞的方式表示,且其中的動詞若是操作,則該操作的輸入或輸出就可能是訊息。將每一訊息之參數數目減到最少。相同或類似的訊息處理,其命名應該相同。命名時,應能從名稱上反應出物件間訊息傳遞的作用、訊息的內容或其意義。循序圖之建構步驟與準則(續5)繪製循序圖之步驟將物件置於循序圖之上方,並依物件間訊息傳送╱接收發生之時間順序等原則安排物件由左至右之順序。在物件下劃與物件垂直之生命線,再標示物件間傳送╱接收之訊息與相關之操作。再依每一物件執行某動作之時段劃控制焦點。循序圖之架構循序圖之呈現架構集中式階梯式集中式集中式架構之特徵是所有的物件訊息傳遞皆由一個物件負責物件A物件B物件C物件D圖12-6集中式循序圖階梯式階梯式架構之特徵是物件訊息傳遞不全然由某一物件負責,每一物件均可涉及物件之訊息傳遞,此種架構下,系統設計之複雜度可分散到每一個物件上。循序圖之架構(續)物件A物件B物件C物件D圖12-7階梯式循序圖循序圖之建構案例(一)以下將以夢幻系統之新增送貨單為例,說明如何建構循序圖。確認物件由類別圖可以得知該使用個案有送貨單、客戶、送貨明細、成品、稅率等五個類別,因此該類別之物件就是循序圖中之物件。確認物件間之訊息與操作依據使用個案描述找出每個類別物件所啟動的訊息,以及該訊息屬於哪個類別物件的操作,這些資訊可表示如圖12-8。
1.1產生送貨單編號1.2查詢客戶資訊1.3新增送貨明細1.3.1查詢成品資訊1.3.2更新成品庫存1.4查詢稅率1.5計算各項金額1.6儲存送貨單送貨單查詢新增查詢新增查詢送貨明細成品稅率客戶業務部新增圖12-8新增送貨單循序圖ClassStereotypeNotation何謂stereotype?AstereotypeisanextensionofthevocabularyoftheUML,allowingyoutocreatenewkindsofbuildingblockssimilartoexistingonesbutspecifictoyourproblem.可以<<名稱>>表示,也可以用其他的icons來代表ClassStereotypeNotationUML預設三種類別的stereotypes:Boundaryobject(邊界物件)一般來說,指的就是使用者介面以<<boundary>>表達Ex.Web-based的系統其介面就是網頁一般來說,若某usecase與actor間連線的話,就應該要存在一個邊界物件。ClassStereotypeNotationUML預設三種類別的stereotypes:Controlobject(控制物件)一個控制物件是用來管理行為、控制程序執行的流程(也就是我們之前說的控制類別)一般來說,控制物件是用來表達businesslogic或者businessrules以<<control>>表達Entityobject(實體物件)代表現實世界中的事、物、或概念,通常是系統認為需要將它們的資料儲存在資料庫中。也就是我們之前說的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夢幻系統修改後的sequencediagram新增了一個controlclass和boundaryclass你必須為這些修改classdiagram有些方法已經加上了傳遞的參數,有必要,你們可以把這個圖補完整這樣的設計可以用在window-based(如JFrame)的程式在一些小系統,control和boundaryclasses不是很容易區分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產生一個DistanceGUIFrame
的物件//DistanceGUIFrame
是一個兼具boundaryclass和controlclass的類別//較複雜的系統,可以利用另一個類別來處理事件。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}夢幻系統夢幻系統這樣的設計如果用在web-based(如JSP)的程式,需要變動嗎?Prefer程式,而非靜態的HTML網頁,因為sessionmanagement。要如何修改?夢幻系統–JSP版合作圖合作圖主要用於描述許多物件在單一使用個案中之互動行為,但不太適用於對這些行為的精準定義。本節將介紹合作圖之元件與建構步驟及準則。合作圖之元件合作圖之重要元件物件連結訊息物件合作圖之物件與循序圖之物件相同,均是來自於類別圖上類別之物件,其表達之方式是在類別之名稱下劃一底線。合作圖之元件(續)連結合作圖之連結是用於表示一個物件如何與另一個物件連接,以直線來表示。合作圖上之連結也就是物件間之路徑。訊息合作圖之訊息包含兩物件間之訊息傳送╱接收內容與操作,並且將這些訊息伴隨著一個箭頭來表示,訊息之發生順序可在訊息前面加一個序數來表示。圖12-10合作圖範例1.修改訂單數量客戶(行為者)使用者介面購物車:購物車連結2.設定訂購數量()4.購物車內容明細3.計算總金額訊息與操作合作圖之建構步驟與準則合作圖與循序圖均表達一個使用個案內,許多物件間之互動行為,兩者均由相同的資料中推演出,因此兩種圖在語意上是相同的。也就是說,您可以從循序圖轉換成合作圖,也可以從合作圖轉換成循序圖,轉換中不應有資訊遺失。合作圖之建構步驟與準則(續)由以下之步驟可將循序圖轉成合作圖合作圖中之物件與循序圖中之物件是相同的。合作圖中之連結是來自於循序圖中兩物件間有訊息傳送╱接收者。合作圖中之訊息與操作和循序圖也是相同的,只不過在表達時循序圖是依時間順序來表達發生順序,而合作圖是以數字(自然數或杜威數)來表達發生順序。類別封裝所謂類別封裝(encapsulation),就是找出類別的屬性與操作,並將之封裝在一起,以達到抽象資料類型之目的。在物件導向分析與設計過程中,是以一個使用個案為單位,找出該使用個案之類別、類別屬性與操作,並建構類別圖。接著,針對每個類別圖建構一個循序圖或合作圖。封裝類別時,必須將該類別分散在不同使用個案的屬性與操作彙整在一起。類別封裝(續)為便於屬性與操作之彙整,可使用類別與使用個案對照表,橫軸表示系統所有的使用個案,縱軸記錄所有類別,逐一分析每一個類別參與那幾個使用個案,並在其相對應的座標格填入「*」。例如表12-2表達夢幻系統送貨處理與銷退處理類別參與使用個案之情況,其中客戶類別參與送貨處理與銷退處理兩個使用個案,因此封裝客戶類別時,必須將分散在這兩個使用個案的屬性與操作彙整在一起。表12-2類別與使用個案對照表使用個案類別送貨處理銷退處理送貨單*客戶**送貨明細*成品**稅率*銷退單*銷退明細*類別封裝(續1)完成表12-2後,可從類別所參與的每一個使用循序圖,找出每個類別之操作,並以PDL描述,彙總在表12-3之操作描述欄。此外,可從類別所參與的每一個使用個案之類別圖,將屬性彙總在類別屬性表中(如表12-4,範例如表12-6)。表12-3類別操作描述表樣板操作描述操作名稱類別名稱:表12-4類別屬性表樣版參與之使用個案資料型態屬姓名稱類別名稱:表12-5新增送貨單操作描述表類別名稱:送貨單操作名稱操
描
作
述新增Begin設定送貨單日期計算該日期的送貨單筆數加1為序號產生一筆新送貨單編號(送貨單日期+序號)以客戶代號,送訊息給類別客戶,查詢客戶名稱、地址、電話以送貨單編號,送訊息給類別送貨明細,建立送貨單的送貨明細項目,並傳回送貨明細小計以送貨單日期,送訊息給稅率類別,查詢符合送貨單日期所用的稅率計算送貨單總金額設定折扣數與折讓金額計算送貨單未稅總金額=小計
×折
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兼职团队管理日常管理制度
- 农业公司药材种植管理制度
- 出租车车载设备管理制度
- 分公司日常开销管理制度
- 分布式监控安全管理制度
- 制药企业提取设备管理制度
- 医疗器械公司重症监护管理制度
- 医院机器人药品设备管理制度
- 即时检验(poct)管理制度
- 售楼部代理公司pk管理制度
- GB/T 30685-2024气瓶直立道路运输技术要求
- DLT 5434-2021 电力建设工程监理规范表格
- 【深信服】PT1-AF认证考试复习题库(含答案)
- 屋顶光伏劳务合同范本
- 广东省广州市越秀区执信中学2025届高一下数学期末教学质量检测模拟试题含解析
- 《灰尘的旅行》阅读测试题附答案
- 西南联大与现代中国智慧树知到期末考试答案章节答案2024年云南师范大学
- MOOC 心理学与生活-南京大学 中国大学慕课答案
- SYT 6968-2021 油气输送管道工程水平定向钻穿越设计规范-PDF解密
- 夜市应急方案及措施
- 2024年北京海淀社区工作者招聘笔试冲刺题(带答案解析)
评论
0/150
提交评论