电竞比分网-中国电竞赛事及体育赛事平台

分享

UML 基礎(chǔ)

 星光閃亮圖書館 2017-09-22

UML的基本結(jié)構(gòu)


       通過對UML的學(xué)習(xí),整理出了上面這幅UML概要結(jié)構(gòu)圖,主要是UML事物,UML關(guān)系和UML圖,還有很多規(guī)格說明,符號,修飾,擴(kuò)展機(jī)制等等元素沒有體現(xiàn),其實,圖中的三大塊加上那么多邊邊角角的元素,高度濃縮概括起來,可以把UML這門課的主要內(nèi)容描述為:

       在軟件生命周期中,準(zhǔn)確地把 UML事物和UML關(guān)系通過一定規(guī)則組合,利用Rose繪制成UML的9種圖,以幫助我們開發(fā)出高質(zhì)量的軟件。

        

         簡略來說,UML的9種圖在軟件生命周期中各個階段的應(yīng)用主要體現(xiàn)在:

       

1、在需求分析階段:主要采用用例圖來描述需求(角色、功能、外部交互等);
2、在分析階段:明確解決問題的細(xì)節(jié),主要采用類圖來描述靜態(tài)結(jié)構(gòu),采用順序圖,協(xié)作圖,活動圖,狀態(tài)圖來描述系統(tǒng)動態(tài)行為;
3、在設(shè)計階段:給出解決方案,主要采用類圖、包,對類的接口進(jìn)行設(shè)計;
4、在實現(xiàn)階段:將類用一種面向?qū)ο笳Z言實現(xiàn);
5、測試階段:單元測試使用類圖和類的規(guī)格說明書。集成測試使用類圖,包,構(gòu)件圖和協(xié)作圖。系統(tǒng)測試使用用例圖來測試系統(tǒng)的功能;

6、集成和交付階段:主要采用構(gòu)件圖、包、部署圖;

         

       以上只是很簡略地說明了UML的應(yīng)用,在下面的博客中,我們將介紹充分利用UML,面向?qū)ο蟮能浖_發(fā)過程,即RUP(Rational Unified Process)

       

       補(bǔ)(欠了一點東西,終于補(bǔ)全了):什么是RUP——http://blog.csdn.net/shan9liang/article/details/6723229


UML中幾種類間關(guān)系:繼承、實現(xiàn)、依賴、關(guān)聯(lián)、聚合、組合的聯(lián)系與區(qū)別

一、表示符號上的區(qū)別

 

二、具體區(qū)別與聯(lián)系

繼承(泛化)

       指的是一個類(稱為子類、子接口)繼承另外的一個類(稱為父類、父接口)的功能,并可以增加它自己的新功能的能力,繼承是類與類或者接口與接口之間最常見的關(guān)系,可分單重繼承,多重繼承(java不支持);在Java中此類關(guān)系通過關(guān)鍵字extends明確標(biāo)識。

       實現(xiàn)

      指的是一個class類實現(xiàn)interface接口(可以是多個)的功能;實現(xiàn)是類與接口之間最常見的關(guān)系;在Java中此類關(guān)系通過關(guān)鍵字implements明確標(biāo)識

      依賴

      可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關(guān)系是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A;比如某個老師要授課,則需要有這么一門課讓他教授,此時老師與課之間的關(guān)系就是依賴;表現(xiàn)在代碼層面,為類Course作為參數(shù)被類Professor在Teach方法中使用;

      關(guān)聯(lián)

      它體現(xiàn)的是兩個類、或者類與接口之間語義級別的一種強(qiáng)依賴關(guān)系,普通關(guān)聯(lián)關(guān)系的兩個類處于同一層次上,關(guān)聯(lián)可以是單向(只有一個類知道另外一個類的公共屬性和操作)的也可以是雙向(兩個類都知道另一個類的公共屬性和操作)的;大多數(shù)關(guān)聯(lián)應(yīng)該是單向的,單向關(guān)系更容易建立和維護(hù),有助于尋找可服用的類。

