第二章 使用UML進(jìn)行建模_第1頁
第二章 使用UML進(jìn)行建模_第2頁
第二章 使用UML進(jìn)行建模_第3頁
第二章 使用UML進(jìn)行建模_第4頁
第二章 使用UML進(jìn)行建模_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章使用UML進(jìn)行建模2.1導(dǎo)言UML統(tǒng)一建模語言是適用于所有面向?qū)ο蠓椒▽W(xué)的標(biāo)準(zhǔn)記號系統(tǒng),可以用于建立系統(tǒng)開發(fā)中的多種模型功能模型 --- 用例圖對象模型 --- 類圖,對象圖動態(tài)模型 --- 交互圖(順序圖)、狀態(tài)圖、

活動圖、協(xié)作圖其他 --- 構(gòu)件圖、部署圖UML可視化建模UML可視化建模2.2UML綜述用例圖(

UseCaseDiagram)用例圖是從用戶角度描述系統(tǒng)功能,是用戶所能觀察到的系統(tǒng)功能的模型圖,用例是系統(tǒng)中的一個功能單元包括參與者、系統(tǒng)邊界、用例本身類圖(ClassDiagram)類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu)。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等,也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和操作)對象圖(ObjectDiagram)

對象圖是類圖的實例,幾乎使用與類圖完全相同的標(biāo)識。他們的不同點在于對象圖顯示類的多個對象實例,而不是實際的類順序圖(SequenceDiagram)順序圖顯示對象之間的動態(tài)合作關(guān)系,它強調(diào)對象之間消息發(fā)送的順序,同時顯示對象之間的交互

順序圖的一個用途是用來表示用例中的行為順序。當(dāng)執(zhí)行一個用例行為時,順序圖中的每條消息對應(yīng)了一個類操作或引起狀態(tài)轉(zhuǎn)換的觸發(fā)事件

協(xié)作圖(CollaborationDiagram)協(xié)作圖描述對象間的協(xié)作關(guān)系,協(xié)作圖跟順序圖相似,顯示對象間的動態(tài)合作關(guān)系。除顯示信息交換外,協(xié)作圖還顯示對象之間的關(guān)系。協(xié)作圖的一個用途是表示一個類操作的實現(xiàn)

