久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

UML類圖總結(jié)

 quandsu 2014-12-19

前言

類圖和序列圖是UML中最常用的兩種Diagram,。我將做詳細的總結(jié),。在許多書中,或者網(wǎng)站中,,在介紹一個系統(tǒng)的子系統(tǒng)的設(shè)計時,,很多時候,都是給出簡單的類圖來簡述構(gòu)成子系統(tǒng)的類之間的關(guān)系,。這足以說明類圖的重要性,。
對類圖的基本認識有以下兩點:

  1. 類圖是以反映類的結(jié)構(gòu)(屬性,、操作)以及類之間的關(guān)系為主要目的,,描述了軟件系統(tǒng)的結(jié)構(gòu),是一種靜態(tài)建模方法,;
  2. 類圖中的類與面向?qū)ο笳Z言中的類的概念是對應(yīng)的,,是對現(xiàn)實世界中的事物的抽象。
    我們基于以上兩點,,來對類圖進行更詳細的學(xué)習(xí),。

類圖中基本語法學(xué)習(xí)

在UML中,,畫每一種圖,都有一套規(guī)范的,,不同的符號是不同的意義,,我們要熟悉這些符號的意義,才能理解一副類圖的意義,。
先來一副畫好的類圖,,從解析這個類圖開始:

如圖,,這是一副很簡單的類圖,很簡單,,也很熟悉,。
可以看到,這個類圖,,從上到下分為三部分,。是的,一般類圖從上到下分為三部分,,分別是:

  1. 類名
  2. 屬性
  3. 操作

正如你所看到的,,上面類圖的名稱是Student,,屬性有Name, Sex, Age, 對應(yīng)的操作有六個。你應(yīng)該知道一個類圖的Student是必須存在的,,而屬性和操作是可選的,。如果,你看到了一個沒有任何屬性和操作的類時,,也不要感到驚訝,,那是正確,雖然不是很正常,。
類的名字沒有什么好說的,,那么,,我從屬性開始,例如以下屬性:
- Name:String
如果你看過Objective-C,,你也許就不會感到驚訝,,為什么有減號和加號了,但是,,伙計,,這里的減號和加號和Objective-C中的意思是完全不同的。
這里的加號和減號表示的是屬性和方法的可訪問性,,有如下定義:

  1. -表示private
  2. +表示public
  3. #表示protected

Name表示的是屬性的名稱,,而它后面的String表示的是這個屬性的類型,;
那么現(xiàn)在對于- Name:String就好理解了;它表示Student類中定義的一個私有的String類型的屬性Name,;而對于圖中這樣的一個特例:
- Age:int=10
在這里,,int=10,表示的Age屬性的默認值為10,。

最下面是類的操作,“+”的意思,,已經(jīng)解釋過了,。我選取以下的一個操作進行詳細講解:
+ SetAge(Age:int):void
操作名為SetAge,參數(shù)為int類型的Age,,操作的返回值為void,。有的時候,我們會遇到以下的這種語法:
+ SetAge(in Age:int):void
是的,,多了一個in關(guān)鍵字,,這個關(guān)鍵字表示這個Age參數(shù)是輸入?yún)?shù),如果看過C#的話,,理解其中的out關(guān)鍵字,,我想in就不用我多講了。

抽象類

看下面這個圖:

你會發(fā)現(xiàn)類名和Eat方法是以斜體字體表示的,;在類圖中以斜體表示也是有特殊意義的,上圖表示Animal是一個抽象類,,抽象類是不能實例化的,,一般至少包含一個抽象操作,,比如上圖的Eat就是抽象操作。

接口

看下圖這個圖:

這是接口的表示方法。接口是什么,,不用做什么解釋,。這里讓大家對接口圖有一個大體的了解。

類圖之間的關(guān)系

對于類圖的基本講解就到這里了,接下來講解類圖中最重要的一部分,,也是比較難理解的一部分:類圖之間的關(guān)系,。
一個負責(zé)的系統(tǒng),每個類不是獨立存在的,,而是類與類組織起來的,,而每個類之間的關(guān)系是錯綜復(fù)雜的,那么UML是如何表達其中的關(guān)系的呢,?

繼承關(guān)系

繼承關(guān)系是一種基本而重要的關(guān)系,;至于繼承的概念,,我就不做解釋了,而只講UML中對繼承的表示,。


以上兩張圖,,都是Astah中對繼承關(guān)系的表示方法,,繼承通過指向超類的一條閉合的,單箭頭的實線表示,。這個表示和用例圖中的泛化表示方式是一致的,,不熟悉的朋友,可以去看看UML用例圖總結(jié)這篇文章,。

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