雙向關(guān)聯(lián):

單向關(guān)聯(lián):

      聚合

      聚合是關(guān)聯(lián)關(guān)系的一種特例,他體現(xiàn)的是整體與部分、擁有的關(guān)系,即has-a的關(guān)系,此時整體與部分之間是可分離的,他們可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享;比如書本與暑假、公司與員工的關(guān)系等;具體表現(xiàn)為,如果A由B聚合成,表現(xiàn)為A包含有B的全局對象,但是B對象可以不在A創(chuàng)建的時刻創(chuàng)建。

      組合

      組合也是關(guān)聯(lián)關(guān)系的一種特例,他體現(xiàn)的是一種contains-a的關(guān)系,這種關(guān)系比聚合更強(qiáng),也稱為強(qiáng)聚合;他同樣體現(xiàn)整體與部分間的關(guān)系,但此時整體與部分是不可分的,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束,也可以理解為如果A由B組成,表現(xiàn)為A包含有B的全局對象,并且B對象在A創(chuàng)建的時刻創(chuàng)建。比如你和你的大腦或一本書和它的書頁。

      綜上所述,對于繼承、實現(xiàn)這兩種關(guān)系比較簡單,他們體現(xiàn)的是一種類與類、或者類與接口間的縱向關(guān)系;其他的四者關(guān)系則體現(xiàn)的是類與類、或者類與接口間的引用、橫向關(guān)系,這幾種關(guān)系都是語義級別的,所以從代碼層面并不能完全區(qū)分各種關(guān)系;從后幾種關(guān)系所表現(xiàn)的強(qiáng)弱程度來看,依次為:組合>聚合>關(guān)聯(lián)>依賴。在面向?qū)ο蟮脑O(shè)計過程中,能采取強(qiáng)度較大的關(guān)系,決不能采取強(qiáng)度小的關(guān)系。

     隨著學(xué)習(xí)深入,會加上代碼實現(xiàn)!




      從上面的用例圖模型,我們可以大致了解用例圖所描述的是什么。下面進(jìn)行詳細(xì)介紹。

 

      用例圖,即用來描述什么角色通過某某系統(tǒng)能做什么事情的圖,用例圖關(guān)注的是系統(tǒng)的外在表現(xiàn),系統(tǒng)與人的交互,系統(tǒng)與其它系統(tǒng)的交互。

      用例圖有三種構(gòu)成元素,分別是:角色,用例,關(guān)系

1、角色(Actor):即使用本系統(tǒng)的有哪些角色,不同的角色使用的系統(tǒng)功能部分是不同的,在用例圖中用小人表示。

值得注意的是,角色可能是人,也可能不是人,而是另外的一個系統(tǒng),本系統(tǒng)與另外一個系統(tǒng)交互的話,可以將另外一個系統(tǒng)畫成某某角色。

分析得到角色的原則,也可以看做是我們在獲得角色時,需要思考的內(nèi)容:

  1)有哪些直接使用系統(tǒng)的人

  2)涉及到哪些維護(hù)人員

  3)使用哪些外設(shè)

  4)相連的其他系統(tǒng)

  5)還有哪些人和事物對這個系統(tǒng)產(chǎn)生的結(jié)果感興趣。


2、用例:即系統(tǒng)具有的功能,在用例圖中用橢圓圈表示,圈里用文字描述該用例,一般為動賓短語。

值得注意的是,某個用例不一定是只屬于一個角色的,有些用例是同時屬于多個角色的,即被多個角色“共享”。

 

在這里圖書館信息系統(tǒng)說明一下,用例的粒度與范圍

  概述級

 

  用戶目標(biāo)級

 

  子功能級

 

 

3、關(guān)系:即角色與用例之間的關(guān)系,在用例圖中用線條表示,

線條是指角色與用例之間的線條,這些線條是用來聯(lián)系角色(小人)和用例(圈圈)的,表示某某角色能“做”什么用例。

 

線條有兩種:無箭頭的,有箭頭的。

有箭頭的線條,表示角色與系統(tǒng)交互的過程中,數(shù)據(jù)的流向,如果箭頭指向用例,就說明角色需要往系統(tǒng)輸入數(shù)據(jù),如果箭頭指向角色,說明系統(tǒng)往角色輸出數(shù)據(jù)。沒有箭頭的線條,則沒有明確表示數(shù)據(jù)的流向。

 

有的時候,用例圖在細(xì)化到子功能級別時,還會出現(xiàn)虛線箭頭,如上圖所示。

 

綜上所述,并結(jié)合繪制用例圖需要注意的一些細(xì)節(jié),整理出以下這張圖來更加形象的說明用例圖。



類圖(Class Diagram)是描述類、接口、協(xié)作以及它們之間關(guān)系的圖。

 

類圖是系統(tǒng)中靜態(tài)視圖的一部分,靜態(tài)視圖可以包括許多的類圖。

 

靜態(tài)視圖用于為軟件系統(tǒng)進(jìn)行結(jié)構(gòu)建模,它構(gòu)造系統(tǒng)的詞匯和關(guān)系,而結(jié)構(gòu)模型的可視化就是通過類圖來實現(xiàn)的。

 

類圖由以下基本元素構(gòu)成:類;接口;協(xié)作;關(guān)系(依賴、泛化、實現(xiàn)和關(guān)聯(lián))。

 

如果對類圖中的關(guān)系模糊,可以看我的另一篇博客:

 http://blog.csdn.net/shan9liang/article/details/6705728

 

下面用一張圖來概括類圖的基本內(nèi)容:

 

 

通常以下述3種方法之一使用類圖:

 

1、對系統(tǒng)的詞匯建模

UML構(gòu)建系統(tǒng)通常是從構(gòu)造系統(tǒng)的基本詞匯開始,用于描述系統(tǒng)的邊界,也就是說用來決定哪些抽象是要建模系統(tǒng)中的一部分,哪些抽象是處于要建模系統(tǒng)之外。這是非常重要的一項工作,因為系統(tǒng)最基本的元素在這里被確定。可以用類圖描述抽象和它們的職責(zé)。


2、對簡單協(xié)作建模

現(xiàn)實世界中的事物大多是相互聯(lián)系、相互影響的,將這些事物抽象成類后,情況也是如此。所要構(gòu)造的軟件系統(tǒng)中的類很少有孤立存在的。它們總是和其他類協(xié)同工作,以實現(xiàn)強(qiáng)于單個類的語義。因此,在抽象了系統(tǒng)詞匯后,系統(tǒng)分析師還必須將這些詞匯中是事物協(xié)同工作的方式可視化和詳述。

 

3、對邏輯數(shù)據(jù)庫模式建模

在設(shè)計一個數(shù)據(jù)庫是,通常使用數(shù)據(jù)庫模式來描述數(shù)據(jù)庫的概念設(shè)計。數(shù)據(jù)庫模式建模是對數(shù)據(jù)庫概念設(shè)計的藍(lán)本,可以使用類圖對這些數(shù)據(jù)庫的模式進(jìn)行建模。


一、用一張圖來介紹一下對象圖的基本內(nèi)容


二、對象圖與類圖的基本區(qū)別


三、對象圖實例


活動圖(Activity Diagram)—UML圖(四)


 “活動圖”可通過一系列操作將業(yè)務(wù)流程或軟件進(jìn)程以工作流的形式顯示出來。這些操作可以由人、軟件組件或計算機(jī)來執(zhí)行。

使用活動圖可以描述多種類型的流程,如下:

1、用戶和您的系統(tǒng)之間的業(yè)務(wù)流程或工作流。 

2、某一用例中執(zhí)行的步驟。 

3、軟件協(xié)議,即允許在組件間進(jìn)行的交互序列。