順序圖清楚地表示了交互作用中的時間順序(強調(diào)時間),但沒有明確表示對象間的關(guān)系。協(xié)作圖清楚地表示了對象間的關(guān)系(強調(diào)空間),但時間順序必須從順序圖獲得。狀態(tài)圖(StateChartDiagram)狀態(tài)圖是一個類對象所可能經(jīng)歷的所有狀態(tài)的模型圖。狀態(tài)圖的主角是對象的狀態(tài),以及使?fàn)顟B(tài)發(fā)生變化的條件,通過狀態(tài)圖來驗證對象是否存在設(shè)計缺陷。活動圖(ActivityDiagram)類似于傳統(tǒng)意義上的流程圖,描述一個功能的邏輯流程,擅長于描述沒有外部事件參與情況下的程序運行流程構(gòu)件圖(ComponentDiagram)構(gòu)件圖用于靜態(tài)建模,將系統(tǒng)劃分為單個可實施的子系統(tǒng)(構(gòu)件,模塊)。并通過對構(gòu)件間依賴關(guān)系的描述來估計對系統(tǒng)構(gòu)件的修改給系統(tǒng)可能帶來的影響。部署圖(DeploymentDiagram)部署圖用于靜態(tài)建模,是表示運行時子系統(tǒng)的分布及相互依賴關(guān)系。如果含有依賴關(guān)系的子系統(tǒng)放置在不同節(jié)點上,部署視圖可以展示出執(zhí)行過程中的瓶頸。UML參考書籍UML參考書籍1.《用例驅(qū)動UML對象建模應(yīng)用——范例分析》DougRosenberg、KendallScott著,人民郵電出版社,2005。2.《UML精粹——標(biāo)準(zhǔn)對象建模語言簡明指南》(第3版)MartinFowler著,徐家福譯,清華大學(xué)出版社,2005。3.《UML對象、組件和框架——Catalysis方法》DesmondFrancisD’Souza、AlanCameronWills著,清華大學(xué)出版社,2004。4.《UML和模式應(yīng)用》(第2版)CraigLarman著,機械工業(yè)出版社,2004。5.《有效用例模式》SteveAdolph,PaulBramble著,車立紅譯,清華大學(xué)出版社,2003。6.《用例建?!罚琄urtBittner著,姜昊譯,清華大學(xué)出版社,20037.《UML和統(tǒng)一過程實用面向?qū)ο蟮姆治龊驮O(shè)計》JimArlow,IlaNeustadt,機械工業(yè)出版社,2003。8.《UML風(fēng)格》ScottW.Ambler著,王少峰譯,清華大學(xué)出版社,2004。9.《UML用戶指南》GradyBooch,IvarJacobson著,邵維忠等譯,機械工業(yè)出版社,2001年6月。10.《UML參考手冊》IvarJacobson,JamesRumbaugh。姚淑蘭,唐發(fā)根譯。機械工業(yè)出版社,2001附錄UML建模工具1.2.3.4.2.3建?;顒又械母拍钕到y(tǒng)由一組可以進(jìn)行通信的構(gòu)件(子系統(tǒng))組成的有組織集合模型使用不同視角對系統(tǒng)進(jìn)行的抽象描述(各種UML圖)數(shù)據(jù)類型某類型數(shù)據(jù)的抽象表示(整形,浮點)類對結(jié)構(gòu)與行為的一種封裝(子類,繼承,對象)事件系統(tǒng)中相關(guān)的事件(鼠標(biāo)點擊,按鈕按下)消息一種實現(xiàn)對象間異步通信的機制應(yīng)用域從用戶的角度理解系統(tǒng)解答域從開發(fā)者的角度理解系統(tǒng)面向?qū)ο蠓治鲫P(guān)心的是應(yīng)用域建模面向?qū)ο笤O(shè)計關(guān)心的是解答域建模2.4UML的深入透視用例圖用例是從參與者看到的系統(tǒng)行為,描述了某事件發(fā)生時系統(tǒng)提供的功能包含參與者,系統(tǒng)邊界,用例參與者是與用例交互的外部實體,如人員用戶、管理員等,或其他系統(tǒng),如數(shù)據(jù)庫,客戶端等用例可以由參與者啟動,也可由其他用例啟動用例與參與者交換信息用例圖用例的文字描述用例名稱用戶登陸QQ(一般需要有動詞描述)參與者QQ用戶,QQ驗證服務(wù)器,QQ應(yīng)用服務(wù)器事件流(用例的交互序列,應(yīng)該被編號)用戶填寫用戶名及密碼QQ客戶端通過加密將用戶名及密碼傳輸?shù)津炞C服務(wù)器驗證服務(wù)器驗證成功并通知QQ客戶端QQ客戶端向QQ應(yīng)用服務(wù)器發(fā)起請求QQ應(yīng)用服務(wù)器返回用戶信息(包括好友,群等信息)。QQ客戶端顯示主界面入口條件用戶打開QQ客戶端出口條件QQ客戶端顯示主界面其他需求(非功能性需求的體現(xiàn))登陸過程同步,可隨時取消,登陸超時設(shè)置為一分鐘。用例的通信關(guān)系參與者和用例存在數(shù)據(jù)交換時,他們進(jìn)行通信,他們之間用線段連接用例的包含關(guān)系包含關(guān)系是從基本用例到包含用例的關(guān)系A(chǔ)用例包含B用例說明A用例可以啟動B用例,使用“use”,或者“include”表示如果A用例使用了其他用例,在其他需求中描述用例名稱與好友聊天參與者QQ用戶,QQ應(yīng)用服務(wù)器事件流………入口條件用戶已登錄QQ客戶端出口條件退出聊天界面其他需求在與好友聊天的過程中,啟動用例傳輸聊天信息用例的擴展關(guān)系擴展關(guān)系是從擴展用例到基本用例的關(guān)系A(chǔ)用例擴展B用例說明A用例在B用例的基礎(chǔ)上擴展了功能。用例的繼承關(guān)系對某個用例增加更多的細(xì)節(jié),就可以被說明成為新的用例,并且與原用例呈繼承關(guān)系包含是說明該用例包含其他用例,作為其他用例的啟動前提擴展對基本用例的功能進(jìn)行擴展繼承是對原用例細(xì)節(jié)的擴展用例關(guān)系建模正確與否影響到后期對象模型與系統(tǒng)模型問題查找好友用例和添加好友用例是什么關(guān)系?擴展播放歌曲用例與將歌曲推薦給好友是什么關(guān)系?擴展登陸用例和隱身登陸用例是什么關(guān)系繼承播放歌曲與啟動系統(tǒng)自帶播放器用例是什么關(guān)系?包含如何驗證用例場景-用例的實例,場景注重可理解性,用例注重完整性。一個用例可能有多個場景場景名稱查找好友參與者張三:QQ用戶,QQ應(yīng)用服務(wù)器事件流張三通過PC端QQ客戶端程序在聊天,忽然想起需要查找一個朋友

