日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

發(fā)布時間:2025/6/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

發(fā)現(xiàn)個好東西思維導圖, 最近開始用MindManager整理博客

.

作者?:萬境絕塵?

轉(zhuǎn)載請注明出處?:?http://blog.csdn.net/shulianghan/article/details/18964835

.



一. 靜態(tài)圖概述




1. 靜態(tài)圖引入




(1) 圖的分類


圖的分類 : 圖分為結(jié)構(gòu)行為圖動態(tài)行為圖,結(jié)構(gòu)行為圖包括?用例圖,?類圖,對象圖,組件圖,配置圖; 動態(tài)行為圖 包括狀態(tài)圖,活動圖,時序圖,協(xié)作圖;


(2) 靜態(tài)圖內(nèi)容


靜態(tài)圖概念 :類圖,對象圖,包圖 是靜態(tài)圖;

靜態(tài)圖內(nèi)容 : 靜態(tài)圖顯示系統(tǒng)的靜態(tài)結(jié)構(gòu), 顯示事物種類的內(nèi)部結(jié)構(gòu), 事物種類之間的相互關系;


(3) 靜態(tài)圖性質(zhì)


靜態(tài)圖永久性 : 靜態(tài)圖可能包含描述暫時行為, 但是靜態(tài)圖不顯示暫時性信息;

靜態(tài)圖不包括動態(tài)行為 : 靜態(tài)圖將行為的實體描述成離散的模型元素, 但是不包括動態(tài)行為細節(jié); 靜態(tài)圖將這些行為實體看做是被類所指定擁有使用的物體, 這些實體的動態(tài)行為細節(jié)由交互視圖狀態(tài)視圖描述;?
靜態(tài)圖是基礎 : 靜態(tài)圖描述動態(tài)交互的事物, 是建立其它圖的基礎;



2. 類圖?



類圖概念 : 類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu);
類圖作用 : 定義系統(tǒng)中的類, 表示類之間的關系(關聯(lián), 依賴, 聚合等), 描述類的內(nèi)部結(jié)構(gòu)(屬性, 方法等);
類圖有效期 : 類描述的是靜態(tài)關系, 在整個系統(tǒng)的生命周期都是有效的.
分析系統(tǒng)層次方法 : 分析用例 和 問題, 就可以得到相關的類, 然后將邏輯上相關的類封裝成包, 分成包以后就能很好的體現(xiàn)系統(tǒng)的結(jié)構(gòu).


3. 對象圖




對象圖概念 : 對象圖是類圖的實例, 與類圖的標示幾乎完全相同;
對象圖與類圖區(qū)別 : 對象圖顯示類圖的多個對象實例, 對象圖是類圖的實例;
對象圖生命周期 : 對象存在生命周期, 對象圖的生命周期就是對象存在的過程, 對象圖只在系統(tǒng)的某一段時間存在;


4. 包圖




包圖的組成 : 包是由組成;?
包圖作用 : 包圖可以表示包與包之間的關系, 用來描述系統(tǒng)的分層結(jié)構(gòu).?



二. 類圖?





1. 類圖基本概述




建模起點 : 系統(tǒng)建模時, 通常從構(gòu)造系統(tǒng)的基本事物開始, 包括構(gòu)造這些基本事物的 基本屬性行為;
通過關系認識系統(tǒng)?: 構(gòu)造好基本事物之后, 考慮這些事物之間的 關系, 這樣系統(tǒng)分析師就可以 從結(jié)構(gòu)上對該系統(tǒng)有清晰的認識;
類圖是基礎 : 類圖是面向?qū)ο笙到y(tǒng)建模中最基礎的圖, 是其它圖的基礎,狀態(tài)圖,協(xié)作圖,組件圖,配置圖在類圖的基礎上進一步描述系統(tǒng)的其它方面特性.


2. 類圖的概念和內(nèi)容




類圖概念 : 類圖是描述,接口,協(xié)作 以及它們之間的關系的圖, 顯示系統(tǒng)中類的靜態(tài)結(jié)構(gòu);
類圖如何描述系統(tǒng) : 類圖可以根據(jù)系統(tǒng)中各個類之間的關系描述系統(tǒng)的靜態(tài)圖, 一個靜態(tài)圖中可以包括多個類圖;

結(jié)構(gòu)模型可視化的實現(xiàn) : 靜態(tài)圖可以包括許多類圖, 靜態(tài)圖構(gòu)造系統(tǒng)的詞匯關系, 結(jié)構(gòu)模型的可視化就是通過類圖來實現(xiàn)的;


類圖元素(7個) :,接口,協(xié)作,依賴關系,泛化關系,實現(xiàn)關系,關聯(lián)關系;

