再次說UML 中的關係
用了半個的時間第一遍學習了第一遍大話設計模式,在大話設計模式中每個模式的解釋都用了類圖,每個類和每個
類都用不同的關係連線起來.所以我根據自己的理解有總結了一下他們的關係.
"直線"關係----關聯關係
A,B兩個類,它們之間有關係,但又不能確定是怎麼的關心地,我們可以這樣畫:
用比較通俗的話說是"直線"關係,使用UML 專業的術語說是"關聯"關係.
我們在做軟體需求分析時,如果覺得兩個業務感念之間有聯絡,但是暫時不能確定具體是怎麼的,那麼就先畫一條線
將兩者連起來再說.隨著自己對業務的瞭解,這條線條會進一步具體化,你就可以為這兩條線新增更多的元素.
(1)一對一的關係
這個圖A.B兩個類有一條直線相連,但在直線兩端各有一個數字1,表示一個A對應一個B,
(2)一對多的關係
這個表示一個A對應多個B,*號表示0到多個.
"包含"關係
一個部分由多個員工,用類圖可以這樣表示:
用uml的標準術語來說,第一種空心菱形表示的是聚合關係,它的關係就如計算機主機和CPU的關係.第二種實心菱
形表示的是組合關係,它的關係就如孕婦和胚胎的關係.
這裡有兩種表示方法,一種是空心菱形,一種是實心菱形.兩種菱形表示包含的強烈程度不同,空心菱形是"弱"包含,實
心菱形則是"強"包含.
米老師常常說的"記是永遠記不住的".如果有技巧的記憶,會讓你"忘也不掉"的.我們來看看這個記憶技巧:空心菱形
是空心的,顯得虛弱一點,這就是"弱"包含;實心菱形是實心的,顯得更加的強壯,這就是"強"關係.
"繼承"關係
在提高班提倡的是導師制,在提高班內部的學生做師傅,分享知識和學習經驗.學生可以做徒弟,也可以做師傅,把自己
的經驗傳給徒弟,下面是徒弟和老師的類圖:
現在我們來思考一個問題:徒弟和師傅有些什麼共性呢?
徒弟和師傅不都是學生嗎,凡是學生都有這樣的屬性:
學生,師傅,徒弟可以表示以下的關係:
師傅和徒弟都"繼承"了員工,它們具備學生的屬性,同時也有自己特有的屬性.
我們還可以這樣說:師傅,徒弟都是員工的一種.
"繼承"關係畫法如下:
這表示A繼承B,A具有B的特點,同時也具有自己特有的特點.
在UML的標準術語中這種"繼承"關係被稱為"泛化"關係(Generalization).
依賴關係
若果一個酒鬼嗜酒如命,沒有酒的話就不能生活,用類圖就可以這樣來表示:
這個虛箭頭就表示依賴關係(Dependency),
如果說A依賴於B,用類圖就可以這樣來表示:
所謂的依賴關係,依賴的程度是相當而言的,不一定是A沒有B就不能"生存"了.
在具體的業務邏輯中,對於某個事情,A需要B來協助才能完成,這樣也是一種依賴關係.
擴充套件關係:
在機房收費系統中,當涉及到錢的地方,比如查詢充值情況,日結算,周結算的地方都涉及到了列印,列印預覽的功能,
我們用用例圖可以這樣表示:
從圖中我們可以看出擴充套件關係式用一條帶箭頭的虛線加上<<extends>>來表示的.
如果A擴充套件出B,用用例圖我們可以這樣表示:
擴充套件關係表示的是"可選"的,而不是"必選",這意味著即使沒有擴充套件用例,基本用例也是完整的,如果哦沒喲基本用例,
擴充套件用例是不能單獨存在的;如果有多個擴充套件用例,同一時間用例例項也只會使用其中一個.
使用擴充套件關係的情況:
1.用例的某一個部分是可選的系統行為.
2.只在特定條件下才執行分支流,如觸發警報器
3.可能有一組行為段,其中的一個或者多個可以再基本用例擴充套件點處插入.所插入的行為段將取決於執行基本用例時與
主角進行的互動.
包含關係(include)
如果我們想要使用機房收費系統,我們必選先登入機房收費系統,才能進行各自的操作,才能對資料庫進行增刪改查.
用用例圖我麼可以這樣表示:
包含關係式用一條帶箭頭的虛線加<<include>來表示的.
如果A包含B,用例圖可以這樣表示:
與擴充套件用例不同的是:包含用例表示的是"必選"而不是"可選",這意味著如果沒有包含用例,基本用例是不完整,同時
沒有基本用例,包含用例是不能單獨存在的.
在用例圖中使用包含關係的理由:
1.從基本用例中分解出這樣的行為:它對於瞭解基本用例的主要目的並不是必需的,只有它的結果才比較重要.
2.分解出兩個或更多個用例所共有的行為.
實現關係(Realize)
手機是現在生活中不可缺少的一部分.使用手機通話,就必須要交話費,交話費的實現途徑可能有營業廳交費,銀行交
費, 預存話費等.用類圖我們可以表示為:
實現關係是由一條帶空心箭頭的虛線表示的.
如果A實現B ,用類圖可以這樣表示:
在前面我曾說過<<uml ---關係>>.但是說的比較簡單,那是剛學習的時候,對關係還是處於很模糊的狀態寫的.
相關文章
- UML類圖--類之間的關係
- 設計模式-UML關係基礎設計模式
- UML類圖介紹&類的六大關係
- UML 之 各種檢視簡介 & UML類圖幾種關係的總結
- 說說你對UML的理解
- 五分鐘看懂UML類圖與類的關係詳解
- 設計模式存在哪些關聯關係,六種關係傻傻分不清--- UML圖示詳解設計模式
- 3分鐘短文:說說Laravel模型中還算常用的2個“關係”Laravel模型
- IntelliJ IDEA 中uml外掛檢視某類的所有繼承或實現關係 + outline功能IntelliJIdea繼承
- 堆疊和記憶體的關係 細說記憶體
- 3分鐘短文:說說Laravel模型關聯關係最單純的“一對一”Laravel模型
- 從PowerDesigner概念設計模型(CDM)中的3種實體關係說起模型
- 《Activity顯示介面歷險記》—說說View的那些理不清的關係View
- c++中的繼承關係C++繼承
- iOS 中 UIView 和 CALayer 的關係iOSUIView
- js中__proto__和prototype的關係JS
- NIO中SelectionKey和Channel、Selector的關係
- apache中埠與目錄的關係Apache
- 理解JavaScript中BOM和DOM的關係JavaScript
- 說說工業元宇宙、數字孿生的技術及應用關係元宇宙
- 表的關聯關係
- Java中各程式碼層級的關係Java
- Laravel 中的多對多關係詳解Laravel
- hibernate中多對多關係的維護
- 雙機熱備與資料備份的關係說明一二
- iOS開發技巧·傻瓜式從工程檔案匯出類關係圖(UML) -- OmniGraffle方案iOS
- 在Java中,以下有關類的關聯關係描述錯誤的是()Java
- 關於UML已死的謠言都是假的
- WPF中Grid容器中VerticalAlignment和HorizonAlignment和Margin的關係。
- 解讀數倉中的資料物件及相關關係物件
- http中session和cookie的區別和關係HTTPSessionCookie
- SpringFlux中Request與HandlerMapping關係的形成過程SpringUXAPP
- android studio中如何檢視類的關係等Android
- Java中類與物件的關係與區別Java物件
- 說說iOS中的常用的關鍵字static ,class(僅限Swift關鍵字)iOSSwift
- 【集合論】二元關係 ( 二元關係記法 | A 到 B 的二元關係 | 二元關係個數 | 二元關係示例 )
- 【UML】UML幾種圖的繪製
- UML設計:類圖說明及一步一步製作UML類圖
- Hibernate 的關聯關係對映