詳解UML類圖符號表示法

類(Class)

類(圖A)是對象的藍圖,其中包含3個組成部分。第一個是Java中定義的類名。第二個是屬性(attributes)及舍。第三個是該類提供的方法。

屬性和操作之前可附加一個可見性修飾符窟绷。加號(+)表示具有公共可見性锯玛。減號(-)表示私有可見性。#號表示受保護的可見性兼蜈。省略這些修飾符表示具有package(包)級別的可見性攘残。如果屬性或操作具有下劃線,表明它是靜態(tài)的为狸。在操作中歼郭,可同時列出它接受的參數(shù),以及返回類型辐棒,如圖A的“Java”區(qū)域所示病曾。

圖A

image

<wbr style="box-sizing: border-box; outline: 0px; --tw-ring-shadow:0 0 #0000 ; word-wrap: break-word;"><wbr style="box-sizing: border-box; outline: 0px; --tw-ring-shadow:0 0 #0000 ; word-wrap: break-word;">

包(Package)

包(圖B)是一種常規(guī)用途的組合機制。UML中的一個包直接對應(yīng)于Java中的一個包漾根。在Java中泰涂,一個包可能含有其他包、類或者同時含有這兩者辐怕。進行建模時逼蒙,你通常擁有邏輯性的包,它主要用于對你的模型進行組織寄疏。你還會擁有物理性的包其做,它直接轉(zhuǎn)換成系統(tǒng)中的Java包。每個包的名稱對這個包進行了惟一性的標(biāo)識赁还。

圖B

image

接口(Interface)

接口(圖C)是一系列操作的集合妖泄,它指定了一個類所提供的服務(wù)。它直接對應(yīng)于Java中的一個接口類型艘策。接口既可用圖C的那個圖標(biāo)來表示蹈胡,也可由附加了<<interface>>的一個標(biāo)準類來表示。通常,根據(jù)接口在類圖上的樣子罚渐,就能知道與其他類的關(guān)系却汉。

圖C

image
關(guān)系

后面的例子將針對某個具體目的來獨立地展示各種關(guān)系。雖然語法無誤荷并,但這些例子可進一步精煉合砂,在它們的有效范圍內(nèi)包括更多的語義。

依賴(Dependency)

實體之間一個“使用”關(guān)系暗示一個實體的規(guī)范發(fā)生變化后源织,可能影響依賴于它的其他實例(圖D)翩伪。更具體地說,它可轉(zhuǎn)換為對不在實例作用域內(nèi)的一個類或?qū)ο蟮娜魏晤愋偷囊锰赶ⅰF渲邪ㄒ粋€局部變量缘屹,對通過方法調(diào)用而獲得的一個對象的引用(如下例所示),或者對一個類的靜態(tài)方法的引用(同時不存在那個類的一個實例)侠仇。也可利用“依賴”來表示包和包之間的關(guān)系轻姿。由于包中含有類,所以你可根據(jù)那些包中的各個類之間的關(guān)系逻炊,表示出包和包的關(guān)系互亮。

圖D

image

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

實體之間的一個結(jié)構(gòu)化關(guān)系表明對象是相互連接的。箭頭是可選的余素,它用于指定導(dǎo)航能力胳挎。如果沒有箭頭,暗示是一種雙向的導(dǎo)航能力溺森。在Java中慕爬,關(guān)聯(lián)(圖E)轉(zhuǎn)換為一個實例作用域的變量,就像圖E的“Java”區(qū)域所展示的代碼那樣屏积∫搅可為一個關(guān)聯(lián)附加其他修飾符。多重性(Multiplicity)修飾符暗示著實例之間的關(guān)系炊林。在示范代碼中姥卢,Employee可以有0個或更多的TimeCard對象。但是渣聚,每個TimeCard只從屬于單獨一個Employee独榴。

圖E

image

聚合(Aggregation)

聚合(圖F)是關(guān)聯(lián)的一種形式,代表兩個類之間的整體/局部關(guān)系奕枝。聚合暗示著整體在概念上處于比局部更高的一個級別棺榔,而關(guān)聯(lián)暗示兩個類在概念上位于相同的級別。聚合也轉(zhuǎn)換成Java中的一個實例作用域變量隘道。

關(guān)聯(lián)和聚合的區(qū)別純粹是概念上的症歇,而且嚴格反映在語義上郎笆。聚合還暗示著實例圖中不存在回路。換言之忘晤,只能是一種單向關(guān)系宛蚓。

圖F

image

合成(Composition)