類圖中的通用元素 : 類圖中還可以包含注解,約束, UML建模任何圖都可以含有 注解 約束;


模型元素聚集 : 類圖中可以包含子系統(tǒng), 這使得模型元素聚集成了更大的模塊;?




3. 類圖的用途



描述軟件系統(tǒng)靜態(tài)結(jié)構(gòu)圖, 支持系統(tǒng)功能需求, 系統(tǒng)分析師以支持軟件系統(tǒng)的功能需求為目的設計靜態(tài)圖;


(1) 對系統(tǒng)詞匯建模



構(gòu)造邊界 : UML建模之初, 就要構(gòu)造系統(tǒng)詞匯, 這些詞匯可以描述系統(tǒng)邊界, 哪些在邊界之內(nèi), 哪些在邊界之外;
類圖描述邊界 : 系統(tǒng)最基本的元素構(gòu)造邊界的時候確定, 系統(tǒng)分析師用類圖描述詞匯它們的職責;


(2) 對簡單協(xié)作建模



事物總有協(xié)同類 : 類之間都有相互關系相互影響, 孤立的類很少存在, 類總是與其它類協(xié)同工作;
類圖描述協(xié)同 : 可視化和詳述 詞匯中事物協(xié)同工作方式;


(3) 對邏輯數(shù)據(jù)庫模式建模



數(shù)據(jù)庫模式 : 設計數(shù)據(jù)庫時, 使用數(shù)據(jù)庫模式來描述數(shù)據(jù)庫的概念設計;?
類圖描述數(shù)據(jù)庫 : 數(shù)據(jù)庫模式建模是數(shù)據(jù)庫概念設計的藍本, 可以使用類圖對這些數(shù)據(jù)庫模式進行建模.


4. 類(類圖元素)







(1) 類的概述







類是核心 : 類是面向?qū)ο蠼M織系統(tǒng)的核心; 類是對一組具有相同屬性,操作,關系語義行為的對象描述,對象是類的具體實現(xiàn);
類的組成 : 類中定義了一組狀態(tài)行為;?
-- 狀態(tài) : 屬性關聯(lián) 描述狀態(tài), 屬性通常沒有身份的數(shù)據(jù)值, 如數(shù)字, 字符串; 關聯(lián)是有身份的對象之間的關系表示;?
-- 行為 : 行為由操作來描述,方法是操作的實現(xiàn);
類狀態(tài)機 : 類的狀態(tài)機描述對象的生命周期;


類在UML中表示 :?
-- 名稱部分(Name) : 在頂端存放;
-- 屬性部分(Attribute) : 在中間存放屬性,屬性類型(AttributeType),初始值(InitialValue);
-- 方法部分(Operation) : 底部存放操作,參數(shù)表(arg:ArgumentType),返回值(ReturnType);


(2) 類名稱(ClassName)







類名稱分類 :簡單名稱,路徑名稱;
-- 簡單名 : 不包含冒號的單獨名稱叫簡單名;
-- 路徑名 : 用包名做前綴的類名叫做路徑名;





(3) 屬性(Attribute)






屬性語法 : [可見性]屬性名[ :類型][ =初始值][{屬性字符串}];
-- 注意 : [] 中的內(nèi)容可有可無;