4、軟件算法。

  • 下面用一張圖來介紹活動圖的基本內(nèi)容



    下面是用rose 和 onenote結(jié)合畫的一張活動圖的實例,基本囊括了活動圖的重要元素。



狀態(tài)圖用來描述一個特定的對象的所有可能的狀態(tài)以及由于各種事件的發(fā)生而引起的狀態(tài)之間的轉(zhuǎn)移。與活動圖的主要區(qū)別體現(xiàn)在:狀態(tài)圖側(cè)重從行為的結(jié)果來描述,而活動圖側(cè)重從行為的動作來描述?;顒訄D可能涉及多個對象,而狀態(tài)圖只涉及一個特定的對象。

        

       下面,通過一張圖來描述狀態(tài)圖的基本內(nèi)容。




        下面是一張狀態(tài)圖的實例圖,描述了一個溫度控制器的狀態(tài)圖。



時序圖(Sequence Diagram)—UML圖(六)

時序圖(Sequence Diagram)是顯示對象之間交互的圖,這些對象是按時間順序排列的。時序圖中顯示的是參與交互的對象及其對象之間消息交互的順序。

       下面這張圖介紹了時序圖的基本內(nèi)容:




          下面這張圖是時序圖的實例,創(chuàng)建課程時序圖:




協(xié)作圖(Collaboration Diagram)—UML圖(七)

協(xié)作圖(Collaboration Diagram /Communication Diagram,也叫合作圖)是一種交互圖(interaction diagram),強(qiáng)調(diào)的是發(fā)送和接收消息的對象之間的組織結(jié)構(gòu)。一個協(xié)作圖顯示了一系列的對象和在這些對象之間的聯(lián)系以及對象間發(fā)送和接收的消息。對象通常是命名或匿名的類的實例,也可以代表其他事物的實例,例如協(xié)作、組件和節(jié)點。使用協(xié)作圖來說明系統(tǒng)的動態(tài)情況。

       下面這張圖介紹協(xié)作圖的基本內(nèi)容:



          下面一張圖是一個協(xié)作圖的實例,創(chuàng)建課程的協(xié)作圖:




          由于協(xié)作圖和時序圖在語意上是相通的,所以可以互相轉(zhuǎn)換,下面是利用ROSE把上面的協(xié)作圖轉(zhuǎn)換成的時序圖的實例:



構(gòu)件圖(Component Diagram)—UML圖(八)

  構(gòu)件圖是顯示代碼自身結(jié)構(gòu)的實現(xiàn)級別的圖表。構(gòu)件圖由諸如源代碼文件、二進(jìn)制代碼文件、可執(zhí)行文件或動態(tài)鏈接庫 (DLL) 這樣的構(gòu)件構(gòu)成,并通過依賴關(guān)系相連接


      下面這張圖介紹了構(gòu)件圖的基本內(nèi)容:



        

           下面這張圖是個構(gòu)件圖的實例:



部署圖(Deployment Diagram)—UML圖(九)

 UML部署圖描述了一個運行時的硬件結(jié)點,以及在這些結(jié)點上運行的軟件組件的靜態(tài)視圖。 部署圖顯示了系統(tǒng)的硬件,安裝在硬件上的軟件,以及用于連接異構(gòu)的機(jī)器之間的中間件。

        

        下面這張圖介紹了部署圖的基本內(nèi)容:


         

         下面這張圖是一個部署圖的實例:



             補(bǔ)充一點,節(jié)點和構(gòu)件的聯(lián)系與區(qū)別:

節(jié)點的概念和構(gòu)件有許多相同之處,例如二者有多名稱,都可以參與依賴、泛化和關(guān)聯(lián)關(guān)系,都可以被嵌套,都可以有實例,都可以參與交互。

但它們之間也存在明顯的區(qū)別:構(gòu)件是參與系統(tǒng)執(zhí)行的事物,而節(jié)點是執(zhí)行構(gòu)件的事物;構(gòu)件表示邏輯元素的物理打包,而節(jié)點表示構(gòu)件的物理部署



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多