當(dāng)系統(tǒng)建模時,,特定的對象間會彼此關(guān)聯(lián),,而且這些關(guān)聯(lián)本身需要被清晰地建模,,這里我會介紹5中關(guān)聯(lián),關(guān)于什么時候使用哪種關(guān)聯(lián),,這里是不做介紹的,,這里而是將重點集中在每種關(guān)聯(lián)的用途,并說明如何在類圖上表現(xiàn)出來,。

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

關(guān)聯(lián)是兩個類之間的連接,,關(guān)聯(lián)總是被假定是雙向;這說明,,兩個類彼此知道它們之間的關(guān)系,,都可以調(diào)用對方的公共屬性和方法;雖然在分析階段這種關(guān)系是適用的,,但我覺得對于描述設(shè)計模式內(nèi)的類關(guān)系來說顯得太抽象了,,因為在設(shè)計階段關(guān)聯(lián)關(guān)系必須被映射為對象引用或指針;對象引用本身就是有向的,。這種關(guān)系在設(shè)計的時候比較少用到,,關(guān)聯(lián)一般都是有向的。

單向關(guān)聯(lián)
在一個單向關(guān)聯(lián)中,,兩個類是相關(guān)的,但是只有一個類知道這種關(guān)系的存在,。如下圖:

一個單向的關(guān)聯(lián),,表示為一條帶有指向已知類的開放箭頭的實線,。Class0知道Class1的存在,而Class1不知道Class0的存在,,Class0可以調(diào)用Class1的公共屬性和方法,。使用Astah導(dǎo)出代碼時,單向關(guān)聯(lián)體現(xiàn)為Class0中包含一個Class1對象,。

關(guān)聯(lián)類
這個概念有點不好理解,我也是參考別人的理解,,再做出自己的理解,,如下圖:

Person和Company是有關(guān)系的,,存在什么關(guān)系,?存在一個雇傭的關(guān)系,由于存在一個Job,,導(dǎo)致Person和Company產(chǎn)生了關(guān)系,,但是在建模時,由于Job將Person和Company關(guān)聯(lián)到了一起,,而描述Job的Salay放在Person或者Company都不是很合適的,,由于不同的崗位有不同的Salary,如果將崗位和Salary放在Person,,將導(dǎo)致Person類存在很高的耦合性,。所以關(guān)聯(lián)出一個關(guān)聯(lián)類Job,表示崗位信息,。從圖中可以看出,,Job類即是一個關(guān)聯(lián)關(guān)系也是一個類,,是為了描述類Person與類Company之間的關(guān)聯(lián)關(guān)系的,。

聚合
聚合是一種特別類型的關(guān)聯(lián),,用于描述“總體到局部”的關(guān)系,。
基本聚合
在基本聚合中,部分類的生命周期獨立于整體類的生命周期,;如下圖:

房子是一個整體實體,,而窗戶是房子的一部分,,而窗戶可以在建房子之前就創(chuàng)建,在這里,,Window實例清楚地獨立地Car類實例而存在,。使用空心的菱形表示。

組合聚合
組合聚合也叫包容,,但是子類實例的生命周期依賴于父類實例的生命周期;如下圖:

公司是一個整體實體,公司包含部門,,部門不能獨立于公司而存在,。使用實心菱形表示。

自身關(guān)聯(lián)(反射關(guān)聯(lián))
就是自身關(guān)聯(lián)自身,,你可能想不到這樣存在的意義,,但是,你要想到,,類可以是抽象的,,當(dāng)一個類關(guān)聯(lián)到它本身時,這并不意味著類的實例與它本身相關(guān),,而是類的一個實例與類的另一個實例相關(guān),,可以表現(xiàn)為多肽,在UML中就是如下圖所示:

實現(xiàn)接口

如下圖:

在UML中表示的很簡單,就是將泛化中的實線變成了虛線就好了,。

總結(jié)

這篇文章大體的對UML類圖做了一個總結(jié),,平時工作中涉及到的內(nèi)容都大體上做了介紹,,如果有什么遺漏,請大家指出,。同時,,在本文中所有的類圖都是使用Astah畫的,關(guān)于使用Astah畫類圖,,大家可以參考:UML工具Astah的使用,。

附錄

多重值和它們的表示

表示含義
0..10個或1個
1只能1個
0..*0個或多個
*0個或多個
1..*1個或多個
3只能3個
0..50到5個
5..155到15個

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多