可見性 : 屬性的可見性只有公有(Public + ),私有(Private - ),受保護(Protected # ), UML中不存在默認, 如果沒有顯示任何符號, 就表示沒有定義該屬性;
-- 公有 : 用 "+" 表示, 可以在此類的外部使用查看該屬性;
-- 私有 : 用 "-" 表示, 不可以從外部類中訪問該屬性;
-- 保護 : 用 "#" 表示, 常與 泛化 特化 一起使用;


屬性名 : 類中屬性名不能重復;
-- 屬性名約定 : 單個單詞名小寫, 多個字母屬性名 第一個單詞小寫, 其余單詞首字母大寫,駝峰命名;


類型 : 屬性可以有類型, 該類型用來說明屬性是什么數(shù)據(jù)類型;
-- 簡單類型 : 編程語言中定義的 整型, 布爾型, 浮點型等;
-- 任意類型 : UML中屬性類型可以使任意類型, 當類型是系統(tǒng)中的其它類的時候.
-- 對象狀態(tài) : 當一個類的屬性被完整的定義之后, 該類任何狀態(tài)由這些屬性的特定值決定;


初始值 : 對象創(chuàng)建設置屬性初值;
-- 初始值作用 : ①保持完整性, 防止非法值破壞系統(tǒng)完整性; ② 為用戶提供易用性;


屬性字符串 : 屬性字符串用來指定關于屬性的其它信息, 不一定是是屬性值, 如果希望添加一個屬性定義規(guī)則, 但是沒地方添加, 可以寫在屬性字符串中;


類屬屬性 : 相當于靜態(tài)屬性, 該屬性被該類的所有對象共享; 類屬屬性帶有一條下劃線;?


(4) 操作(Operation)






操作服務分類 : 類的操作提供的服務可以分為兩類, 一類是操作的結(jié)果引起對象狀態(tài)的變化, 一類是為服務請求者提供返回值;


操作語法 : [可見性]操作名[( 參數(shù)表 )][ : 返回類型][ { 屬性字符串 } ]
-- 注意 : [] 中的內(nèi)容可有可無;


可見性 : 主要包括 公有(Public +), 私有(Private -), 受保護(Protected #), 包內(nèi)公有(Package ~);
-- 公有 : 用 "+" 表示, 只要調(diào)用對象能訪問操作所在的包, 就能訪問公有操作;
-- 私有 : 用 "-" 表示, 同一個類的對象才能調(diào)用私有的操作;
-- 保護 : 用 "#" 表示, 子類對象才可以調(diào)用受保護操作;
-- 包內(nèi) : 用 "~" 表示, 同一個包內(nèi)的對象才可以調(diào)用包內(nèi)公有的操作;


操作名 : UML中默認駝峰式命名;


參數(shù)表 : 按順序排列的屬性 定義 操作輸入;?
-- 定義方式 : 參數(shù)定義方式 "名稱 : 類型", 多個參數(shù)用逗號隔開;?
-- 默認值 : 參數(shù)可以有默認值, 如果沒有提供默認值, 參數(shù)將使用指定的默認值;


返回類型 : 可選, 大部分編程語言支持一個返回值類型, 如果沒有返回類型, 編程語言注意加上 void;


屬性字符串 : 如果需要加入預定義之外的信息, 可以在屬性字符串中添加; 預定義信息就是前面的 可見性, 參數(shù)表, 返回類型等;


(5) 職責(Responsibility)







定義位置 : 在操作部分下面還可以指定職責, 職責是類或其它元素的契約或義務;
聲明職責 : 創(chuàng)建一個類, 聲明這個類所有對象具體的相同種類的狀態(tài) 和 相同種類的操作, 在較高層次上, 還要聲明這些屬性和操作要完成的職責和特性;
職責的表述 : 職責可以寫成自由形式的文本, 可以是短語, 句子, 或短文;




5. 接口(類圖元素)







接口定義 : 在沒有給出對象的實現(xiàn)狀態(tài)的情況下對對象的描述;


接口作用 :?
-- 邊界清晰 : 擁有良好接口的類具有清晰的邊界;?
-- 職責均衡 : 并能成為系統(tǒng)中職責均衡分布的一部分;?


類和接口的區(qū)別與聯(lián)系 :?
-- 區(qū)別 : 接口包含操作, 不包含屬性, 沒有對外界可見的關聯(lián);?
-- 聯(lián)系 : 一個類可以實現(xiàn)多個接口, 所有的類都可以實現(xiàn)接口中的操作;?


---接口與類的關聯(lián)關系 : 接口 與 實現(xiàn)接口的類 通過一條實線連接;






---接口與類的依賴關聯(lián) : 使用該接口的類 通過 依賴關系 與 接口關聯(lián), 依賴關系是帶箭頭的虛線;?
---- 依賴接口操作 : 如果依賴類僅依賴于指定接口的操作, 那么依賴箭頭指向接口;
---- 依賴實現(xiàn)類 : 如果依賴類依賴于接口實現(xiàn)類, 那么依賴箭頭指向接口的實現(xiàn)類;






顯示接口中的操作 : 接口使用普通類矩形符號, 只是在接口名稱上方有 <<interface>>.?






6. 關系(類圖元素)



(1) 依賴關系








1> 依賴概述



某種形式依賴 : 一個元素(生產(chǎn)者)的某些改變可能會影響 或者 提供消息給其它元素(客戶), 客戶以某種形式依賴于生產(chǎn)者; ?





依賴表示方式 : 依賴用帶箭頭虛線表示, 箭頭指向生產(chǎn)者;
方法參數(shù)依賴 : 在類A中的方法參數(shù)是類B對象, 參數(shù)B的改變, 使A隨之改變, 這樣類A依賴于類B; 例如 TV 中change()方法傳入頻道channel, 頻道改變, 電視狀態(tài)改變, 這樣TV依賴于channel;





2> 使用依賴(Usage)



使用依賴 : 關鍵字<<use>>, 聲明一個模型元素A需要用到已存在的另一個模型元素B (即在A中定義一個B成員變量), 這樣才能正確實現(xiàn)使用者的功能, 使用依賴的方式包括了 調(diào)用依賴,實例化依賴,參數(shù)依賴 和發(fā)送依賴;?
-- 調(diào)用依賴 : 關鍵字<<call>>, 一個類調(diào)用其它類的操作;
-- 參數(shù)依賴 : 關鍵字<<parameter>>, 聲明一個操作和它的參數(shù)之間的關系, 客戶類的操作使用提供者類的對象, 客戶類的操作使用提供者類的參數(shù);
-- 發(fā)送依賴 : 關鍵字<<send>>, 聲明信號發(fā)送者 和信號接收者之間的關系;
-- 實例化依賴 : 關鍵字<<instantiate>>, 聲明用一個類的方法創(chuàng)建另一個類的實例,客戶類的操作返回提供者類的值, 類似于工廠類中創(chuàng)建類;


3> 抽象依賴



抽象依賴 : 客戶與提供者之間的關系, 依賴于在不同層次上的事物;
-- 跟蹤依賴 : 關鍵字<<trace>>, 聲明不同模型中的元素存在一些連接, 通常這些模型是開發(fā)過程中不同階段的模型;
---- 作用 : 追溯跨模型系統(tǒng)要求, 跟蹤模型中會影響其它模型的模型所引起的變化;
-- 精化依賴 : 關鍵字<<refine>>, 具有兩個不同語義層次上的元素之間的映射,不完善到完善之間的映射, 不會再最后模型中共存;
-- 派生依賴 : 關鍵字<<derive>>, 聲明實例A可以從實例B導出;


4> 授權(quán)依賴



授權(quán)依賴 : 事物A訪問事物B的能力是授權(quán)依賴; 提供者(被依賴者,獨立)可以規(guī)定客戶(依賴者,不獨立)對齊訪問權(quán)限, 可以控制客戶對其內(nèi)容訪問的方法;
-- 訪問依賴 : 關鍵字<<access>>, 允許包A問包B;
-- 導入依賴 : 關鍵字<<import>>, 允許包A訪問包B, 并為包B的組成部分增加別名;
-- 友元依賴 : 關鍵字<<friend>>, 允許包A訪問包B, 不管包B的元素是否具有可見性;


5> 綁定依賴



綁定依賴 : 關鍵字<<bind>>, 為模板參數(shù)指定值, 以生成一個新的模板元素; 將數(shù)值分配給模板參數(shù), 可以通過取代模板備份中的參數(shù)實現(xiàn);




(2) 泛化關系



泛化關系 : 泛化關系就是繼承關系, 子類和父類之間的關系就是泛化關系;
泛化關系表示 : 泛化關系用空心三角箭頭表示,箭頭指向父類, 多個泛化關系可以用箭頭線組成的樹來表示;










(3) 關聯(lián)關系







1> 關聯(lián)關系的一些定義



關聯(lián)關系定義 : 描述一組具有共同特征, 行為特征, 關系和語義的鏈接;
結(jié)構(gòu)關系 : 關聯(lián)關系是一種結(jié)構(gòu)關系, 指明事物A對象與事物B對象間的關系;
鏈接是關聯(lián)實例 : 兩個對象存在鏈接, 那么對象對應的類之間存在關聯(lián)關系, 鏈接是關聯(lián)的實例;
關聯(lián)關系表示 : 關聯(lián)關系可以使用一條鏈接兩個類的實現(xiàn)表示;






二元關系 : 關聯(lián)的實例是鏈接, 每個鏈接由一組對象構(gòu)成, 每個對象來自不同的類, 對象A與對象B一對一關系就是二元關系;


2> 關聯(lián)關系的修飾



a. 名稱


名稱定義 : 關聯(lián)的名稱, 用來描述關聯(lián)的性質(zhì);
名稱命名規(guī)范 : 使用動詞或動詞短語命名關聯(lián), 表明源對象在目標對象上執(zhí)行的動作;
方向指示符 : 在名稱后面添加一個方向指示符(實心的三角形), 用來消除可能存在的歧義; (不知道怎么畫)






b. 角色


角色定義 : 當類A處于關聯(lián)的某一端時, 該類就在關聯(lián)關系中扮演一個角色, 即類A對類B所表現(xiàn)的職責;
角色命名規(guī)范 : 角色名稱使用名詞或者名詞短語命名;
修改角色名稱 : ?雙擊關聯(lián)關系那條線, 在Role A/B General 中修改角色名稱;






c. 多重性


多重性是約束 : 約束是UML三大擴展機制之一, 多重性是一種使用的最廣泛的一種約束;
多重性表示 : 格式 "min .. max", min和max是int類型, 表示該端點有多少個對象可以與另一個端點的對象關聯(lián);










d. 聚合(Aggregation)


聚合關系定義 : 聚合表示整體與部分之間的關聯(lián);
聚合關系表示 : 聚合關系使用帶空心零星箭頭實線表示, 箭頭方向指向整體;




該聚合關系解析 : 一所大學中有1個活多個學院, 一個學院只屬于一個大學, 菱形箭頭方向指向整體;


e. 組合關系(Composition)


強聚合 : 組合關系是聚合關系中的一種特殊形式, 是更強形式的聚合;
組合關系的特殊性 : 成員對象的生命周期取決于聚合的生命周期, 當主對象消失, 成員對象也隨之消失;
組合關系表示 : 組合關系由實心菱形箭頭表示, 箭頭方向指向主體方向;




f. 導航性(Navigation)


導航性定義 : 對象A通過鏈可以訪問對象B, 對一個關聯(lián)關系設置導航型就是本端對象A可以訪問另一端對象B;
單向關聯(lián) : 單向關聯(lián)用一個帶箭頭的實現(xiàn)表示;
雙向關聯(lián) : 雙向關聯(lián)用一條直線表示;



.

作者?:萬境絕塵?

轉(zhuǎn)載請注明出處?:?http://blog.csdn.net/shulianghan/article/details/18964835

.




(4) 實現(xiàn)關系



實現(xiàn)關系定義 :規(guī)格說明和其實現(xiàn)之間的關系是實現(xiàn)關系;

實現(xiàn)關系組成 : 實現(xiàn)關系意味著要具有接口一樣的說明元素, 也可以用一個具體的實現(xiàn)元素來暗示它的說明必須被支持, 例如實現(xiàn)關系可以用來表示類的一個優(yōu)化形式和一個簡單低效的形式之間的關系, 沒有支持說明就變得很低效, 必須支持規(guī)格說明;


泛化實現(xiàn)區(qū)別 : 泛化關系的兩個元素在相同語義層, 相同模型中; 實現(xiàn)關系的兩個元素在不同語義層次, 不同模型中;

實現(xiàn)關系的使用情況 :接口與實現(xiàn)類之間,用例與實現(xiàn)該用例的協(xié)作之間;


實現(xiàn)關系表示 :?
-- 正常表示 : 指向接口的空心三角形虛線表示;
-- 省略表示 : 接口是小圓圈, 可以使用一條實線表示;






7. 類圖建模技術





(1) 對協(xié)作建模



協(xié)作定義 : 類不是單獨存在的, 需要與其它類協(xié)作, 協(xié)作是動態(tài)交互在靜態(tài)圖上的映射, 協(xié)作的靜態(tài)結(jié)構(gòu)通過類圖來描述;


協(xié)作建模策略 :?
-- 識別建模機制 : 機制描述了正在建模的部分系統(tǒng) 的功能和行為, 這些功能和行為由 類, 接口 和 一些元素交互產(chǎn)生;
-- 識別機制組成 : 對每種機制, 識別參與協(xié)作的類,接口和其它協(xié)作, 并識別這些事物之間的關系;
-- 通過協(xié)作檢錯 : 用協(xié)作的腳本檢測事物, 通過這種方法發(fā)現(xiàn)模型中被遺漏的部分 和有明顯語義錯誤的部分;
-- 屬性方法轉(zhuǎn)換 : 將元素 和 它們的內(nèi) 容聚合在一起, 即平衡類的職責,將職責轉(zhuǎn)換成具體的 屬性 和 方法;


(2) 對邏輯數(shù)據(jù)庫模式建模



存儲永久對象 : 許多系統(tǒng)中都存在永久對象, 使用關系數(shù)據(jù)庫, 面向?qū)ο髷?shù)據(jù)庫 或混合關系/對象數(shù)據(jù)庫 存儲永久對象.?
ER圖與UML建模區(qū)別 :?
-- 建模數(shù)據(jù)庫局限性 : ER圖只能針對邏輯數(shù)據(jù)庫建模, UML可以對邏輯數(shù)據(jù)庫 物理數(shù)據(jù)庫進行建模,物理數(shù)據(jù)庫中, 類圖將邏輯操作轉(zhuǎn)為觸發(fā)器或存儲過程;
-- 建模方式區(qū)別 : ER圖只能針對數(shù)據(jù)建模, UML在數(shù)據(jù)基礎上可以針對行為進行建模;?


