【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
發(fā)現(xiàn)個(gè)好東西思維導(dǎo)圖, 最近開始用MindManager整理博客
.
作者?:萬(wàn)境絕塵?
轉(zhuǎn)載請(qǐng)注明出處?:?http://blog.csdn.net/shulianghan/article/details/18964835
.
一. 靜態(tài)圖概述
1. 靜態(tài)圖引入
(1) 圖的分類
圖的分類 : 圖分為結(jié)構(gòu)行為圖 和動(dòng)態(tài)行為圖,結(jié)構(gòu)行為圖包括?用例圖,?類圖,對(duì)象圖,組件圖,配置圖; 動(dòng)態(tài)行為圖 包括狀態(tài)圖,活動(dòng)圖,時(shí)序圖,協(xié)作圖;
(2) 靜態(tài)圖內(nèi)容
靜態(tài)圖內(nèi)容 : 靜態(tài)圖顯示系統(tǒng)的靜態(tài)結(jié)構(gòu), 顯示事物種類的內(nèi)部結(jié)構(gòu), 事物種類之間的相互關(guān)系;
(3) 靜態(tài)圖性質(zhì)
靜態(tài)圖永久性 : 靜態(tài)圖可能包含描述暫時(shí)行為, 但是靜態(tài)圖不顯示暫時(shí)性信息;
靜態(tài)圖不包括動(dòng)態(tài)行為 : 靜態(tài)圖將行為的實(shí)體描述成離散的模型元素, 但是不包括動(dòng)態(tài)行為細(xì)節(jié); 靜態(tài)圖將這些行為實(shí)體看做是被類所指定 并 擁有使用的物體, 這些實(shí)體的動(dòng)態(tài)行為細(xì)節(jié)由交互視圖 和狀態(tài)視圖描述;?
靜態(tài)圖是基礎(chǔ) : 靜態(tài)圖描述動(dòng)態(tài)交互的事物, 是建立其它圖的基礎(chǔ);
2. 類圖?
類圖概念 : 類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu);
類圖作用 : 定義系統(tǒng)中的類, 表示類之間的關(guān)系(關(guān)聯(lián), 依賴, 聚合等), 描述類的內(nèi)部結(jié)構(gòu)(屬性, 方法等);
類圖有效期 : 類描述的是靜態(tài)關(guān)系, 在整個(gè)系統(tǒng)的生命周期都是有效的.
分析系統(tǒng)層次方法 : 分析用例 和 問(wèn)題, 就可以得到相關(guān)的類, 然后將邏輯上相關(guān)的類封裝成包, 分成包以后就能很好的體現(xiàn)系統(tǒng)的結(jié)構(gòu).
3. 對(duì)象圖
對(duì)象圖與類圖區(qū)別 : 對(duì)象圖顯示類圖的多個(gè)對(duì)象實(shí)例, 對(duì)象圖是類圖的實(shí)例;
對(duì)象圖生命周期 : 對(duì)象存在生命周期, 對(duì)象圖的生命周期就是對(duì)象存在的過(guò)程, 對(duì)象圖只在系統(tǒng)的某一段時(shí)間存在;
4. 包圖
包圖的組成 : 包是由包和類組成;?
包圖作用 : 包圖可以表示包與包之間的關(guān)系, 用來(lái)描述系統(tǒng)的分層結(jié)構(gòu).?
二. 類圖?
1. 類圖基本概述
通過(guò)關(guān)系認(rèn)識(shí)系統(tǒng)?: 構(gòu)造好基本事物之后, 考慮這些事物之間的 關(guān)系, 這樣系統(tǒng)分析師就可以 從結(jié)構(gòu)上對(duì)該系統(tǒng)有清晰的認(rèn)識(shí);
類圖是基礎(chǔ) : 類圖是面向?qū)ο笙到y(tǒng)建模中最基礎(chǔ)的圖, 是其它圖的基礎(chǔ),狀態(tài)圖,協(xié)作圖,組件圖,配置圖 都在類圖的基礎(chǔ)上進(jìn)一步描述系統(tǒng)的其它方面特性.
2. 類圖的概念和內(nèi)容
類圖概念 : 類圖是描述類,接口,協(xié)作 以及它們之間的關(guān)系的圖, 顯示系統(tǒng)中類的靜態(tài)結(jié)構(gòu);
類圖如何描述系統(tǒng) : 類圖可以根據(jù)系統(tǒng)中各個(gè)類之間的關(guān)系描述系統(tǒng)的靜態(tài)圖, 一個(gè)靜態(tài)圖中可以包括多個(gè)類圖;
結(jié)構(gòu)模型可視化的實(shí)現(xiàn) : 靜態(tài)圖可以包括許多類圖, 靜態(tài)圖構(gòu)造系統(tǒng)的詞匯和關(guān)系, 結(jié)構(gòu)模型的可視化就是通過(guò)類圖來(lái)實(shí)現(xiàn)的;
類圖中的通用元素 : 類圖中還可以包含注解,約束, UML建模任何圖都可以含有 注解 約束;
3. 類圖的用途
類描述軟件系統(tǒng)靜態(tài)結(jié)構(gòu)圖, 支持系統(tǒng)功能需求, 系統(tǒng)分析師以支持軟件系統(tǒng)的功能需求為目的設(shè)計(jì)靜態(tài)圖;
(1) 對(duì)系統(tǒng)詞匯建模
構(gòu)造邊界 : UML建模之初, 就要構(gòu)造系統(tǒng)詞匯, 這些詞匯可以描述系統(tǒng)邊界, 哪些在邊界之內(nèi), 哪些在邊界之外;
類圖描述邊界 : 系統(tǒng)最基本的元素在構(gòu)造邊界的時(shí)候確定, 系統(tǒng)分析師用類圖描述詞匯 和它們的職責(zé);
(2) 對(duì)簡(jiǎn)單協(xié)作建模
事物總有協(xié)同類 : 類之間都有相互關(guān)系相互影響, 孤立的類很少存在, 類總是與其它類協(xié)同工作;
類圖描述協(xié)同 : 可視化和詳述 詞匯中事物協(xié)同工作方式;
(3) 對(duì)邏輯數(shù)據(jù)庫(kù)模式建模
數(shù)據(jù)庫(kù)模式 : 設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí), 使用數(shù)據(jù)庫(kù)模式來(lái)描述數(shù)據(jù)庫(kù)的概念設(shè)計(jì);?
類圖描述數(shù)據(jù)庫(kù) : 數(shù)據(jù)庫(kù)模式建模是數(shù)據(jù)庫(kù)概念設(shè)計(jì)的藍(lán)本, 可以使用類圖對(duì)這些數(shù)據(jù)庫(kù)模式進(jìn)行建模.
4. 類(類圖元素)
(1) 類的概述
類是核心 : 類是面向?qū)ο蠼M織系統(tǒng)的核心; 類是對(duì)一組具有相同屬性,操作,關(guān)系 和語(yǔ)義行為的對(duì)象描述,對(duì)象是類的具體實(shí)現(xiàn);
類的組成 : 類中定義了一組狀態(tài) 和行為;?
-- 狀態(tài) : 屬性 和關(guān)聯(lián) 描述狀態(tài), 屬性通常沒(méi)有身份的數(shù)據(jù)值, 如數(shù)字, 字符串; 關(guān)聯(lián)是有身份的對(duì)象之間的關(guān)系表示;?
-- 行為 : 行為由操作來(lái)描述,方法是操作的實(shí)現(xiàn);
類狀態(tài)機(jī) : 類的狀態(tài)機(jī)描述對(duì)象的生命周期;
類在UML中表示 :?
-- 名稱部分(Name) : 在頂端存放;
-- 屬性部分(Attribute) : 在中間存放屬性,屬性類型(AttributeType),初始值(InitialValue);
-- 方法部分(Operation) : 底部存放操作,參數(shù)表(arg:ArgumentType),返回值(ReturnType);
(2) 類名稱(ClassName)
類名稱分類 :簡(jiǎn)單名稱,路徑名稱;
-- 簡(jiǎn)單名 : 不包含冒號(hào)的單獨(dú)名稱叫簡(jiǎn)單名;
-- 路徑名 : 用包名做前綴的類名叫做路徑名;
(3) 屬性(Attribute)
屬性語(yǔ)法 : [可見性]屬性名[ :類型][ =初始值][{屬性字符串}];
-- 注意 : [] 中的內(nèi)容可有可無(wú);
可見性 : 屬性的可見性只有公有(Public + ),私有(Private - ),受保護(hù)(Protected # ), UML中不存在默認(rèn), 如果沒(méi)有顯示任何符號(hào), 就表示沒(méi)有定義該屬性;
-- 公有 : 用 "+" 表示, 可以在此類的外部使用查看該屬性;
-- 私有 : 用 "-" 表示, 不可以從外部類中訪問(wèn)該屬性;
-- 保護(hù) : 用 "#" 表示, 常與 泛化 特化 一起使用;
屬性名 : 類中屬性名不能重復(fù);
-- 屬性名約定 : 單個(gè)單詞名小寫, 多個(gè)字母屬性名 第一個(gè)單詞小寫, 其余單詞首字母大寫,駝峰命名;
類型 : 屬性可以有類型, 該類型用來(lái)說(shuō)明屬性是什么數(shù)據(jù)類型;
-- 簡(jiǎn)單類型 : 編程語(yǔ)言中定義的 整型, 布爾型, 浮點(diǎn)型等;
-- 任意類型 : UML中屬性類型可以使任意類型, 當(dāng)類型是系統(tǒng)中的其它類的時(shí)候.
-- 對(duì)象狀態(tài) : 當(dāng)一個(gè)類的屬性被完整的定義之后, 該類任何狀態(tài)都由這些屬性的特定值決定;
初始值 : 對(duì)象創(chuàng)建設(shè)置屬性初值;
-- 初始值作用 : ①保持完整性, 防止非法值破壞系統(tǒng)完整性; ② 為用戶提供易用性;
屬性字符串 : 屬性字符串用來(lái)指定關(guān)于屬性的其它信息, 不一定是是屬性值, 如果希望添加一個(gè)屬性定義規(guī)則, 但是沒(méi)地方添加, 可以寫在屬性字符串中;
類屬屬性 : 相當(dāng)于靜態(tài)屬性, 該屬性被該類的所有對(duì)象共享; 類屬屬性帶有一條下劃線;?
(4) 操作(Operation)
操作服務(wù)分類 : 類的操作提供的服務(wù)可以分為兩類, 一類是操作的結(jié)果引起對(duì)象狀態(tài)的變化, 一類是為服務(wù)請(qǐng)求者提供返回值;
操作語(yǔ)法 : [可見性]操作名[( 參數(shù)表 )][ : 返回類型][ { 屬性字符串 } ]
-- 注意 : [] 中的內(nèi)容可有可無(wú);
可見性 : 主要包括 公有(Public +), 私有(Private -), 受保護(hù)(Protected #), 包內(nèi)公有(Package ~);
-- 公有 : 用 "+" 表示, 只要調(diào)用對(duì)象能訪問(wèn)操作所在的包, 就能訪問(wèn)公有操作;
-- 私有 : 用 "-" 表示, 同一個(gè)類的對(duì)象才能調(diào)用私有的操作;
-- 保護(hù) : 用 "#" 表示, 子類對(duì)象才可以調(diào)用受保護(hù)操作;
-- 包內(nèi) : 用 "~" 表示, 同一個(gè)包內(nèi)的對(duì)象才可以調(diào)用包內(nèi)公有的操作;
操作名 : UML中默認(rèn)駝峰式命名;
參數(shù)表 : 按順序排列的屬性 定義 操作輸入;?
-- 定義方式 : 參數(shù)定義方式 "名稱 : 類型", 多個(gè)參數(shù)用逗號(hào)隔開;?
-- 默認(rèn)值 : 參數(shù)可以有默認(rèn)值, 如果沒(méi)有提供默認(rèn)值, 參數(shù)將使用指定的默認(rèn)值;
返回類型 : 可選, 大部分編程語(yǔ)言支持一個(gè)返回值類型, 如果沒(méi)有返回類型, 編程語(yǔ)言注意加上 void;
屬性字符串 : 如果需要加入預(yù)定義之外的信息, 可以在屬性字符串中添加; 預(yù)定義信息就是前面的 可見性, 參數(shù)表, 返回類型等;
(5) 職責(zé)(Responsibility)
定義位置 : 在操作部分下面還可以指定職責(zé), 職責(zé)是類或其它元素的契約或義務(wù);
聲明職責(zé) : 創(chuàng)建一個(gè)類, 聲明這個(gè)類所有對(duì)象具體的相同種類的狀態(tài) 和 相同種類的操作, 在較高層次上, 還要聲明這些屬性和操作要完成的職責(zé)和特性;
職責(zé)的表述 : 職責(zé)可以寫成自由形式的文本, 可以是短語(yǔ), 句子, 或短文;
5. 接口(類圖元素)
接口定義 : 在沒(méi)有給出對(duì)象的實(shí)現(xiàn)和狀態(tài)的情況下對(duì)對(duì)象的描述;
接口作用 :?
-- 邊界清晰 : 擁有良好接口的類具有清晰的邊界;?
-- 職責(zé)均衡 : 并能成為系統(tǒng)中職責(zé)均衡分布的一部分;?
類和接口的區(qū)別與聯(lián)系 :?
-- 區(qū)別 : 接口包含操作, 不包含屬性, 沒(méi)有對(duì)外界可見的關(guān)聯(lián);?
-- 聯(lián)系 : 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口, 所有的類都可以實(shí)現(xiàn)接口中的操作;?
---接口與類的關(guān)聯(lián)關(guān)系 : 接口 與 實(shí)現(xiàn)接口的類 通過(guò)一條實(shí)線連接;
---接口與類的依賴關(guān)聯(lián) : 使用該接口的類 通過(guò) 依賴關(guān)系 與 接口關(guān)聯(lián), 依賴關(guān)系是帶箭頭的虛線;?
---- 依賴接口操作 : 如果依賴類僅依賴于指定接口的操作, 那么依賴箭頭指向接口;
---- 依賴實(shí)現(xiàn)類 : 如果依賴類依賴于接口實(shí)現(xiàn)類, 那么依賴箭頭指向接口的實(shí)現(xiàn)類;
顯示接口中的操作 : 接口使用普通類矩形符號(hào), 只是在接口名稱上方有 <<interface>>.?
6. 關(guān)系(類圖元素)
(1) 依賴關(guān)系
1> 依賴概述
某種形式依賴 : 一個(gè)元素(生產(chǎn)者)的某些改變可能會(huì)影響 或者 提供消息給其它元素(客戶), 客戶以某種形式依賴于生產(chǎn)者; ?
依賴表示方式 : 依賴用帶箭頭的虛線表示, 箭頭指向生產(chǎn)者;
方法參數(shù)依賴 : 在類A中的方法參數(shù)是類B對(duì)象, 參數(shù)B的改變, 使A隨之改變, 這樣類A依賴于類B; 例如 TV 中change()方法傳入頻道channel, 頻道改變, 電視狀態(tài)改變, 這樣TV依賴于channel;
2> 使用依賴(Usage)
使用依賴 : 關(guān)鍵字<<use>>, 聲明一個(gè)模型元素A需要用到已存在的另一個(gè)模型元素B (即在A中定義一個(gè)B成員變量), 這樣才能正確實(shí)現(xiàn)使用者的功能, 使用依賴的方式包括了 調(diào)用依賴,實(shí)例化依賴,參數(shù)依賴 和發(fā)送依賴;?
-- 調(diào)用依賴 : 關(guān)鍵字<<call>>, 一個(gè)類調(diào)用其它類的操作;
-- 參數(shù)依賴 : 關(guān)鍵字<<parameter>>, 聲明一個(gè)操作和它的參數(shù)之間的關(guān)系, 客戶類的操作使用提供者類的對(duì)象, 客戶類的操作使用提供者類的參數(shù);
-- 發(fā)送依賴 : 關(guān)鍵字<<send>>, 聲明信號(hào)發(fā)送者 和信號(hào)接收者之間的關(guān)系;
-- 實(shí)例化依賴 : 關(guān)鍵字<<instantiate>>, 聲明用一個(gè)類的方法創(chuàng)建另一個(gè)類的實(shí)例,客戶類的操作返回提供者類的值, 類似于工廠類中創(chuàng)建類;
3> 抽象依賴
抽象依賴 : 客戶與提供者之間的關(guān)系, 依賴于在不同層次上的事物;
-- 跟蹤依賴 : 關(guān)鍵字<<trace>>, 聲明不同模型中的元素存在一些連接, 通常這些模型是開發(fā)過(guò)程中不同階段的模型;
---- 作用 : 追溯跨模型系統(tǒng)要求, 跟蹤模型中會(huì)影響其它模型的模型所引起的變化;
-- 精化依賴 : 關(guān)鍵字<<refine>>, 具有兩個(gè)不同語(yǔ)義層次上的元素之間的映射,不完善到完善之間的映射, 不會(huì)再最后模型中共存;
-- 派生依賴 : 關(guān)鍵字<<derive>>, 聲明實(shí)例A可以從實(shí)例B導(dǎo)出;
4> 授權(quán)依賴
授權(quán)依賴 : 事物A訪問(wèn)事物B的能力是授權(quán)依賴; 提供者(被依賴者,獨(dú)立)可以規(guī)定客戶(依賴者,不獨(dú)立)對(duì)齊訪問(wèn)權(quán)限, 可以控制客戶對(duì)其內(nèi)容訪問(wèn)的方法;
-- 訪問(wèn)依賴 : 關(guān)鍵字<<access>>, 允許包A問(wèn)包B;
-- 導(dǎo)入依賴 : 關(guān)鍵字<<import>>, 允許包A訪問(wèn)包B, 并為包B的組成部分增加別名;
-- 友元依賴 : 關(guān)鍵字<<friend>>, 允許包A訪問(wèn)包B, 不管包B的元素是否具有可見性;
5> 綁定依賴
綁定依賴 : 關(guān)鍵字<<bind>>, 為模板參數(shù)指定值, 以生成一個(gè)新的模板元素; 將數(shù)值分配給模板參數(shù), 可以通過(guò)取代模板備份中的參數(shù)實(shí)現(xiàn);
(2) 泛化關(guān)系
泛化關(guān)系 : 泛化關(guān)系就是繼承關(guān)系, 子類和父類之間的關(guān)系就是泛化關(guān)系;
泛化關(guān)系表示 : 泛化關(guān)系用空心三角箭頭表示,箭頭指向父類, 多個(gè)泛化關(guān)系可以用箭頭線組成的樹來(lái)表示;
(3) 關(guān)聯(lián)關(guān)系
1> 關(guān)聯(lián)關(guān)系的一些定義
關(guān)聯(lián)關(guān)系定義 : 描述一組具有共同特征, 行為特征, 關(guān)系和語(yǔ)義的鏈接;
結(jié)構(gòu)關(guān)系 : 關(guān)聯(lián)關(guān)系是一種結(jié)構(gòu)關(guān)系, 指明事物A對(duì)象與事物B對(duì)象間的關(guān)系;
鏈接是關(guān)聯(lián)實(shí)例 : 兩個(gè)對(duì)象存在鏈接, 那么對(duì)象對(duì)應(yīng)的類之間存在關(guān)聯(lián)關(guān)系, 鏈接是關(guān)聯(lián)的實(shí)例;
關(guān)聯(lián)關(guān)系表示 : 關(guān)聯(lián)關(guān)系可以使用一條鏈接兩個(gè)類的實(shí)現(xiàn)表示;
二元關(guān)系 : 關(guān)聯(lián)的實(shí)例是鏈接, 每個(gè)鏈接由一組對(duì)象構(gòu)成, 每個(gè)對(duì)象來(lái)自不同的類, 對(duì)象A與對(duì)象B一對(duì)一關(guān)系就是二元關(guān)系;
2> 關(guān)聯(lián)關(guān)系的修飾
a. 名稱
名稱定義 : 關(guān)聯(lián)的名稱, 用來(lái)描述關(guān)聯(lián)的性質(zhì);
名稱命名規(guī)范 : 使用動(dòng)詞或動(dòng)詞短語(yǔ)命名關(guān)聯(lián), 表明源對(duì)象在目標(biāo)對(duì)象上執(zhí)行的動(dòng)作;
方向指示符 : 在名稱后面添加一個(gè)方向指示符(實(shí)心的三角形), 用來(lái)消除可能存在的歧義; (不知道怎么畫)
b. 角色
角色定義 : 當(dāng)類A處于關(guān)聯(lián)的某一端時(shí), 該類就在關(guān)聯(lián)關(guān)系中扮演一個(gè)角色, 即類A對(duì)類B所表現(xiàn)的職責(zé);
角色命名規(guī)范 : 角色名稱使用名詞或者名詞短語(yǔ)命名;
修改角色名稱 : ?雙擊關(guān)聯(lián)關(guān)系那條線, 在Role A/B General 中修改角色名稱;
c. 多重性
多重性是約束 : 約束是UML三大擴(kuò)展機(jī)制之一, 多重性是一種使用的最廣泛的一種約束;
多重性表示 : 格式 "min .. max", min和max是int類型, 表示該端點(diǎn)有多少個(gè)對(duì)象可以與另一個(gè)端點(diǎn)的對(duì)象關(guān)聯(lián);
d. 聚合(Aggregation)
聚合關(guān)系定義 : 聚合表示整體與部分之間的關(guān)聯(lián);
聚合關(guān)系表示 : 聚合關(guān)系使用帶空心零星箭頭實(shí)線表示, 箭頭方向指向整體;
該聚合關(guān)系解析 : 一所大學(xué)中有1個(gè)活多個(gè)學(xué)院, 一個(gè)學(xué)院只屬于一個(gè)大學(xué), 菱形箭頭方向指向整體;
e. 組合關(guān)系(Composition)
強(qiáng)聚合 : 組合關(guān)系是聚合關(guān)系中的一種特殊形式, 是更強(qiáng)形式的聚合;
組合關(guān)系的特殊性 : 成員對(duì)象的生命周期取決于聚合的生命周期, 當(dāng)主對(duì)象消失, 成員對(duì)象也隨之消失;
組合關(guān)系表示 : 組合關(guān)系由實(shí)心菱形箭頭表示, 箭頭方向指向主體方向;
f. 導(dǎo)航性(Navigation)
導(dǎo)航性定義 : 對(duì)象A通過(guò)鏈可以訪問(wèn)對(duì)象B, 對(duì)一個(gè)關(guān)聯(lián)關(guān)系設(shè)置導(dǎo)航型就是本端對(duì)象A可以訪問(wèn)另一端對(duì)象B;
單向關(guān)聯(lián) : 單向關(guān)聯(lián)用一個(gè)帶箭頭的實(shí)現(xiàn)表示;
雙向關(guān)聯(lián) : 雙向關(guān)聯(lián)用一條直線表示;
.
作者?:萬(wàn)境絕塵?
轉(zhuǎn)載請(qǐng)注明出處?:?http://blog.csdn.net/shulianghan/article/details/18964835
.
(4) 實(shí)現(xiàn)關(guān)系
實(shí)現(xiàn)關(guān)系定義 :規(guī)格說(shuō)明和其實(shí)現(xiàn)之間的關(guān)系是實(shí)現(xiàn)關(guān)系;
實(shí)現(xiàn)關(guān)系組成 : 實(shí)現(xiàn)關(guān)系意味著要具有接口一樣的說(shuō)明元素, 也可以用一個(gè)具體的實(shí)現(xiàn)元素來(lái)暗示它的說(shuō)明必須被支持, 例如實(shí)現(xiàn)關(guān)系可以用來(lái)表示類的一個(gè)優(yōu)化形式和一個(gè)簡(jiǎn)單低效的形式之間的關(guān)系, 沒(méi)有支持說(shuō)明就變得很低效, 必須支持規(guī)格說(shuō)明;
實(shí)現(xiàn)關(guān)系的使用情況 :接口與實(shí)現(xiàn)類之間,用例與實(shí)現(xiàn)該用例的協(xié)作之間;
-- 正常表示 : 指向接口的空心三角形虛線表示;
-- 省略表示 : 接口是小圓圈, 可以使用一條實(shí)線表示;
7. 類圖建模技術(shù)
(1) 對(duì)協(xié)作建模
協(xié)作定義 : 類不是單獨(dú)存在的, 需要與其它類協(xié)作, 協(xié)作是動(dòng)態(tài)交互在靜態(tài)圖上的映射, 協(xié)作的靜態(tài)結(jié)構(gòu)通過(guò)類圖來(lái)描述;
協(xié)作建模策略 :?
-- 識(shí)別建模機(jī)制 : 機(jī)制描述了正在建模的部分系統(tǒng) 的功能和行為, 這些功能和行為由 類, 接口 和 一些元素交互產(chǎn)生;
-- 識(shí)別機(jī)制組成 : 對(duì)每種機(jī)制, 識(shí)別參與協(xié)作的類,接口和其它協(xié)作, 并識(shí)別這些事物之間的關(guān)系;
-- 通過(guò)協(xié)作檢錯(cuò) : 用協(xié)作的腳本檢測(cè)事物, 通過(guò)這種方法發(fā)現(xiàn)模型中被遺漏的部分 和有明顯語(yǔ)義錯(cuò)誤的部分;
-- 屬性方法轉(zhuǎn)換 : 將元素 和 它們的內(nèi) 容聚合在一起, 即平衡類的職責(zé),將職責(zé)轉(zhuǎn)換成具體的 屬性 和 方法;
(2) 對(duì)邏輯數(shù)據(jù)庫(kù)模式建模
存儲(chǔ)永久對(duì)象 : 許多系統(tǒng)中都存在永久對(duì)象, 使用關(guān)系數(shù)據(jù)庫(kù), 面向?qū)ο髷?shù)據(jù)庫(kù) 或混合關(guān)系/對(duì)象數(shù)據(jù)庫(kù) 存儲(chǔ)永久對(duì)象.?
ER圖與UML建模區(qū)別 :?
-- 建模數(shù)據(jù)庫(kù)局限性 : ER圖只能針對(duì)邏輯數(shù)據(jù)庫(kù)建模, UML可以對(duì)邏輯數(shù)據(jù)庫(kù) 物理數(shù)據(jù)庫(kù)進(jìn)行建模,物理數(shù)據(jù)庫(kù)中, 類圖將邏輯操作轉(zhuǎn)為觸發(fā)器或存儲(chǔ)過(guò)程;
-- 建模方式區(qū)別 : ER圖只能針對(duì)數(shù)據(jù)建模, UML在數(shù)據(jù)基礎(chǔ)上可以針對(duì)行為進(jìn)行建模;?
數(shù)據(jù)庫(kù)模式建模策略 :?
-- 類的生命周期 : 在模型中識(shí)別的類, 該類狀態(tài)必須超過(guò)其應(yīng)用系統(tǒng)的生命周期;
-- 類圖特定標(biāo)記 : 包含永久類的類圖, 必須標(biāo)記為永久的(persistent), 對(duì)特定的 數(shù)據(jù)庫(kù)細(xì)節(jié) 可以定義自己的 標(biāo)記值集合;
-- 注重詳細(xì)細(xì)節(jié) : 展開這些類的結(jié)構(gòu)性細(xì)節(jié), 詳細(xì)描述屬性細(xì)節(jié),注重于關(guān)聯(lián)和構(gòu)造類的基數(shù);
-- 簡(jiǎn)化邏輯結(jié)構(gòu) : 觀察系統(tǒng)中的公共模式(關(guān)聯(lián)方式), 它們經(jīng)常造成物理數(shù)據(jù)庫(kù)設(shè)計(jì)的復(fù)雜變化, 必要時(shí)可以創(chuàng)建簡(jiǎn)化邏輯結(jié)構(gòu)的中間抽象;?
-- 業(yè)務(wù)邏輯封裝 : 考慮這些類的行為, 擴(kuò)展 對(duì)數(shù)據(jù)存儲(chǔ) 和 數(shù)據(jù)完整性來(lái)說(shuō) 重要的操作, 與對(duì)象集的操作相關(guān)的業(yè)務(wù)規(guī)則 應(yīng)該被封裝在 永久類的上一層;
-- 邏輯物理轉(zhuǎn)換 : 盡量用工具將邏輯設(shè)計(jì)轉(zhuǎn)換成物理設(shè)計(jì);
(3) 正向工程
建模目的 : 建模時(shí)為了及時(shí)交付滿足用戶需求 及業(yè)務(wù)發(fā)展目標(biāo) 的軟件, 因此要保證創(chuàng)建的模型 與 交付產(chǎn)品 相匹配, 并使模型與產(chǎn)品 保持同步 的代價(jià)降到最低;
UML映射語(yǔ)言 : UML可以把類圖清楚的映射到各種面向?qū)ο笳Z(yǔ)言上;
映射信息損失 : 正向映射是 把 模型轉(zhuǎn)為代碼的過(guò)程,UML 中模型描述 比當(dāng)前任何面向?qū)ο笳Z(yǔ)言都要豐富, 映射的過(guò)程中會(huì)有一定信息損失, 因此UML模型不可或缺;
正向映射策略 :?
-- 識(shí)別映射語(yǔ)言 : 識(shí)別映射到所選擇的的實(shí)現(xiàn)語(yǔ)言的規(guī)則;
-- UML信息有損失 : 選擇的語(yǔ)言的語(yǔ)義, 可能會(huì)限定一些UML特性的使用, 即UML信息不能用語(yǔ)言完全表達(dá)出來(lái), 會(huì)有一定的損失;
-- 精確控制層次 : 用標(biāo)記值詳細(xì)描述目標(biāo)語(yǔ)言, 若需要精確控制, 該操作可以在單個(gè)類的層次 上進(jìn)行, 也可以用在 較高層次(協(xié)作,包) 上運(yùn)行;
-- 正向工程工具 : 使用工具對(duì)模型進(jìn)行正向工程;
(4) 逆向工程
逆向工程定義 : 逆向工程是通過(guò)特定實(shí)現(xiàn)語(yǔ)言的映射, 將代碼轉(zhuǎn)換為模型的過(guò)程;
冗余信息 : 代碼轉(zhuǎn)為模型會(huì)有大量的細(xì)節(jié)層次, 對(duì)于模型來(lái)說(shuō)這些細(xì)節(jié)太詳細(xì), 屬于冗余信息;
信息缺失 : UML中的信息要比語(yǔ)言豐富, 因此逆向工程生成的模型是不完整的, 因?yàn)檎蚬こ虛p失了一些編程語(yǔ)言不能表達(dá)的UML信息;
逆向工程策略 :?
-- 識(shí)別映射規(guī)則 : 識(shí)別從視線語(yǔ)言到所選擇的語(yǔ)言進(jìn)行映射的規(guī)則;
-- 逆向工程工具 : 使用工具指向要進(jìn)行逆向工程的代碼, 用工具生成新的模型或修改以前進(jìn)行正向工程使已有的模型;
-- 查詢模型創(chuàng)建 : 使用工具, 通過(guò)查詢模型創(chuàng)建類圖;
三. 對(duì)象圖
(1) 對(duì)象圖引入
靜態(tài)和動(dòng)態(tài)圖 :類圖描述的是系統(tǒng)的靜態(tài)結(jié)構(gòu)和關(guān)系,交互圖描述的是系統(tǒng)的動(dòng)態(tài)特性.
類圖和交互圖缺陷 : 跟蹤系統(tǒng)的交互過(guò)程時(shí), 經(jīng)常涉及到交互過(guò)程中某一瞬間交互對(duì)象的狀態(tài), 但是系統(tǒng)的類圖和交互圖都沒(méi)有對(duì)此進(jìn)行描述.
對(duì)象圖引入 : 對(duì)象圖用來(lái)描述參與一個(gè)交互的各個(gè)對(duì)象的某一時(shí)刻的狀態(tài);
對(duì)象圖作用 : 在復(fù)雜系統(tǒng)中, 出錯(cuò)時(shí)涉及的對(duì)象處于一個(gè)有眾多類的關(guān)系網(wǎng)中, 系統(tǒng)測(cè)試人員需要為出錯(cuò)時(shí)刻系統(tǒng)各個(gè)對(duì)象的狀態(tài)建立對(duì)象圖, 這樣能方便分析錯(cuò)誤;
(2) 對(duì)象圖概念和內(nèi)容
對(duì)象圖定義 : 對(duì)象圖表示在某一時(shí)刻一組對(duì)象以及它們之間的關(guān)系, 可以被看做是類圖在系統(tǒng)某一時(shí)刻之間的關(guān)系圖;
對(duì)象圖的表示 : 對(duì)象圖由節(jié)點(diǎn)和連接節(jié)點(diǎn)的連線組成, 節(jié)點(diǎn)可以是對(duì)象, 也可以是類, 連線表示對(duì)象間的關(guān)系, 類名下面帶下劃線;
對(duì)象圖內(nèi)容 : 對(duì)象圖除了對(duì)象節(jié)點(diǎn) 以及連線之外, 還可以包含標(biāo)注 和約束; 如果有必要可以將 類 畫到對(duì)象圖中, 如果系統(tǒng)比較復(fù)雜還可以包含模型包 和 子系統(tǒng);?
對(duì)象圖側(cè)重點(diǎn) : 對(duì)象圖可以對(duì)對(duì) 系統(tǒng)靜態(tài)設(shè)計(jì) 或 靜態(tài)進(jìn)程視圖建模, 但對(duì)象圖更注重 現(xiàn)實(shí) 或 原型實(shí)例, 這種視圖主要支持系統(tǒng)的功能需求(即提供給用戶的服務(wù));
(3) 對(duì)象圖建模
對(duì)象圖的兩個(gè)來(lái)源 : 對(duì)象圖主要用來(lái)描述類的實(shí)例在特定時(shí)刻的狀態(tài), 它可以是類的實(shí)例, 也可以是交互圖的靜態(tài)部分;
對(duì)象圖與組件圖和配置圖的共同點(diǎn) : 組件圖和配置圖可以包含 部件 或 節(jié)點(diǎn) 的實(shí)例, 如果它們只包含實(shí)例, 不包含任何信息, 可以將組件圖和配置圖看做是特殊的對(duì)象圖;
對(duì)象圖建模過(guò)程 :?
-- 確定對(duì)象 : 參考類圖和交互圖, 確定參與交互的對(duì)象;
-- 確定關(guān)系 : 確定類之間的關(guān)系, 例如 依賴, 泛化, 實(shí)現(xiàn), 關(guān)聯(lián);
-- 交互建模 : 針對(duì)交互在某個(gè)特定時(shí)刻各個(gè)對(duì)象的狀態(tài), 使用對(duì)象圖為這些對(duì)象建模;
-- 狀態(tài)關(guān)系 : 系統(tǒng)分析師根據(jù)建模的目標(biāo), 繪制對(duì)象的 關(guān)鍵狀態(tài) 和 關(guān)鍵對(duì)象 之間的連接關(guān)系;
四. 包圖
1. 包的概述
包圖的構(gòu)成和作用 : 包圖由包和包之間的關(guān)系構(gòu)成, 它是維護(hù)和控制系統(tǒng)總體結(jié)構(gòu)的重要建模工具;
模型分組控制 : 語(yǔ)義相近的 類, 接口, 組件, 節(jié)點(diǎn)和圖組織起來(lái)放在一個(gè)包里, 可以方便理解和處理整個(gè)模型;
可見性控制 : 一些元素在包外可見, 一些隱藏在包內(nèi), 嚴(yán)密控制對(duì)包內(nèi)元素的訪問(wèn), 可以使包高內(nèi)聚,低耦合;
2. 包的名字
簡(jiǎn)單名(simple name) : 一個(gè)簡(jiǎn)單的名稱;
路徑名(path name) : 包位于外圍包的名字作為前綴的包名;
3. 包的元素
包可以擁有的元素 :類,接口,組件,節(jié)點(diǎn),協(xié)作,用例和圖, 還可以包含其它包;
包內(nèi)元素命名規(guī)則 : 類和包都的路徑名是上一級(jí)包名, 因此包為其擁有的模型元素構(gòu)成一個(gè)命名空間,一個(gè)模型包內(nèi)不能有名稱相同的元素;
包和內(nèi)部元素的關(guān)系 : 包擁有內(nèi)部的元素, 這是一個(gè)組合關(guān)系, 如果包被刪除, 其中的元素也隨之刪除;
4. 包的可見性
包不是孤立的 : 包在軟件模型中不是孤立存在的, 包里面的模型元素 與外部的類存在著某些關(guān)系;
內(nèi)聚耦合 : 為了使各個(gè)包能坐到高內(nèi)聚,低耦合, 對(duì)包內(nèi)的元素加以控制, 一些元素可以被外界訪問(wèn)到, 一些不能被外界訪問(wèn);
包的可見性分類 :
-- 公有 (public) : 前綴符號(hào) " + ", 該元素可以被任何引入該包的包中元素訪問(wèn), 引入包就是 包A 引入包B, 包A的元素可以訪問(wèn)包B中的 +元素;
-- 受保護(hù) (protected) : 前綴符號(hào) " # ", 該元素可以被繼承該包的包中元素訪問(wèn), 包A 繼承 包B, 包A可以訪問(wèn)包B中的 #元素;
-- 私有 (private) : 前綴符號(hào) " - ", 該元素只能被同一個(gè)包中的元素訪問(wèn), 包A中的私有元素只能被包A中的元素訪問(wèn)到;
舉例 : 包A 中有四個(gè)公有元素, 包B引入包A, 包B中的元素都能看到包A中的四個(gè)公有元素;
嵌套可見性 : 元素A 對(duì)于 包B 是可見的, 包B 中還嵌套 包C, 那么包C也能看到 元素A; 被嵌套的包C可以看到包含該包(C) 的包(A)所能看到的所有的事物; ?
5. 引入與輸出
引入 : 允許一個(gè)包中的元素單向訪問(wèn)另一個(gè)包中的元素;?
引入關(guān)系建模 : 使用構(gòu)造性引入修飾的依賴為引入關(guān)系建模; 通過(guò)把抽象包裝成有含義的組塊, 然后用引入關(guān)系控制對(duì)它們的訪問(wèn), 就能控制大量抽象的復(fù)雜性;
輸出 : 包的公共部分成為輸出;
包之間的引入表示方法 : 使用虛線箭頭表示引入,箭頭方向表示被引入的包, 即輸出元素的包;
引入分析 : 包1 引入 包2, 包2 引入 包3;?
輸出分析 :?
-- 包2輸出 : 包2 輸出 B1 元素, 因?yàn)?B2 元素是私有的; ?
-- 包3輸出 : 包3 輸出 C1 元素, 因?yàn)?C2 元素是受保護(hù)的;
可見分析 : 可見只能在引用的雙方進(jìn)行,不包括隔代引用, 例如 包3 的C2 不能對(duì)于 包1 內(nèi)容可見;?
包1可見 : 包2 的 B1 對(duì)包1的內(nèi)容是可見的;
包2可見 : 包3 的 C1 對(duì)包2的內(nèi)容是可見的;
6. 包中的泛化關(guān)系
包中的兩種關(guān)系 : 依賴(引入) 和 泛化;
-- 引入(訪問(wèn)依賴) : 在 包A 中引入 包B 的元素;
-- 泛化 : 說(shuō)明包的家族;
泛化關(guān)系 : 包之間的泛化關(guān)系類似于類之間的泛化關(guān)系, 該關(guān)系也像類那樣遵循替代原則, 包可以替換一般的元素, 并可以增加新的元素;?
7. 標(biāo)準(zhǔn)元素
包的擴(kuò)展機(jī)制 : UML的擴(kuò)展機(jī)制同樣適用于包, 可以使用標(biāo)記值增加包的新特性, 用來(lái)描述包的新種類, 這種標(biāo)記值有五種 :虛包(facade),框架(framework),樁(stub),子系統(tǒng)(subsystem),系統(tǒng)(system);
-- 虛包 : 描述只引用其他包內(nèi)元素的包, 自己本身沒(méi)有元素;
-- 框架 : 描述由模式組成的包;
-- 樁 : 描述一個(gè)作為另一個(gè)包的公共內(nèi)容代理的包, 與虛包對(duì)應(yīng);
-- 子系統(tǒng) : 描述正在建模中整個(gè)系統(tǒng)的獨(dú)立部分的包;
-- 系統(tǒng) : 描述建模中整個(gè)系統(tǒng)的包;
8. 包圖建模
包的作用 : 將建模元素按語(yǔ)義分組, 使得復(fù)雜的系統(tǒng)模型能夠被構(gòu)造,表達(dá),理解和管理;
包和類的區(qū)別 : 類是對(duì)問(wèn)題領(lǐng)域 或 解決方案的抽象, 包是將事物組織成模型的一種機(jī)制; 包可以沒(méi)有標(biāo)志, 因?yàn)?strong>包沒(méi)有實(shí)例, 在系統(tǒng)中不可見, 類必須有標(biāo)志,因?yàn)槠溆袑?shí)例;
包圖建模策略 :?
-- 分組 : 分析系統(tǒng)模型元素, 將概念上或語(yǔ)義上相近的模型元素放入一個(gè)包;
-- 可視性 : 將包中的每個(gè)元素都標(biāo)出可見性 (公共, 受保護(hù), 私有);
-- 依賴 : 確定包之間的依賴關(guān)系, 特別是輸入依賴;
-- 泛化 : 確定包之間的泛化關(guān)系, 特別是多重性 與 重載;
-- 繪制 ,精化包圖;
包圖建模實(shí)例 :?
-- 系統(tǒng)包 : 包含讀者, 管理員, 借書相關(guān)業(yè)務(wù)的用例, 類等信息;
-- 界面包 : 包含操作界面, 窗體相關(guān)的用例, 類等信息;
-- 公共包 : 包含公共用例, 類等信息;
-- 數(shù)據(jù)包 : 包含數(shù)據(jù)庫(kù)相關(guān)的用例, 類信息;
五. 圖書管理系統(tǒng)靜態(tài)圖建模實(shí)戰(zhàn)
靜態(tài)圖建立 : 建立系統(tǒng)的靜態(tài)圖是對(duì)系統(tǒng)領(lǐng)域問(wèn)題及其解決方案的分析和設(shè)計(jì)的過(guò)程, 靜態(tài)圖設(shè)計(jì)的主要內(nèi)容是建立類圖, 找出系統(tǒng)中類之間的關(guān)系;
1. 建立對(duì)象圖步驟
建立對(duì)象步驟 :?
-- 確定需求 : 研究分析問(wèn)題領(lǐng)域, 確定系統(tǒng)需求;
-- 屬性操作 : 發(fā)現(xiàn)對(duì)象和對(duì)象類, 明確類的屬性和操作;
-- 靜態(tài)關(guān)系 : 發(fā)現(xiàn)類之間的靜態(tài)關(guān)系, 泛化, 關(guān)聯(lián), 實(shí)現(xiàn), 依賴關(guān)系;
-- 類與關(guān)系 : 設(shè)計(jì)類與關(guān)系;
-- 繪制類圖 : 繪制對(duì)象類圖, 并編制應(yīng)用說(shuō)明;
2. 使用Rational Rose繪制包圖和類圖
(1) 包圖
先建包 : Rational Rose中可以創(chuàng)建多個(gè)類, 類的屬性和方法都能在類圖中體現(xiàn), 為了方面管理, 通常先創(chuàng)建包, 在創(chuàng)建對(duì)應(yīng)的類;
圖書管理系統(tǒng)中的四個(gè)包 :?系統(tǒng)包 (System Service), 界面包 (System UI), 工具包(System Common Utilities), 數(shù)據(jù)庫(kù)包(System Database);
(2) 類圖(系統(tǒng)包)
類圖解析 : Item 書目類, Tittle 書標(biāo)題, Reservation 預(yù)借類, Borrower 借閱者類, Loan 借閱記錄類;?
.
作者?:萬(wàn)境絕塵?
轉(zhuǎn)載請(qǐng)注明出處?:?http://blog.csdn.net/shulianghan/article/details/18964835
.
總結(jié)
以上是生活随笔為你收集整理的【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android 应用开发】Androi
- 下一篇: 【Android 应用开发】Androi