uml 圖學習記錄
UML類圖與類的關係詳解 | |
2011-04-21 來源:網路 |
|
|
參考二:
深入淺出UML類圖 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
作者:劉偉 ,釋出於:2012-11-23,來源:CSDN |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
參考三:
在UML的
類圖中,常見的有以下幾種關係: 泛化(Generalization), 實現(Realization), 關聯(Association), 聚合(Aggregation), 組合(Composition), 依賴(Dependency)
1. 泛化(Generalization)
【泛化關係】:是一種繼承關係, 表示一般與特殊的關係, 它指定了子類如何特化父類的所有特徵和行為. 例如:老虎是動物的一種, 即有老虎的特性也有動物的共性.
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類
2. 實現(Realization)
【實現關係】:是一種類與介面的關係, 表示類是介面所有特徵和行為的實現.
【箭頭指向】:帶三角箭頭的虛線,箭頭指向介面
3. 關聯(Association)
【關聯關係】:是一種擁有的關係, 它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子
關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【程式碼體現】:成員變數
【箭頭及指向】:帶普通箭頭(或實心三角形箭頭)的實心線,指向被擁有者
上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。
上圖為自身關聯:
4. 聚合(Aggregation)
【聚合關係】:是整體與部分的關係, 且部分可以離開整體而單獨存在. 如車和輪胎是整體和部分的關係, 輪胎離開車仍然可以存在.
聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。
【程式碼體現】:成員變數
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
5. 組合(Composition)
【組合關係】:是整體與部分的關係, 但部分不能離開整體而單獨存在. 如公司和部門是整體和部分的關係, 沒有公司就不存在部門.
組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的物件負責代表部分的物件的生命週期
【程式碼體現】:成員變數
【箭頭及指向】:帶實心菱形的實線,菱形指向整體
6. 依賴(Dependency)
【依賴關係】:是一種使用的關係, 即一個類的實現需要另一個類的協助, 所以要儘量不使用雙向的互相依賴.
【程式碼表現】:區域性變數、方法的引數或者對靜態方法的呼叫
【箭頭及指向】:帶箭頭的虛線,指向被使用者
各種關係的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
下面這張UML圖,比較形象地展示了各種類圖關係:
====================================================
序列圖主要用於展示物件之間互動的順序。
序列圖將互動關係表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立物件的類元角色。類元角色用生命線表示。當物件存在時,角色用一條虛線表示,當物件的過程處於啟用狀態時,生命線是一個雙道線。
訊息用從一個物件的生命線到另一個物件生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
序列圖中涉及的元素:
1. 生命線:
生命線名稱可帶下劃線。當使用下劃線時,意味著序列圖中的生命線代表一個類的特定實體。
2. 同步訊息
傳送人在它繼續之前,將等待同步訊息響應
3. 非同步訊息
在傳送方繼續之前,無需等待響應的訊息
4. 註釋
5. 約束
約束的符號很簡單;格式是: [Boolean Test]
6. 組合片段
組合片段 用來解決互動執行的條件及方式。 它允許在序列圖中直接表示邏輯元件,用於通過指定條件或子程序的應用區域,為任何生命線的任何部分定義特殊條件和子程序。
常用的組合片段有:
a. 抉擇(Alt)
抉擇用來指明在兩個或更多的訊息序列之間的互斥的選擇,相當於經典的if..else..。
抉擇在任何場合下只發生一個序列。 可以在每個片段中設定一個臨界來指示該片段可以執行的條件。 else 的臨界指示其他任何臨界都不為 True 時應執行的片段。 如果所有臨界都為 False 並且沒有 else,則不執行任何片段。
b. 選項(Opt)
包含一個可能發生或不發生的序列
c. 迴圈(Loop)
片段重複一定次數。 可以在臨界中指示片段重複的條件。
d. 並行(Par)
下表列出了常用的組合片段:
片段型別 |
名稱 |
說明 |
Opt |
選項 |
包含一個可能發生或可能不發生的序列。 可以在臨界中指定序列發生的條件。 |
Alt |
抉擇 |
包含一個片段列表,這些片段包含備選訊息序列。 在任何場合下只發生一個序列。 可以在每個片段中設定一個臨界來指示該片段可以執行的條件。 else 的臨界指示其他任何臨界都不為 True 時應執行的片段。 如果所有臨界都為 False 並且沒有 else,則不執行任何片段。 |
Loop |
迴圈 |
片段重複一定次數。 可以在臨界中指示片段重複的條件。 Loop 組合片段具有“Min”和“Max”屬性,它們指示片段可以重複的最小和最大次數。 預設值是無限制。 |
Break |
中斷 |
如果執行此片段,則放棄序列的其餘部分。 可以使用臨界來指示發生中斷的條件。 |
Par |
並行 |
並行處理。 片段中的事件可以交錯。 |
Critical |
關鍵 |
用在 Par 或 Seq 片段中。 指示此片段中的訊息不得與其他訊息交錯。 |
Seq |
弱順序 |
有兩個或更多運算元片段。 涉及同一生命線的訊息必須以片段的順序發生。 如果訊息涉及的生命線不同,來自不同片段的訊息可能會並行交錯。 |
Strict |
強順序 |
有兩個或更多運算元片段。 這些片段必須按給定順序發生。 |
有關如何解釋序列的片段
預設情況下,序列圖表明可能發生的一系列訊息。 在執行的系統中,可能會出現您未選擇顯示在關係圖上的其他訊息。
以下片段型別可用於更改此釋義:
片段型別 |
名稱 |
說明 |
Consider |
考慮 |
指定此片段描述的訊息列表。 其他訊息可發生在執行的系統中,但對此描述來說意義不大。 在“Messages”屬性中鍵入該列表。 |
Ignore |
忽略 |
此片段未描述的訊息列表。 這些訊息可發生在執行的系統中,但對此描述來說意義不大。 在“Messages”屬性中鍵入該列表。 |
Assert |
斷言 |
運算元片段指定唯一有效的序列。 通常用在 Consider 或 Ignore 片段中。 |
Neg |
否定 |
此片段中顯示的序列不得發生。 通常用在 Consider 或 Ignore 片段中。 |
====================================================
用例圖主要用來描述 使用者、需求、系統功能單元 之間的關係。它展示了一個外部使用者能夠觀察到的系統功能模型圖。
【用途】:幫助開發團隊以一種視覺化的方式理解系統的功能需求。
用例圖所包含的元素如下:
1. 參與者(Actor)
表示與您的應用程式或系統進行互動的使用者、組織或外部系統。用一個小人表示。
2. 用例(Use Case)
用例就是外部可見的系統功能,對系統提供的服務進行描述。 用橢圓表示
3. 子系統(Subsystem)
用來展示系統的一部分功能,這部分功能聯絡緊密。
4. 關係
用例圖中涉及的關係有:關聯、泛化、包含、擴充套件;
如下表所示:
關係型別 |
說明 |
表示符號 |
關聯 |
參與者與用例間的關係 |
|
泛化 |
參與者之間或用例之間的關係 |
|
包含 |
用例之間的關係 |
|
擴充套件 |
用例之間的關係 |
a. 關聯(Association)
表示參與者與用例之間的通訊,任何一方都可傳送或接受訊息。
【箭頭指向】:指向訊息接收方
b. 泛化(Inheritance)
就是通常理解的繼承關係,子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構、行為和關係。子用例可以使用父用例的一段行為,也可以過載它。父用例通常是抽象的。
【箭頭指向】:指向父用例
c. 包含(Include)
包含關係用來把一個較複雜用例所表示的功能分解成較小的步驟;
【箭頭指向】:指向分解出來的功能用例
d. 擴充套件(Extend)
擴充套件關係是指 用例功能的延伸,相當於為基礎用例提供一個附加功能。
【箭頭指向】:指向基礎用例
e. 依賴(Dependency)
以上4中關係,是UML定義的標準關係。 但VS2010的用例模型圖中,添加了依賴關係,用帶箭頭的虛線表示
表示源用例依賴於目標用例;
【箭頭指向】:指向被依賴項
5. 專案(Artifact)
用例圖雖然是用來幫助人們形象地理解功能需求,但卻沒多少人能夠通看懂它。很多時候跟使用者交流甚至用Excel都比用例圖強,VS2010中引入了“專案”這樣一個元素,以便讓開發人員能夠在用例圖中連結一個普通文件。
用依賴關係把某個用例依賴到專案上
然後把專案-》屬性 的Hyperlink 設定到你的文件上
這樣當你在用例圖上 雙擊專案時,就會開啟相關聯的文件。
6. 註釋(Comment)
包含(include)、擴充套件(extend)、泛化(Inheritance) 的區別:
條件性:泛化中的子用例和include中的被包含的用例會無條件發生,而extend中的延伸用例的發生是有條件的;
直接性:泛化中的子用例和extend中的延伸用例為參與者提供直接服務,而include中被包含的用例為參與者提供間接服務。
對extend而言,延伸用例並不包含基礎用例的內容,基礎用例也不包含延伸用例的內容。
對Inheritance而言,子用例包含基礎用例的所有內容及其和其他用例或參與者之間的關係;
一個用例圖示例:
牢騷:
感覺用例圖還不成熟,並不能很好地表達系統的需求, 沒有UML背景的使用者幾乎不知道畫的些什麼。
其次,包含關係、擴充套件關係 的箭頭符號竟然是同樣的箭頭,僅靠上方寫個文字來加以區別,翻譯成其他語言的話,幾乎就不知道代表什麼意思。 擴充套件關係的箭頭朝向也很難理解,為何要指向基用例,而不指向擴充套件用例
VS2010新增的“專案”元素,是個很好的創新,能夠在用例圖中關聯word,excel這些文件。但為什麼不把這些功能直接整合到用例裡面,雙擊用例就彈出一份文件豈不更容易理解,非要畫蛇添足地加一個元件,僅僅為了提供個連結功能。
用例描述表:
鑑於用列圖並不能清楚地表達功能需求,開發中大家通常用描述表來補充某些不易表達的用例,下圖的表給大家提供一個參考:
相關推薦
uml 圖學習記錄
UML類圖與類的關係詳解 2011-04-21 來源:網路 在畫類圖的時候,理清類和類之間的關係是重點。類的關係有泛化(Generalization)、實現(Realization)、依賴(Dependency)和關聯(Association)。其中關聯又分為一般關聯關
UML類圖學習
耗時 什麽 col 重要 employee 需求 好的 程序 相互 UML類圖學習 類 類(Class)封裝了數據和行為,是面向對象的重要組成部分,它是具有相同屬性、操作、關系的對象集合的總稱。在系統中,每個類都具有一定的職責,職責指的是類要完成什麽樣的功能
LaTex學習記錄——繪制簡單坐標圖
LaTex TeXstudio 操作系統:Ubuntu 14.04LTS;工具:TeXstudio;此外,我還安裝了完全的texlive(sudo apt-get install texlive-full,比較大,大家可以酌情安裝部分)。??這裏介紹一下簡單坐標圖的實現代碼,首先要註意在開頭加入要使用
PS學習記錄6--html5 canvas+js實現ps鋼筆摳圖
html5 canvas+js實現ps鋼筆摳圖 1. 專案要求需要用js實現photoshop中鋼筆摳圖功能,就用了近三四天的時間去解決它,最終還是基本上把他實現了。 做的過程中走了不少彎路,最終一同事找到了canvans以比較核心的屬性globalCo
PS學習記錄1.頁面製作部分之PS切圖
網頁設計在技術層面上,第一步是美工做出網頁效果圖,第二步就是網頁前端進行網頁切圖。網頁切圖工具常用的有fireworks、PS,這裡使用PS進行網頁切圖。 我們通過設計稿,得到我們想要的產出物(如.png,.jpg檔案),
樹與圖的遍歷 學習記錄
樹與圖的深度優先遍歷,樹的DFS序、深度和重心 DFS //深度優先遍歷 dfs void dfs(int x) { v[x]=1;//記錄點x被訪問過,v是visit的縮寫 for (int i=head[x];i;i=Next[i]) { int y=ver[i
UML類圖學習筆記
最近在學習設計模式的相關知識,所以會接觸到很多UML類圖。以前學習《軟體工程》這個課程的時候學過UML類圖,但是沒有引起重視,所以現在重新學習UML類圖的相關知識。 我們首先以一個圖示樣例來進行講解。
UML建模之包圖、元件圖和部署圖學習筆記
UML建模中包圖、元件圖和部署圖學習筆記 對於較大的專案進行UML建模,由於有很多的類和用例,僅僅利用類圖和用例圖的話,常常會使結構變得更為複雜。此時如果可以以功能模組劃將類圖和用例圖進行封裝,可以很好地簡化結構圖,讓開發人員或者使用人員更容易看懂整個結構或流程。此時包圖
設計模式學習--UML圖的繪製以及思維導圖的繪製
在看設計模式的過程中,給我印象最深的是每一個模式UML圖,它能形象地將每個類的耦合關係表現出來,堪稱一個神器啊。於是,我便上網找有沒有什麼軟體能繪製UML圖,找了很久,最終在一個論壇上有人推薦說可
UML——簡單類圖學習
複習了一下類圖的畫法~ 就一張圖看看就明白啦~ 廢話不多說,哈哈~ Class類: 屬性和方法之前可附加的可見性修飾符: 加號(+)表示public;減號(-)表示private;#號表示pr
Linux+shell學習記錄和思維導圖
由於shell和Linux學習分不開,所以乾脆一起結合起來學習,順便用思維導圖工具做一個記錄。 學習的關鍵在於對著教程敲程式碼。 學習工具 思維導圖工具Xmind:以前一直用百度腦圖做一些簡單
UML建模之用例圖學習筆記
什麼是用例圖 用例圖是指由參與者(Actor)、用例(Use Case)以及它們之間的關係構成的用於描述系統功能的靜態檢視。 用例圖是用例(Use Case)分析手段或工具。用例分析是捕獲應用需求的有效手段,也是 UML 中進行功能需求分析的主要方法。它用參
UML圖繪製,理論學習
1.理論: 學習UML圖,目前我學的有三種,用例圖,類圖,時序圖。 用例圖: 主要用來描述“使用者、需求、系統功能單元”之間的關係. 主要是業務建模和需求建模。此圖,作為coder,個人認為目前瞭解就
Android應用基礎學習記錄
應用 ctp 例如 case 推薦 都沒有 變量命名規則 bytearray href 01_前言 前言,了解了Android的情況。這裏也介紹一下本文。本文是記錄學習Android應用程序開發過程,視頻中使用的Android2.2版本號,我以4.2版本號為基礎,找
[QT][SQL]sq]學習記錄1_模糊搜索
學習網 cnblogs src from log 搜索數據 城市 like .cn sql學習網站: http://www.w3school.com.cn/sql/index.asp 用於模糊搜索數據庫的數據 語句:http://www.w3school.com.cn/
學習記錄: 安裝配置自動化工具ansible
ansible學習記錄: 安裝配置ansible更新日期: 2016-11-30系統環境 :centos6.5本機ip :192.168.233.123被管理機ip :192.168.233.124—————————————————————————————————————py版本
IPProxyPool學習記錄
lib pip3 figure python3 amp library 學習 多版本 not find python3下 import sqlite3 報錯: NO module named ‘_sqlite3‘ 是因為多版本ptyhon問題,需要重新編譯python 步驟
$http學習記錄
google div 好的 pca .site log 文檔 方法 教程 火狐的網址可以直接寫文件的地址 如:D:\studyprogram\wamp\www\http.html 其他的要改成服務器下的地址 如 http://localhost\http.html 廢棄聲
tolua.setpeer學習記錄
lua 記錄 如果 進棧 get string use 輕量 peer static int tolua_bnd_setpeer(lua_State *L) { // stack: userdata, table if (!lua_isuserdata(
android adb shell and monkey 學習記錄
型號 orm -a reboot 觸摸事件 serial roc ear cpu Monkey環境: android SDK and JDK SDK目錄下的platform-tools和tools目錄要配置環境變量 查看版本: ADB 的安裝這裏就