數(shù)據(jù)庫模式建模策略 :?
-- 類的生命周期 : 在模型中識別的類, 該類狀態(tài)必須超過其應用系統(tǒng)的生命周期;
-- 類圖特定標記 : 包含永久類的類圖, 必須標記為永久的(persistent), 對特定的 數(shù)據(jù)庫細節(jié) 可以定義自己的 標記值集合;
-- 注重詳細細節(jié) : 展開這些類的結(jié)構(gòu)性細節(jié), 詳細描述屬性細節(jié),注重于關聯(lián)和構(gòu)造類的基數(shù);
-- 簡化邏輯結(jié)構(gòu) : 觀察系統(tǒng)中的公共模式(關聯(lián)方式), 它們經(jīng)常造成物理數(shù)據(jù)庫設計的復雜變化, 必要時可以創(chuàng)建簡化邏輯結(jié)構(gòu)的中間抽象;?
-- 業(yè)務邏輯封裝 : 考慮這些類的行為, 擴展 對數(shù)據(jù)存儲 和 數(shù)據(jù)完整性來說 重要的操作, 與對象集的操作相關的業(yè)務規(guī)則 應該被封裝在 永久類的上一層;
-- 邏輯物理轉(zhuǎn)換 : 盡量用工具將邏輯設計轉(zhuǎn)換成物理設計;