合成 (圖G)是聚合的一種特殊形式,暗示“局部”在“整體”內(nèi)部的生存期職責(zé)设塔。合成也是非共享的凄吏。所以,雖然局部不一定要隨整體的銷毀而被銷毀闰蛔,但整體要么負責(zé)保持局部的存活狀態(tài)痕钢,要么負責(zé)將其銷毀。局部不可與其他整體共享钞护。但是盖喷,整體可將所有權(quán)轉(zhuǎn)交給另一個對象爆办,后者隨即將承擔(dān)生存期職責(zé)难咕。

Employee和TimeCard的關(guān)系或許更適合表示成“合成”,而不是表示成“關(guān)聯(lián)”距辆。

圖G

image

泛化(Generalization)

泛化(圖H)表示一個更泛化的元素和一個更具體的元素之間的關(guān)系余佃。泛化是用于對繼承進行建模的UML元素。在Java中跨算,用extends關(guān)鍵字來直接表示這種關(guān)系爆土。

圖H

image

實現(xiàn)(Realization)

實例(圖I)關(guān)系指定兩個實體之間的一個合同。換言之诸蚕,一個實體定義一個合同步势,而另一個實體保證履行該合同。對Java應(yīng)用程序進行建模時背犯,實現(xiàn)關(guān)系可直接用implements關(guān)鍵字來表示坏瘩。

圖I

image

1.類(Class):使用三層矩形框表示。
第一層顯示類的名稱漠魏,如果是抽象類倔矾,則就用斜體顯示。
第二層是字段和屬性柱锹。
第三層是類的方法哪自。
注意前面的符號,‘+’表示public禁熏,‘-’表示private壤巷,‘#’表示protected。

2.UML類圖符號之接口:使用兩層矩形框表示瞧毙,與類圖的區(qū)別主要是頂端有<<interface>>顯示隙笆。
第一行是接口名稱锌蓄。
第二行是接口方法。

3.UML類圖符號之繼承類(extends):用空心三角形+實線來表示撑柔。

4.UML類圖符號之實現(xiàn)接口(implements):用空心三角形+虛線來表示

5.UML類圖符號之關(guān)聯(lián)(Association):用實線箭頭來表示瘸爽,例如:燕子與氣候

6.UML類圖符號之聚合(Aggregation):用空心的菱形+實線箭頭來表示
聚合:表示一種弱的‘擁有’關(guān)系,體現(xiàn)的是A對象可以包含B對象铅忿,但B對象不是A對象的一部分剪决,例如:公司和員工
組合(Composition):用實心的菱形+實線箭頭來表示
組合:部分和整體的關(guān)系,并且生命周期是相同的檀训。例如:人與手

7.UML類圖符號之依賴(Dependency):用虛線箭頭來表示柑潦,例如:動物與氧氣

8.UML類圖符號之基數(shù):連線兩端的數(shù)字表明這一端的類可以有幾個實例,比如:一個鳥應(yīng)該有兩只翅膀峻凫。如果一個類可能有無數(shù)個實例渗鬼,則就用‘n’來表示。關(guān)聯(lián)荧琼、聚合譬胎、組合是有基數(shù)的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末命锄,一起剝皮案震驚了整個濱河市堰乔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脐恩,老刑警劉巖镐侯,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驶冒,居然都是意外死亡苟翻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門骗污,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崇猫,“玉大人,你說我怎么就攤上這事身堡〉擞龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵贴谎,是天一觀的道長汞扎。 經(jīng)常有香客問我,道長擅这,這世上最難降的妖魔是什么澈魄? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮仲翎,結(jié)果婚禮上痹扇,老公的妹妹穿的比我還像新娘铛漓。我一直安慰自己,他們只是感情好鲫构,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布浓恶。 她就那樣靜靜地躺著,像睡著了一般结笨。 火紅的嫁衣襯著肌膚如雪包晰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天炕吸,我揣著相機與錄音伐憾,去河邊找鬼。 笑死赫模,一個胖子當(dāng)著我的面吹牛树肃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瀑罗,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼胸嘴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了廓脆?” 一聲冷哼從身側(cè)響起筛谚,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤磁玉,失蹤者是張志新(化名)和其女友劉穎停忿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚊伞,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡席赂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了时迫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颅停。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掠拳,靈堂內(nèi)的尸體忽然破棺而出癞揉,到底是詐尸還是另有隱情,我是刑警寧澤溺欧,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布喊熟,位于F島的核電站,受9級特大地震影響姐刁,放射性物質(zhì)發(fā)生泄漏芥牌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一聂使、第九天 我趴在偏房一處隱蔽的房頂上張望壁拉。 院中可真熱鬧谬俄,春花似錦、人聲如沸弃理。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痘昌。三九已至蔬芥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間控汉,已是汗流浹背笔诵。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姑子,地道東北人乎婿。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像街佑,于是被迫代替她去往敵國和親谢翎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容