張三打開QQ查找界面,發(fā)現(xiàn)里面有按昵稱查找和按號碼查找張三找到了上次聚會朋友所給的QQ號碼并輸入QQ客戶端顯示查找到的對方信息。問題請描述一下解鎖你的手機的場景?類圖類圖以反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系為主要目的,描述了軟件系統(tǒng)的結(jié)構(gòu),是一種靜態(tài)建模方法類圖中的“類”與面向?qū)ο笳Z言中的“類”的概念是對應(yīng)的,是對現(xiàn)實世界中的事物的抽象類圖中的事物及解釋從上到下分為三部分,分別是類名、屬性和操作。類名是必須有的類如果有屬性,則每一個屬性都必須有一個名字,另外還可以有其它的描述信息,如可見性、數(shù)據(jù)類型、缺省值等類如果有操作,則每一個操作也都有一個名字,其它可選的信息包括可見性、參數(shù)的名字、參數(shù)類型、參數(shù)缺省值和操作的返回值的類型等可見性-代表private+代表public#代表protected也可以使用圖形表示返回值類型操作名稱斜體為抽象操作缺省值類名斜體為抽象類屬性名稱參數(shù)列表(標(biāo)準(zhǔn)圖形)(變體圖形)接口抽象類模版參數(shù)模版類類圖中的事物及解釋接口:一組操作的集合,只有操作的聲明而沒有實現(xiàn)抽象類:不能被實例化的類,一般至少包含一個抽象操作模版類:一種參數(shù)化的類,在編譯時把模版參數(shù)綁定到不同的數(shù)據(jù)類型,從而產(chǎn)生不同的類UML表示法類圖中的關(guān)系及解釋關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是一種最簡單、最抽象的對象間關(guān)系描述。它只是描述了對象A于對象B之間存在一種業(yè)務(wù)上、概念上的邏輯關(guān)系,但是關(guān)聯(lián)關(guān)系的雙方不包含對方的屬性。例如(學(xué)生-成績)

一般的關(guān)聯(lián)關(guān)系語義較弱。也有兩種語義較強,分別是聚合與組合UML表示法UML表示法聚合關(guān)系特殊關(guān)聯(lián)關(guān)系,指明一個聚集(整體)和組成部分之間的關(guān)系(例如汽車和車隊)組合關(guān)系語義更強的聚合,部分和整體具有相同的生命周期(例如人和大腦)UML表示法UML表示法類Circle、Rectangle實現(xiàn)了接口Shape的操作泛化關(guān)系在面向?qū)ο笾幸话惴Q為繼承關(guān)系,存在于父類與子類、父接口與子接口之間實現(xiàn)關(guān)系對應(yīng)于類和接口之間的關(guān)系UML表示法模板類Stack<T>定義了棧相關(guān)的操作;IntStack將參數(shù)T與實際類型int綁定,使得所有操作都針對int類型的數(shù)據(jù)類Memento和類Originator建立了友元依賴關(guān)系,以便Originator使用Memento的私有變量state依賴關(guān)系描述了一個類的變化對依賴于它的類產(chǎn)生影響的情況。有多種表現(xiàn)形式,例如綁定(bind)、友元(friend)等C++代碼classVehicle{public:

virtualintStart()=0;

virtualintStop()=0;

virtualintRun(floatfSpeed)=0;private:

floatfMaxSpeed;};Java代碼publicabstractclassVehicle{

publicabstractintStart();

public

abstractintStop();

public

abstractintRun(floatfSpeed);

privatefloatfMaxSpeed;}類圖與代碼的映射C++代碼classDialog{private:ButtonbtnOK;ButtonbtnCancel;TextBoxtxtInfo;};classButton{};classTextBox{};組合關(guān)系,代碼表現(xiàn)為Dialog的屬性有Button和TextBox的對象如果Dialog銷毀,Button和TextBox對象也需要銷毀關(guān)聯(lián)關(guān)系的映射-組合關(guān)系

聚合關(guān)系,代碼表現(xiàn)為B類含有A對象的引用,如classB{A*a;};classA{inti;};B類對象銷毀,A類對象不一定銷毀關(guān)聯(lián)關(guān)系的映射-聚合關(guān)系Java代碼publicclassSavingsAccountextendsAccount{………}C++代碼classSavingsAccount:publicAccount{……};泛化(繼承)關(guān)系的映射C++代碼classShape{public:virtualvoid

Draw()=0;};classCircle:publicShape{public:void

Draw();private;

PointptCenter;

intnRadius;};Java代碼publicinterfaceShape{publicabstract

voidDraw();}publicclassCircleimplementsShape{publicvoid

Draw();privatePointptCenter;privateintnRadius;}在C++語言里面,使用抽象類代替接口,使用泛化關(guān)系代替實現(xiàn)關(guān)系在Java語言里面,有相應(yīng)的關(guān)鍵字interface、implements實現(xiàn)關(guān)系的映射綁定依賴C++代碼template<typenameT>classStack{private:intsize;public:intPush(Telem);intPop();constT&GetTop();};typedefStack<float>FloatStack;C++代碼(編譯器生成)classFloatStack{private:intsize;public:intPush(floatelem);intPop();constfloat&GetTop

溫馨提示

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

最新文檔

評論

0/150

提交評論