(3) 正向工程



建模目的 : 建模時為了及時交付滿足用戶需求 及業(yè)務發(fā)展目標 的軟件, 因此要保證創(chuàng)建的模型 與 交付產(chǎn)品 相匹配, 并使模型與產(chǎn)品 保持同步 的代價降到最低;
UML映射語言 : UML可以把類圖清楚的映射到各種面向?qū)ο笳Z言上;
映射信息損失 : 正向映射是 把 模型轉(zhuǎn)為代碼的過程,UML 中模型描述 比當前任何面向?qū)ο笳Z言都要豐富, 映射的過程中會有一定信息損失, 因此UML模型不可或缺;


正向映射策略 :?
-- 識別映射語言 : 識別映射到所選擇的的實現(xiàn)語言的規(guī)則;
-- UML信息有損失 : 選擇的語言的語義, 可能會限定一些UML特性的使用, 即UML信息不能用語言完全表達出來, 會有一定的損失;
-- 精確控制層次 : 用標記值詳細描述目標語言, 若需要精確控制, 該操作可以在單個類的層次 上進行, 也可以用在 較高層次(協(xié)作,包) 上運行;
-- 正向工程工具 : 使用工具對模型進行正向工程;


(4) 逆向工程



逆向工程定義 : 逆向工程是通過特定實現(xiàn)語言的映射, 將代碼轉(zhuǎn)換為模型的過程;
冗余信息 : 代碼轉(zhuǎn)為模型會有大量的細節(jié)層次, 對于模型來說這些細節(jié)太詳細, 屬于冗余信息;
信息缺失 : UML中的信息要比語言豐富, 因此逆向工程生成的模型是不完整的, 因為正向工程損失了一些編程語言不能表達的UML信息;


