Unified Modeling Language (UML)又稱統(tǒng)一建模語言或標(biāo)準(zhǔn)建模語言译打,是始于1997年一個OMG標(biāo)準(zhǔn),它是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言柠新,為軟件開發(fā)的所有階段提供模型化和可視化支持峰鄙,包括由需求分析到規(guī)格,到構(gòu)造和配置套蒂。
面向?qū)ο蟮姆治雠c設(shè)計(OOA&D钞支,OOAD)方法的發(fā)展在80年代末至90年代中出現(xiàn)了一個高潮茫蛹,而UML就是這個高潮的產(chǎn)物。
OMG:對象管理組織(Object Management Group)
UML由3個要素構(gòu)成:UML的基本構(gòu)造塊烁挟、支配這些構(gòu)造塊如何放置在一起的規(guī)則和運用于整個語言的公用機(jī)制婴洼。
UML有3種基本的構(gòu)造塊:事物、關(guān)系和圖撼嗓。
事物是對模型中最具有代表性的成分的抽象柬采,包括結(jié)構(gòu)事物,如:類(Class)且警、接口(Interface)粉捻、協(xié)作(Collaboration)、用例(UseCase)斑芜、主動類(ActiveClass)肩刃、組件(Component)和節(jié)點(Node);行為事物押搪,如交互(Interaction)树酪、態(tài)機(jī)(Statemachine)浅碾、分組事物(包大州,Package)、注釋事物(注解垂谢,Note)厦画。
關(guān)系用來把事物結(jié)合在一起,包括:依賴滥朱、關(guān)聯(lián)根暑、泛化和實現(xiàn)關(guān)系。
UML中有九種建模的圖標(biāo)徙邻,即:
用例圖排嫌、類圖、對象圖缰犁、順序圖淳地、協(xié)作圖、狀態(tài)圖帅容、活動圖颇象、組件圖、配置圖
用例圖 Use case diagrams
描述了作為一個外部的觀察者的視角對系統(tǒng)的印象并徘。強(qiáng)調(diào)這個系統(tǒng)是什么而不是這個系統(tǒng)怎么工作遣钳。
用例圖與情節(jié)緊緊相關(guān)的。情節(jié)scenario是指當(dāng)某個人與系統(tǒng)進(jìn)行互動時發(fā)生的情況麦乞。
用例圖在三個領(lǐng)域很有作用:
1.決定特征(需求)蕴茴。當(dāng)系統(tǒng)已經(jīng)分析好并且設(shè)計成型時劝评,新的用例產(chǎn)生新的需求;
2.客戶通訊倦淀。使用用例圖很容易表示開發(fā)者與客戶之間的聯(lián)系付翁;
3.產(chǎn)生測試用例。一個用例的情節(jié)可能產(chǎn)生這些情節(jié)的一批測試用例晃听。
類圖 Class diagram
通過顯示出系統(tǒng)的類以及這些類之間的關(guān)系來表示系統(tǒng)百侧。類圖是靜態(tài)的———它們顯示出什么可以產(chǎn)生影響但不會告訴你什么時候產(chǎn)生影響。
UML類的符號是一個被劃分成三塊的方框:類名能扒,屬性佣渴,和操作。抽象類的名字初斑,是斜體的辛润。類之間的關(guān)系是連接線。
類圖有三種關(guān)系:
1.關(guān)聯(lián)association-表示兩種類的實例間的關(guān)系见秤。如果一個類的實例必須要用另一個類的實例才能完成工作時就要用關(guān)聯(lián)砂竖。在圖中,關(guān)聯(lián)用兩個類之間的連線表示鹃答;
2.聚合aggregation-當(dāng)一個類屬于一個容器是的一種特殊關(guān)系乎澄。聚合用一個帶菱形的連線,菱形指向具有整體性質(zhì)的類测摔。在我們的圖里置济,Order是OrderDetails的容器;
3.泛化generalization-一個指向以其他類作為超類的繼承連線锋八。泛化關(guān)系用一個三角形指向超類浙于。Payment是Cash,Check和Credit的超類挟纱。
包和對象圖
為了簡單地表示出復(fù)雜的類圖羞酗,可以把類組合成包packages。一個包是UML上有邏輯關(guān)系的元件的集合紊服。
順序圖
為交互圖檀轨,是動態(tài)的(它們描述了對象間的交互作用)。
順序圖將交互關(guān)系表示為一個二維圖围苫】阍埃縱向是時間軸,時間沿豎線向下延伸剂府。橫向軸代表了在協(xié)作中各獨立對象的類元角色拧揽。類元角色用生命線表示。當(dāng)對象存在時,角色用一條虛線表示淤袜,當(dāng)對象的過程處于激活狀態(tài)時痒谴,生命線是一個雙道線。
消息用從一個對象的生命線到另一個對象生命線的箭頭表示铡羡。箭頭以時間順序在圖中從上到下排列积蔚。
協(xié)作圖
協(xié)作圖也是互動的圖表。他們像序列圖一樣也傳遞相同的信息烦周,但他們不關(guān)心什么時候消息被傳遞尽爆,只關(guān)心對象的角色。在序列圖中读慎,對象的角色放在上面而消息則是連接線漱贱。
對象角色矩形上標(biāo)有類或?qū)ο竺ɑ蛘叨加校n惷懊嬗袀€冒號(:)夭委。
協(xié)作圖的每個消息都有一個序列號幅狮。頂層消息的數(shù)字是1。同一個等級的消息(也就是同一個調(diào)用中的消息)有同樣的數(shù)字前綴株灸,再根據(jù)他們出現(xiàn)的順序增加一個后綴1崇摄,2等等。
狀態(tài)圖
對象擁有行為和狀態(tài)慌烧。對象的狀態(tài)是由對象當(dāng)前的行動和條件決定的逐抑。狀態(tài)圖statechart diagram顯示出了對象可能的狀態(tài)以及由狀態(tài)改變而導(dǎo)致的轉(zhuǎn)移。
狀態(tài)是用圓角矩形來表示的杏死。轉(zhuǎn)移則是使用帶箭頭的連線表示泵肄。觸發(fā)轉(zhuǎn)移的事件或者條件寫在箭頭的旁邊。
初始狀態(tài)(黑色圓圈)是開始動作的虛擬開始淑翼。結(jié)束狀態(tài)也是動作的虛擬結(jié)束。
事件或條件觸發(fā)動作時用(/動作)表示品追。動作的結(jié)果決定了下一步的狀態(tài)玄括。
活動圖 activity diagram
活動圖是一個很特別的流程圖∪馔撸活動圖和狀態(tài)圖之間是有關(guān)系的遭京。狀態(tài)圖把焦點集中在過程中的對象身上,而活動圖則集中在一個單獨過程動作流程泞莉∧牡瘢活動圖告訴了我們活動之間的依賴關(guān)系。
轉(zhuǎn)移可能分支branch成兩個以上的互斥的轉(zhuǎn)移鲫趁。保護(hù)表達(dá)式(在[ ]中)表示轉(zhuǎn)移是從一個分支中引出的斯嚎。分支以及分支結(jié)束時的合并merge在圖中用菱形表示。
轉(zhuǎn)移也可以分解fork成兩個以上的并行活動。分解以及分解結(jié)束時的線程結(jié)合join在圖中用粗黑線表示堡僻。
組件圖
組件 component 是代碼模塊糠惫。組件圖是是類圖的物理實現(xiàn)。
配置圖 Deployment diagrams
顯示軟件及硬件的配置钉疫。
物理上的硬件使用節(jié)點nodes表示硼讽。每個組件屬于一個節(jié)點。組件用左上角帶有兩個小矩形的矩形表示牲阁。
這里就主要講解一下類圖的要點:
UML類圖常見的幾種關(guān)系:
-
泛化(Generalization)
是一種繼承關(guān)系固阁,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為城菊。
例如:人是動物的一種您炉,即有人的特性也有動物的共性。
箭頭指向:帶三角箭頭的實線役电,箭頭指向父類
-
實現(xiàn)(Realization)
是一種類與接口的關(guān)系赚爵,表示類是接口所有特征和行為的實現(xiàn).
箭頭指向:帶三角箭頭的虛線,箭頭指向接口
-
關(guān)聯(lián)(Association)
是一種擁有的關(guān)系法瑟,它使一個類知道另一個類的屬性和方法冀膝;如:老師與學(xué)生,丈夫與妻子關(guān)聯(lián)可以是雙向的霎挟,也可以是單向的窝剖。
雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭酥夭。
代碼體現(xiàn):成員變量
箭頭及指向:帶普通箭頭的實心線赐纱,指向被擁有者老師與學(xué)生是雙向關(guān)聯(lián),老師有多名學(xué)生熬北,學(xué)生也可能有多名老師疙描。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程讶隐,課程是個抽象的東西他不擁有學(xué)生起胰。
??特殊情況:自身關(guān)聯(lián)
-
聚合(Aggregation)
聚合是整體與部分的關(guān)系,且部分可以離開整體而單獨存在巫延。如車和輪胎是整體和部分的關(guān)系效五,輪胎離開車仍然可以存在。
聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種炉峰,是強(qiáng)的關(guān)聯(lián)關(guān)系畏妖;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系疼阔。
代碼體現(xiàn):成員變量
箭頭及指向:帶空心菱形的實心線戒劫,菱形指向整體
-
組合(Composition)
是整體與部分的關(guān)系半夷,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關(guān)系谱仪,沒有公司就不存在部門玻熙。
組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系疯攒,它要求普通的聚合關(guān)系中代表整體的對象負(fù)責(zé)代表部分的對象的生命周期嗦随。
代碼體現(xiàn):成員變量
箭頭及指向:帶實心菱形的實線,菱形指向整體
-
依賴(Dependency)
是一種使用的關(guān)系敬尺,即一個類的實現(xiàn)需要另一個類的協(xié)助枚尼,所以要盡量不使用雙向的互相依賴.
代碼表現(xiàn):局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用
箭頭及指向:帶箭頭的虛線砂吞,指向被使用者
各種關(guān)系的強(qiáng)弱順序:
泛化 = 實現(xiàn) > 組合 > 聚合 > 關(guān)聯(lián) > 依賴
StarUML
** 棒子國的產(chǎn)品 **
優(yōu)點:跨平臺署恍,在mac下也可以用,和windows下效果一樣蜻直,很方便和統(tǒng)一盯质。
操作界面很寬闊 想怎么畫就怎么畫
在側(cè)邊欄,選擇相應(yīng)的對象進(jìn)行添加:
未點擊要添加的對象前概而,鼠標(biāo)狀態(tài)提示:
點擊要添加的對象后呼巷,鼠標(biāo)狀態(tài)提示:
接下來就可以添加對象的,如下圖:(添加一個類)
再為該類添加屬性赎瑰、方法:
在繪制界面上使用“delete”按鍵刪除無效。
所有對象的刪除 必須右鍵點擊刪除2吐压储! 或者使用快捷鍵:Command + “delete”
其他操作就自己去摸索吧集惋!這些操作性的東西玩一下就會了!
StarUML繪圖效果 及 其中的格式
附加繪圖??:類圖各個關(guān)系的強(qiáng)弱順序
哎~瓶佳!公司叫我寫SDK芋膘,還要畫類圖。之前完全沒搞過霸饲,一臉懵逼!人都憔悴了~大概講解一下類圖和StarUML的基本使用臂拓!