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