逆向工程策略 :?
-- 識別映射規(guī)則 : 識別從視線語言到所選擇的語言進行映射的規(guī)則;
-- 逆向工程工具 : 使用工具指向要進行逆向工程的代碼, 用工具生成新的模型或修改以前進行正向工程使已有的模型;
-- 查詢模型創(chuàng)建 : 使用工具, 通過查詢模型創(chuàng)建類圖;




三. 對象圖



(1) 對象圖引入



靜態(tài)和動態(tài)圖 :類圖描述的是系統(tǒng)的靜態(tài)結(jié)構(gòu)和關系,交互圖描述的是系統(tǒng)的動態(tài)特性.
類圖和交互圖缺陷 : 跟蹤系統(tǒng)的交互過程時, 經(jīng)常涉及到交互過程中某一瞬間交互對象的狀態(tài), 但是系統(tǒng)的類圖和交互圖都沒有對此進行描述.
對象圖引入 : 對象圖用來描述參與一個交互的各個對象的某一時刻的狀態(tài);


對象圖作用 : 在復雜系統(tǒng)中, 出錯時涉及的對象處于一個有眾多類的關系網(wǎng)中, 系統(tǒng)測試人員需要為出錯時刻系統(tǒng)各個對象的狀態(tài)建立對象圖, 這樣能方便分析錯誤;


(2) 對象圖概念和內(nèi)容



對象圖定義 : 對象圖表示在某一時刻一組對象以及它們之間的關系, 可以被看做是類圖在系統(tǒng)某一時刻之間的關系圖;
對象圖的表示 : 對象圖由節(jié)點和連接節(jié)點的連線組成, 節(jié)點可以是對象, 也可以是類, 連線表示對象間的關系, 類名下面帶下劃線;
對象圖內(nèi)容 : 對象圖除了對象節(jié)點 以及連線之外, 還可以包含標注 和約束; 如果有必要可以將 類 畫到對象圖中, 如果系統(tǒng)比較復雜還可以包含模型包 和 子系統(tǒng);?


對象圖側(cè)重點 : 對象圖可以對對 系統(tǒng)靜態(tài)設計 或 靜態(tài)進程視圖建模, 但對象圖更注重 現(xiàn)實 或 原型實例, 這種視圖主要支持系統(tǒng)的功能需求(即提供給用戶的服務);


(3) 對象圖建模



對象圖的兩個來源 : 對象圖主要用來描述類的實例在特定時刻的狀態(tài), 它可以是類的實例, 也可以是交互圖的靜態(tài)部分;
對象圖與組件圖和配置圖的共同點 : 組件圖和配置圖可以包含 部件 或 節(jié)點 的實例, 如果它們只包含實例, 不包含任何信息, 可以將組件圖和配置圖看做是特殊的對象圖;


對象圖建模過程 :?
-- 確定對象 : 參考類圖和交互圖, 確定參與交互的對象;
-- 確定關系 : 確定類之間的關系, 例如 依賴, 泛化, 實現(xiàn), 關聯(lián);
-- 交互建模 : 針對交互在某個特定時刻各個對象的狀態(tài), 使用對象圖為這些對象建模;

-- 狀態(tài)關系 : 系統(tǒng)分析師根據(jù)建模的目標, 繪制對象的 關鍵狀態(tài) 和 關鍵對象 之間的連接關系;



四. 包圖


1. 包的概述


包圖的構(gòu)成和作用 : 包圖由包之間的關系構(gòu)成, 它是維護和控制系統(tǒng)總體結(jié)構(gòu)的重要建模工具;

模型分組控制 : 語義相近的 類, 接口, 組件, 節(jié)點和圖組織起來放在一個包里, 可以方便理解和處理整個模型;

可見性控制 : 一些元素在包外可見, 一些隱藏在包內(nèi), 嚴密控制對包內(nèi)元素的訪問, 可以使包高內(nèi)聚,低耦合;


2. 包的名字


簡單名(simple name) : 一個簡單的名稱;

路徑名(path name) : 包位于外圍包的名字作為前綴的包名;




3. 包的元素


包可以擁有的元素 :,接口,組件,節(jié)點,協(xié)作,用例, 還可以包含其它包;

包內(nèi)元素命名規(guī)則 : 類和包都的路徑名是上一級包名, 因此包為其擁有的模型元素構(gòu)成一個命名空間,一個模型包內(nèi)不能有名稱相同的元素;

包和內(nèi)部元素的關系 : 包擁有內(nèi)部的元素, 這是一個組合關系, 如果包被刪除, 其中的元素也隨之刪除;


4. 包的可見性


包不是孤立的 : 包在軟件模型中不是孤立存在的, 包里面的模型元素外部的類存在著某些關系;

內(nèi)聚耦合 : 為了使各個包能坐到高內(nèi)聚,低耦合, 對包內(nèi)的元素加以控制, 一些元素可以被外界訪問到, 一些不能被外界訪問;


包的可見性分類 :

-- 公有 (public) : 前綴符號 " + ", 該元素可以被任何引入該包的包中元素訪問, 引入包就是 包A 引入包B, 包A的元素可以訪問包B中的 +元素;

-- 受保護 (protected) : 前綴符號 " # ", 該元素可以被繼承該包的包中元素訪問, 包A 繼承 包B, 包A可以訪問包B中的 #元素;

-- 私有 (private) : 前綴符號 " - ", 該元素只能被同一個包中的元素訪問, 包A中的私有元素只能被包A中的元素訪問到;


舉例 : 包A 中有四個公有元素, 包B引入包A, 包B中的元素都能看到包A中的四個公有元素;


嵌套可見性 : 元素A 對于 包B 是可見的, 包B 中還嵌套 包C, 那么包C也能看到 元素A; 被嵌套的包C可以看到包含該包(C) 的包(A)所能看到的所有的事物; ?


5. 引入與輸出


引入 : 允許一個包中的元素單向訪問另一個包中的元素;?

引入關系建模 : 使用構(gòu)造性引入修飾依賴為引入關系建模; 通過把抽象包裝成有含義的組塊, 然后用引入關系控制對它們的訪問, 就能控制大量抽象的復雜性;

輸出 : 包的公共部分成為輸出;

包之間的引入表示方法 : 使用虛線箭頭表示引入,箭頭方向表示被引入的包, 即輸出元素的包;




引入分析 : 包1 引入 包2, 包2 引入 包3;?

輸出分析 :?

-- 包2輸出 : 包2 輸出 B1 元素, 因為 B2 元素是私有的; ?

-- 包3輸出 : 包3 輸出 C1 元素, 因為 C2 元素是受保護的;

可見分析 : 可見只能在引用的雙方進行,不包括隔代引用, 例如 包3 的C2 不能對于 包1 內(nèi)容可見;?

包1可見 : 包2 的 B1 對包1的內(nèi)容是可見的;

包2可見 : 包3 的 C1 對包2的內(nèi)容是可見的;


6. 包中的泛化關系


包中的兩種關系 : 依賴(引入) 和 泛化;

-- 引入(訪問依賴) : 在 包A 中引入 包B 的元素;

-- 泛化 : 說明包的家族;


泛化關系 : 包之間的泛化關系類似于類之間的泛化關系, 該關系也像類那樣遵循替代原則, 包可以替換一般的元素, 并可以增加新的元素;?


7. 標準元素


包的擴展機制 : UML的擴展機制同樣適用于包, 可以使用標記值增加包的新特性, 用來描述包的新種類, 這種標記值有五種 :虛包(facade),框架(framework),樁(stub),子系統(tǒng)(subsystem),系統(tǒng)(system);
-- 虛包 : 描述只引用其他包內(nèi)元素的包, 自己本身沒有元素;

-- 框架 : 描述由模式組成的包;

-- : 描述一個作為另一個包的公共內(nèi)容代理的包, 與虛包對應;

-- 子系統(tǒng) : 描述正在建模中整個系統(tǒng)的獨立部分的包;

-- 系統(tǒng) : 描述建模中整個系統(tǒng)的包;


8. 包圖建模


包的作用 : 將建模元素按語義分組, 使得復雜的系統(tǒng)模型能夠被構(gòu)造,表達,理解管理;

包和類的區(qū)別 : 類是對問題領域 或 解決方案的抽象, 包是將事物組織成模型的一種機制; 包可以沒有標志, 因為包沒有實例, 在系統(tǒng)中不可見, 類必須有標志,因為其有實例;


包圖建模策略 :?

-- 分組 : 分析系統(tǒng)模型元素, 將概念上或語義上相近的模型元素放入一個包;

-- 可視性 : 將包中的每個元素都標出可見性 (公共, 受保護, 私有);

-- 依賴 : 確定包之間的依賴關系, 特別是輸入依賴;

-- 泛化 : 確定包之間的泛化關系, 特別是多重性 與 重載;

-- 繪制 ,精化包圖;


包圖建模實例 :?

-- 系統(tǒng)包 : 包含讀者, 管理員, 借書相關業(yè)務的用例, 類等信息;

-- 界面包 : 包含操作界面, 窗體相關的用例, 類等信息;

-- 公共包 : 包含公共用例, 類等信息;

-- 數(shù)據(jù)包 : 包含數(shù)據(jù)庫相關的用例, 類信息;




五. 圖書管理系統(tǒng)靜態(tài)圖建模實戰(zhàn)


靜態(tài)圖建立 : 建立系統(tǒng)的靜態(tài)圖是對系統(tǒng)領域問題及其解決方案的分析和設計的過程, 靜態(tài)圖設計的主要內(nèi)容是建立類圖, 找出系統(tǒng)中類之間的關系;


1. 建立對象圖步驟


建立對象步驟 :?

-- 確定需求 : 研究分析問題領域, 確定系統(tǒng)需求;

-- 屬性操作 : 發(fā)現(xiàn)對象和對象類, 明確類的屬性和操作;

-- 靜態(tài)關系 : 發(fā)現(xiàn)類之間的靜態(tài)關系, 泛化, 關聯(lián), 實現(xiàn), 依賴關系;

-- 類與關系 : 設計類與關系;

-- 繪制類圖 : 繪制對象類圖, 并編制應用說明;


2. 使用Rational Rose繪制包圖和類圖


(1) 包圖


先建包 : Rational Rose中可以創(chuàng)建多個類, 類的屬性和方法都能在類圖中體現(xiàn), 為了方面管理, 通常先創(chuàng)建包, 在創(chuàng)建對應的類;

圖書管理系統(tǒng)中的四個包 :?系統(tǒng)包 (System Service), 界面包 (System UI), 工具包(System Common Utilities), 數(shù)據(jù)庫包(System Database);


(2) 類圖(系統(tǒng)包)


類圖解析 : Item 書目類, Tittle 書標題, Reservation 預借類, Borrower 借閱者類, Loan 借閱記錄類;?




.

作者?:萬境絕塵?

轉(zhuǎn)載請注明出處?:?http://blog.csdn.net/shulianghan/article/details/18964835

.



總結(jié)

以上是生活随笔為你收集整理的【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。