什么是 UML票灰?
??UML 是 國際對象管理組織(OMG)在1997年1月提出了創(chuàng)建由對象管理組和 UML1.0 規(guī)范草案宅荤;
??UML 是一種為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進行說明屑迂、可視化冯键、和編制文檔的標準語言惫确;
??UML 作為一種模型語言,它使開發(fā)人員專注于建立產(chǎn)品的模型和結(jié)構(gòu)掩蛤,而不是選用什么程序語言和算法實現(xiàn)陈肛;
??UML 是不同于其他常見的編程語言句旱,如 C + +晰奖,Java中腥泥,COBOL 等,它是一種繪畫語言午衰,用來做軟件藍圖冒萄;
??UML 不是一種編程語言,但工具可用于生成各種語言的代碼中使用 UML 圖帅戒;
??UML 可以用來建模非軟件系統(tǒng)的處理流程崖技,以及像在一個制造單元等.
UML 的目標
??UML 的目標是定義一些通用的建模語言并對這些建模語言做出簡單的說明迎献,這樣可以讓建模者理解與使用。UML 也是為普通人和有興趣的人而開發(fā)的系統(tǒng)扒秸,它可以是一個軟件或者使用非軟件冀瓦,它必須是明確的翼闽。我們不將 UML 作為一個開發(fā)方法,而是隨著流程做一個成功的系統(tǒng)尼啡。
??現(xiàn)在我們可以明確的了解 UML 的目標就是 UML 被定義為一個簡單的建模機制蓝厌,幫助我們按照實際情況或者按照我們需要的樣式對系統(tǒng)進行可視化拓提;提供一種詳細說明系統(tǒng)的結(jié)構(gòu)或行為的方法隧膘;給出一個指導系統(tǒng)構(gòu)造的模板;對我們所做出的決策進行文檔化西雀。
UML 基本元素
1. 三個基本模塊
- 事務
- 關(guān)系
- 圖
2. 四種事務
-
結(jié)構(gòu)事務
??結(jié)構(gòu)事物是模型中的靜態(tài)部分歉摧,用以呈現(xiàn)概念或?qū)嶓w的表現(xiàn)元素叁温,是軟件建模中最常見的元素,接下來是對結(jié)構(gòu)化物件的簡要描述:
類(class)
類是指具有相同屬性冲九、方法跟束、關(guān)系和語義的對象的集合冀宴。
接口((interface))
接口是指類或組件所提供的服務(操作)略贮,描述了類或組件對外可見的動作。
協(xié)作(collaboration)
協(xié)作定義元素之間的相互作用古拴。
用例(use case)
用例定義了執(zhí)行者(在系統(tǒng)外部和系統(tǒng)交互的人)和被考慮的系統(tǒng)之間的交互來實現(xiàn)的一個業(yè)務目標黄痪。
組件(component)
組件描述物理系統(tǒng)的一部分桅打。
節(jié)點(node)
一個節(jié)點可以被定義為在運行時存在的物理元素挺尾。
-
行為事務:
??行為事物指的是 UML 模型中的動態(tài)部分站绪,代表語句里的 "動詞",表示模型里隨著時空不斷變化的部分甫题,包含兩類:
交互
交互被定義為一種行為涂召,包括一組元素之間的消息交換來完成特定的任務。
狀態(tài)機
狀態(tài)機由一系列對象的狀態(tài)組成,它是有用的秋泳,一個對象在其生命周期的狀態(tài)是很重要的轮锥。
-
分組事務
??可以把分組事物看成是一個"盒子"舍杜,模型可以在其中被分解。目前只有一種分組事物概龄,即包(package)饲握。結(jié)構(gòu)事物救欧、動作事物甚至分組事物都有可能放在一個包中。包純粹是概念上的铝耻,只存在于開發(fā)階段蹬刷,而組件在運行時存在办成。
包
封裝是唯一一個分組事物可收集結(jié)構(gòu)和行為的東西。
-
注釋事務
??注釋事物可以被定義為一種機制來捕捉UML模型元素的言論某弦,說明和注釋刀崖。注釋是唯一一個注釋事物拍摇。
注釋
注釋用于渲染意見充活,約束等的UML元素。
3. 四種關(guān)系
??關(guān)系是另一個最重要的構(gòu)建塊UML映穗,它顯示元素是如何彼此相關(guān)聯(lián)蚁滋,此關(guān)聯(lián)描述的一個應用程序的功能赘淮,UML中定義了四種關(guān)系:
-
依賴
??依賴是兩件事物之間的語義聯(lián)系梢卸,其中一個事物的變化也影響到另一個事物。
-
關(guān)聯(lián)
??一種描述一組對象之間連接的結(jié)構(gòu)關(guān)系蚣旱,如聚合關(guān)系(描述了整體和部分間的結(jié)構(gòu)關(guān)系)塞绿、組合關(guān)系(更強烈的聚合關(guān)系)恤批。
-
泛化
??泛化可以被定義為一個專門的元件連接關(guān)系與一個廣義的元素开皿,它基本上描述了在對象世界中的繼承關(guān)系赋荆,是一種一般化-特殊化的關(guān)系。
-
實現(xiàn)
??類之間的語義關(guān)系春宣,其中的一個類指定了由另一個類保證執(zhí)行的契約月帝。
4. 九種圖
- 用例圖
- 類圖
- 對象圖
- 部署圖
- 活動圖
- 狀態(tài)圖
- 序列圖
- 協(xié)作圖
- 組件圖
UML 圖的分類
根據(jù)RUP 4+1架構(gòu)視圖嚷辅,分別為場景視圖、邏輯視圖扁位、開發(fā)視圖趁俊、進程視圖和物理視圖寺擂,如下圖所示:
根據(jù)UML建模類型分類UML標準圖,分別為結(jié)構(gòu)圖(靜態(tài))和行為圖(動態(tài))垦细,如下圖所示:
類蝠检、接口挚瘟、類之間關(guān)系的基本表示法
-
類
??類(Class)是指具有相同屬性乘盖、方法和關(guān)系的對象的抽象,它封裝了數(shù)據(jù)和行為析苫,是面向?qū)ο蟪绦蛟O計(OOP)的基礎衩侥,具有封裝性矛物、繼承性和多態(tài)性等三大特性。在 UML 中峦萎,類使用包含類名爱榔、屬性和操作且?guī)в蟹指艟€的矩形來表示。
(1) 類名(Name)是一個字符串筛欢,例如妒潭,Student雳灾。
(2) 屬性(Attribute)是指類的特性冯凹,即類的成員變量宇姚。UML 按以下格式表示:
[可見性]屬性名:類型[=默認值]
例如:-name:String
注意:“可見性”表示該屬性對類外的元素是否可見,包括公有(Public)阱持、私有(Private)魔熏、受保護(Protected)和朋友(Friendly)4 種蒜绽,在類圖中分別用符號+、-鼎姊、#相寇、~表示钮科。
(3) 操作(Operations)是類的任意一個實例對象都可以使用的行為跺嗽,是類的成員方法页藻。UML 按以下格式表示:
[可見性]名稱(參數(shù)列表)[:返回類型]
例如:+display():void份帐。
學生類的 UML 楣导,如下所示:
-
接口
??接口(Interface)是一種特殊的類筒繁,它具有類的結(jié)構(gòu)但不可被實例化毡咏,只可以被子類實現(xiàn)。它包含抽象操作堵泽,但不包含屬性恢总。它描述了類或組件對外可見的動作片仿。在 UML 中,接口使用包含接口名和操作且?guī)в蟹指艟€的矩形來表示厢岂。
-
類之間的關(guān)系
??在軟件系統(tǒng)中咪笑,類不是孤立存在的娄涩,類與類之間存在各種關(guān)系蓄拣。根據(jù)類與類之間的耦合度從弱到強排列,UML 中的類圖有以下幾種關(guān)系:依賴關(guān)系辜昵、關(guān)聯(lián)關(guān)系堪置、聚合關(guān)系、組合關(guān)系岭洲、泛化關(guān)系和實現(xiàn)關(guān)系盾剩。其中泛化和實現(xiàn)的耦合度相等替蔬,它們是最強的。
1. 依賴關(guān)系
??依賴(Dependency)關(guān)系是一種使用關(guān)系驻粟,它是對象之間耦合度最弱的一種關(guān)聯(lián)方式格嗅,是臨時性的關(guān)聯(lián)唠帝。在代碼中襟衰,某個類的方法通過局部變量粪摘、方法的參數(shù)或者對靜態(tài)方法的調(diào)用來訪問另一個類(被依賴類)中的某些方法來完成一些職責徘意。
??在 UML 類圖中,依賴關(guān)系使用帶箭頭的虛線來表示玖详,箭頭從使用類指向被依賴的類蟋座。
人與手機的關(guān)系圖脚牍,人通過手機的語音傳送方法打電話诸狭,如下圖所示:
2. 關(guān)聯(lián)關(guān)系
??關(guān)聯(lián)(Association)關(guān)系是對象之間的一種引用關(guān)系,用于表示一類對象與另一類對象之間的聯(lián)系庵芭,如老師和學生雀监、師傅和徒弟会前、丈夫和妻子等。關(guān)聯(lián)關(guān)系是類與類之間最常用的一種關(guān)系蔚万,分為一般關(guān)聯(lián)關(guān)系反璃、聚合關(guān)系和組合關(guān)系假夺。我們先介紹一般關(guān)聯(lián)已卷。
??關(guān)聯(lián)可以是雙向的,也可以是單向的裁眯。在 UML 類圖中穿稳,雙向的關(guān)聯(lián)可以用帶兩個箭頭或者沒有箭頭的實線來表示逢艘,單向的關(guān)聯(lián)用帶一個箭頭的實線來表示泡仗,箭頭從使用類指向被關(guān)聯(lián)的類娩怎。也可以在關(guān)聯(lián)線的兩端標注角色名,代表兩種不同的角色爬泥。
??在代碼中通常將一個類的對象作為另一個類的成員變量來實現(xiàn)關(guān)聯(lián)關(guān)系袍啡。每個老師可以教多個學生,每個學生也可向多個老師學蔗牡,他們是雙向關(guān)聯(lián)辩越。老師和學生的關(guān)系圖信粮,如下圖所示:
3. 聚合關(guān)系
??聚合(Aggregation)關(guān)系是關(guān)聯(lián)關(guān)系的一種强缘,是強關(guān)聯(lián)關(guān)系,是整體和部分之間的關(guān)系赏胚,是 has-a 的關(guān)系栅哀。
??聚合關(guān)系也是通過成員對象來實現(xiàn)的称龙,其中成員對象是整體對象的一部分鲫尊,但是成員對象可以脫離整體對象而獨立存在沦偎。例如豪嚎,學校與老師的關(guān)系,學校包含老師舌涨,但如果學校停辦了囊嘉,老師依然存在扭粱。
??在 UML 類圖中,聚合關(guān)系可以用帶空心菱形的實線來表示蜓堕,菱形指向整體俩滥。大學和教師的關(guān)系圖贺奠,如下圖所示:
4. 組合關(guān)系
??組合(Composition)關(guān)系也是關(guān)聯(lián)關(guān)系的一種霜旧,也表示類之間的整體與部分的關(guān)系,但它是一種更強烈的聚合關(guān)系儡率,是 comtains-a 關(guān)系挂据。
??在組合關(guān)系中,整體對象可以控制部分對象的生命周期儿普,一旦整體對象不存在崎逃,成員對象也將不存在,成員對象不能脫離整體對象而存在眉孩。例如,頭和嘴的關(guān)系浪汪,沒有了頭巴柿,嘴也就不存在了。
??在 UML 類圖中死遭,組合關(guān)系用帶實心菱形的實線來表示广恢,菱形指向整體。頭和嘴的關(guān)系圖呀潭,如下圖所示:
5. 泛化關(guān)系
??泛化(Generalization)關(guān)系是對象之間耦合度最大的一種關(guān)系钉迷,表示一般與特殊的關(guān)系,是父類與子類之間的關(guān)系钠署,是一種繼承關(guān)系糠聪,是 is-a 的關(guān)系。
??在 UML 類圖中谐鼎,泛化關(guān)系用帶空心三角箭頭的實線來表示舰蟆,箭頭從子類指向父類。在代碼實現(xiàn)時,使用面向?qū)ο蟮睦^承機制來實現(xiàn)泛化關(guān)系夭苗。例如信卡,Student 類和 Teacher 類都是 Person 類的子類,其類圖如下圖所示:
6. 實現(xiàn)關(guān)系
??實現(xiàn)(Realization)關(guān)系是接口與實現(xiàn)類之間的關(guān)系题造。在這種關(guān)系中傍菇,類實現(xiàn)了接口,類中的操作實現(xiàn)了接口中所聲明的所有的抽象操作界赔。
??在 UML 類圖中丢习,實現(xiàn)關(guān)系使用帶空心三角箭頭的虛線來表示,箭頭從實現(xiàn)類指向接口淮悼。例如咐低,汽車和船實現(xiàn)了交通工具,其類圖如圖下圖所示:
UML與軟件工程
UML圖是軟件工程的組成部分袜腥,軟件工程從宏觀的角度保證了軟件開發(fā)的各個過程的質(zhì)量见擦。而UML作為一種建模語言,更加有效的實現(xiàn)了軟件工程的要求羹令。
在軟件的各個開發(fā)階段需要的UML圖鲤屡,如下圖所示:
UML圖的使用人員總結(jié),每種顏色代表一種圖福侈,如黃色代表用例圖酒来,用例圖是用戶,分析人員肪凛,測試人員會使用的堰汉。如下圖所示: