UML(Unified Modeling Language)是一種統(tǒng)一建模語(yǔ)言痹束,為面向?qū)ο箝_(kāi)發(fā)系統(tǒng)的產(chǎn)品進(jìn)行說(shuō)明、可視化、和編制文檔的一種標(biāo)準(zhǔn)語(yǔ)言砖瞧。下面將對(duì)UML的九種圖+包圖的基本概念進(jìn)行介紹以及各個(gè)圖的使用場(chǎng)景。
想要知道UML更多內(nèi)容的朋友嚷狞,可以點(diǎn)擊以下課程學(xué)習(xí)相關(guān)知識(shí):
https://edu.csdn.net/course/play/24752/280547
一块促、基本概念
如下圖所示,UML圖分為用例視圖感耙、設(shè)計(jì)視圖褂乍、進(jìn)程視圖、實(shí)現(xiàn)視圖和拓?fù)湟晥D即硼,又可以靜動(dòng)分為靜態(tài)視圖和動(dòng)態(tài)視圖逃片。靜態(tài)圖分為:用例圖,類圖只酥,對(duì)象圖褥实,包圖,構(gòu)件圖裂允,部署圖损离。動(dòng)態(tài)圖分為:狀態(tài)圖,活動(dòng)圖绝编,協(xié)作圖僻澎,序列圖貌踏。
1、用例圖(UseCase Diagrams):
? 用例圖主要回答了兩個(gè)問(wèn)題:1窟勃、是誰(shuí)用軟件祖乳。2、軟件的功能秉氧。從用戶的角度描述了系統(tǒng)的功能眷昆,并指出各個(gè)功能的執(zhí)行者,強(qiáng)調(diào)用戶的使用者汁咏,系統(tǒng)為執(zhí)行者完成哪些功能亚斋。
2、類圖(Class Diagrams):
用戶根據(jù)用例圖抽象成類攘滩,描述類的內(nèi)部結(jié)構(gòu)和類與類之間的關(guān)系帅刊,是一種靜態(tài)結(jié)構(gòu)圖。?在UML類圖中轰驳,常見(jiàn)的有以下幾種關(guān)系:?泛化(Generalization),??實(shí)現(xiàn)(Realization)厚掷,關(guān)聯(lián)(Association),聚合(Aggregation)级解,組合(Composition)冒黑,依賴(Dependency)。
? 各種關(guān)系的強(qiáng)弱順序:?泛化?=?實(shí)現(xiàn)?>?組合?>?聚合?>?關(guān)聯(lián)?>?依賴
2.1.泛化
【泛化關(guān)系】:是一種繼承關(guān)系勤哗,表示一般與特殊的關(guān)系抡爹,它指定了子類如何繼承父類的所有特征和行為。例如:老虎是動(dòng)物的一種芒划,即有老虎的特性也有動(dòng)物的共性冬竟。
2.2.實(shí)現(xiàn)
【實(shí)現(xiàn)關(guān)系】:是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實(shí)現(xiàn)民逼。
2.3.關(guān)聯(lián)
? 【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系泵殴,它使一個(gè)類知道另一個(gè)類的屬性和方法;如:老師與學(xué)生拼苍,丈夫與妻子關(guān)聯(lián)可以是雙向的笑诅,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個(gè)箭頭或者沒(méi)有箭頭疮鲫,單向的關(guān)聯(lián)有一個(gè)箭頭吆你。
???????? ?【代碼體現(xiàn)】:成員變量
2.4.聚合
【聚合關(guān)系】:是整體與部分的關(guān)系,且部分可以離開(kāi)整體而單獨(dú)存在俊犯。如車和輪胎是整體和部分的關(guān)系妇多,輪胎離開(kāi)車仍然可以存在。
聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種燕侠,是強(qiáng)的關(guān)聯(lián)關(guān)系者祖;關(guān)聯(lián)和聚合在語(yǔ)法上無(wú)法區(qū)分立莉,必須考察具體的邏輯關(guān)系。
???????? ?【代碼體現(xiàn)】:成員變量
2.5.組合
【組合關(guān)系】:是整體與部分的關(guān)系七问,但部分不能離開(kāi)整體而單獨(dú)存在桃序。如公司和部門(mén)是整體和部分的關(guān)系,沒(méi)有公司就不存在部門(mén)烂瘫。
組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系奇适,它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期坟比。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶實(shí)心菱形的實(shí)線,菱形指向整體
2.6.依賴
? ? 【依賴關(guān)系】:是一種使用的關(guān)系嚷往,即一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助葛账,所以要盡量不使用雙向的互相依賴.
【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對(duì)靜態(tài)方法的調(diào)用
????????【箭頭及指向】:帶箭頭的虛線皮仁,指向被使用者
2.7 各種類圖關(guān)系
3籍琳、對(duì)象圖(Object Diagrams):
描述的是參與交互的各個(gè)對(duì)象在交互過(guò)程中某一時(shí)刻的狀態(tài)。對(duì)象圖可以被看作是類圖在某一時(shí)刻的實(shí)例贷祈。
4趋急、狀態(tài)圖(Statechart Diagrams):
是一種由狀態(tài)、變遷势誊、事件和活動(dòng)組成的狀態(tài)機(jī)呜达,用來(lái)描述類的對(duì)象所有可能的狀態(tài)以及時(shí)間發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移條件。
5粟耻、活動(dòng)圖(Activity Diagrams):
是狀態(tài)圖的一種特殊情況查近,這些狀態(tài)大都處于活動(dòng)狀態(tài)。本質(zhì)是一種流程圖挤忙,它描述了活動(dòng)到活動(dòng)的控制流霜威。
交互圖強(qiáng)調(diào)的是對(duì)象到對(duì)象的控制流,而活動(dòng)圖則強(qiáng)調(diào)的是從活動(dòng)到活動(dòng)的控制流册烈。
活動(dòng)圖是一種表述過(guò)程基理戈泼、業(yè)務(wù)過(guò)程以及工作流的技術(shù)。
它可以用來(lái)對(duì)業(yè)務(wù)過(guò)程茄厘、工作流建模矮冬,也可以對(duì)用例實(shí)現(xiàn)甚至是程序?qū)崿F(xiàn)來(lái)建模。
5.1?帶泳道的活動(dòng)圖
泳道表明每個(gè)活動(dòng)是由哪些人或哪些部門(mén)負(fù)責(zé)完成次哈。
5.2?帶對(duì)象流的活動(dòng)圖
用活動(dòng)圖描述某個(gè)對(duì)象時(shí)胎署,可以把涉及到的對(duì)象放置在活動(dòng)圖中,并用一個(gè)依賴將其連接到進(jìn)行創(chuàng)建窑滞、修改和撤銷的動(dòng)作狀態(tài)或者活動(dòng)狀態(tài)上琼牧,對(duì)象的這種使用方法就構(gòu)成了對(duì)象流恢筝。對(duì)象流用帶有箭頭的虛線表示。
6巨坊、序列圖-時(shí)序圖(Sequence Diagrams):
交互圖的一種撬槽,描述了對(duì)象之間消息發(fā)送的先后順序,強(qiáng)調(diào)時(shí)間順序趾撵。
序列圖的主要用途是把用例表達(dá)的需求侄柔,轉(zhuǎn)化為進(jìn)一步、更加正式層次的精細(xì)表達(dá)占调。用例常常被細(xì)化為一個(gè)或者更多的序列圖暂题。同時(shí)序列圖更有效地描述如何分配各個(gè)類的職責(zé)以及各類具有相應(yīng)職責(zé)的原因。
消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象生命線的箭頭表示究珊。箭頭以時(shí)間順序在圖中從上到下排列薪者。?
序列圖中涉及的元素:
6.1 生命線
生命線名稱可帶下劃線。當(dāng)使用下劃線時(shí)剿涮,意味著序列圖中的生命線代表一個(gè)類的特定實(shí)例言津。
6.2 同步消息
同步等待消息
6.3 異步消息
異步發(fā)送消息,不需等待
6.4 注釋
6.5 約束
6.6 組合
組合片段用來(lái)解決交互執(zhí)行的條件及方式取试。它允許在序列圖中直接表示邏輯組件悬槽,用于通過(guò)指定條件或子進(jìn)程的應(yīng)用區(qū)域,為任何生命線的任何部分定義特殊條件和子進(jìn)程想括。常用的組合片段有:抉擇陷谱、選項(xiàng)、循環(huán)瑟蜈、并行烟逊。
7、協(xié)作圖(Collaboration Diagrams):
交互圖的一種铺根,描述了收發(fā)消息的對(duì)象的組織關(guān)系宪躯,強(qiáng)調(diào)對(duì)象之間的合作關(guān)系。時(shí)序圖按照時(shí)間順序布圖位迂,而寫(xiě)作圖按照空間結(jié)構(gòu)布圖
8访雪、構(gòu)件圖(Component Diagrams):
構(gòu)件圖是用來(lái)表示系統(tǒng)中構(gòu)件與構(gòu)件之間,類或接口與構(gòu)件之間的關(guān)系圖掂林。其中臣缀,構(gòu)建圖之間的關(guān)系表現(xiàn)為依賴關(guān)系,定義的類或接口與類之間的關(guān)系表現(xiàn)為依賴關(guān)系或?qū)崿F(xiàn)關(guān)系泻帮。
9精置、部署圖(Deployment Diagrams):
描述了系統(tǒng)運(yùn)行時(shí)進(jìn)行處理的結(jié)點(diǎn)以及在結(jié)點(diǎn)上活動(dòng)的構(gòu)件的配置。強(qiáng)調(diào)了物理設(shè)備以及之間的連接關(guān)系锣杂。
部署模型的目的:
描述一個(gè)具體應(yīng)用的主要部署結(jié)構(gòu)脂倦,通過(guò)對(duì)各種硬件番宁,在硬件中的軟件以及各種連接協(xié)議的顯示,可以很好的描述系統(tǒng)是如何部署的赖阻;平衡系統(tǒng)運(yùn)行時(shí)的計(jì)算資源分布蝶押;可以通過(guò)連接描述組織的硬件網(wǎng)絡(luò)結(jié)構(gòu)或者是嵌入式系統(tǒng)等具有多種硬件和軟件相關(guān)的系統(tǒng)運(yùn)行模型。
二火欧、圖的差異比較
1.序列圖(時(shí)序圖)VS協(xié)作圖
? ? ? ?序列圖和協(xié)作圖都是交互圖棋电。二者在語(yǔ)義上等價(jià),可以相互轉(zhuǎn)化苇侵。但是側(cè)重點(diǎn)不同:序列圖側(cè)重時(shí)間順序离陶,協(xié)作圖側(cè)重對(duì)象間的關(guān)系。
共同點(diǎn):時(shí)序圖與協(xié)作圖均顯示了對(duì)象間的交互衅檀。
不同點(diǎn):時(shí)序圖強(qiáng)調(diào)交互的時(shí)間次序。
???????????協(xié)作圖強(qiáng)調(diào)交互的空間結(jié)構(gòu)霎俩。
? ?2.狀態(tài)圖VS活動(dòng)圖
? ? ??狀態(tài)圖和活動(dòng)圖都是行為圖哀军。狀態(tài)圖側(cè)重從行為的結(jié)果來(lái)描述,活動(dòng)圖側(cè)重從行為的動(dòng)作來(lái)描述打却。狀態(tài)圖描述了一個(gè)具體對(duì)象的可能狀態(tài)以及他們之間的轉(zhuǎn)換杉适。在實(shí)際的項(xiàng)目中,活動(dòng)圖并不是必須的柳击,需要滿足以下條件:1猿推、出現(xiàn)并行過(guò)程&行為;2捌肴、描述算法蹬叭;3、跨越多個(gè)用例的活動(dòng)圖状知。
? ?3.活動(dòng)圖VS交互圖
二者都涉及到對(duì)象和他們之間傳遞的關(guān)系秽五。區(qū)別在于交互圖觀察的是傳送消息的對(duì)象,而活動(dòng)圖觀察的是對(duì)象之間傳遞的消息饥悴√勾看似語(yǔ)義相同,但是他們是從不同的角度來(lái)觀察整個(gè)系統(tǒng)的西设。
三瓣铣、UML與軟件工程
UML圖是軟件工程的組成部分,軟件工程從宏觀的角度保證了軟件開(kāi)發(fā)的各個(gè)過(guò)程的質(zhì)量贷揽。而UML作為一種建模語(yǔ)言棠笑,更加有效的實(shí)現(xiàn)了軟件工程的要求。
如下圖擒滑,在軟件的各個(gè)開(kāi)發(fā)階段需要的UML圖腐晾。
下表是UML使用人員圖示: