


類圖是可視化地表現類的屬性和方法,以及類與類之間的關系。
1、類
a、類
普通實體類,它有對應的屬性和方法:
雙擊類名,會彈出一些控制按鈕:
右邊區域,各個圖標的含義依次是:
增加類的屬性、增加類的操作(方法)、添加模板類類型參數、添加reception、添加子類、添加父類、添加已有的接口、添加需要的接口、
添加關聯、添加聚合、添加組合、添加端口、添加部件。
(1) 添加屬性
(2) 修改屬性的屬性
屬性的屬性設置:
stereotype: 屬性描述,類圖上的表現是會在屬性名的前面加上<<>>,中間插入屬性描述;
isstatic:表明該屬性是否是靜態屬性,如果勾選了,屬性下面會出現下划線;
isleaf:表明該屬性是否是葉子屬性,通俗理解是否是final屬性,勾選之后,類圖不會發生變化;
type:表明屬性的類型,int、long等等,如果填寫,會在屬性名后面出現“:類型名”;
multiplicity:這個代表該類實例與其他類實例連接時所需要的數量范圍,是一個可編輯的下拉框,可以是具體數字,也可以是一個區間,比如0..1代表着是0到1個,* 代表着無數個。
如果填寫,會在屬性后面增加“[]”,中間插入填寫的值:
isReadOnly:代表該字段是否是只讀字段,一般表示屬性在對象創建的時候賦值,后續不再改變的變量,填寫之后,會在圖上增加{ReadOnly};
isOrdered:說明屬性是可排序的,和multiplicity聯用,代表着與其他實例連接時,該屬性已排序,在圖中表現為{ordered};
isUnique:說明屬性是互斥性,和multiplicity聯用,代表着與其他實例連接時,屬性對象不會重復,在途中表現為{unique};
defaultValue:默認值
isDerived:代表該屬性值是否是由自己運算出來,或者是由外界來設置,一般在編碼中表現為一個setXXX方法,暴露給外面,讓外面的對象設置該屬性;
在類圖中的表現為“/”,放在屬性名前面;
aggregation:代表屬性和類的關系,有三個選擇:
所代表的意思:
shared 代表着這個屬性對於類來說可有可無,屬性值為NULL,對象也屬於正常對象;
composite 代表着這個屬性值一定得存在,就像 飛機(類)和機翼(屬性),飛機離不開機翼,如果沒有機翼,飛機就不能飛了,就不叫飛機了,頂多在地上跑,一輛大號的汽車而已。
這個屬性設置,在途中沒有表現。
isID:代表這個屬性是否是這個類對象的唯一標識,在圖中的表現為{id}:
(3) 添加方法
(4) 修改方法的屬性
方法的屬性也很豐富,只描述與屬性不一樣的屬性設置:
raisedExceptions:表示方法拋出的異常,需要新創建一個異常類:
然后點擊搜索按鈕,會彈出一個對話框:
點擊 add,選擇剛才創建的異常類:
如果有多個,還可以調整順序,調整完之后,點擊close,此時在屬性設置那里會出現:
添加之后,類圖不會發生變化。
concurrency:代表這個屬性的並發性,有是三個選項:
代表的意思:
修改之后,類圖不會發生變化。
isQuery:代表該方法是否是查詢方法,如果是的話,在類圖上的表現是添加{query}:
isAbstract:標識該方法是否是抽象方法,如果選擇是,在類圖中的表現是所有的字都是斜的:
(5) 設置方法的參數
選中方法,右鍵,選擇add->parameter;
在model explorer里會看到多了一個Parameter1:
選中它,修改它的兩個屬性:type(返回值的類型)、direction(設置返回值)。
direction設置成 return,type設置成需要的類型:
在類圖上的表現為:在參數括號之后出現 “:返回類型”。
(6) 設置方法的參數
與設置返回值類似,但direction,調整為 in,並且name也要設置:
(7) 修改屬性和方法的訪問權限
(8) 添加類描述
用一句話描述這個類是什么類,用來干嘛的,目的是讓讀者能清晰准確地了解這個類,在類圖的屬性里添加。
添加這個之后,類名上面會出現<<>>包圍的類描述。
(9) 修改類的訪問權限
類的訪問權限同樣也具有四種,但是選擇了之后,在圖形上沒有任何顯示效果,但在后面做轉化的時候(轉化成java代碼)會體現出來。
b、抽象類
抽象類是在工具欄里是沒有的,要通過設置普通類的抽象屬性來設置。
選中之后,抽象類的類名會變成斜的。
c、final 類
final類代表着類無法被繼承,可以通過勾選類屬性中的 isFinalSpecialization和isLeaf來表明,前者是為final類設置的,后者的意思是 是否是葉子類,也就是final類,意義是一樣的,不過推薦使用前者,后者表意沒有前者好。
設置isFinalSpecialization之后,類圖上是沒有變化的:
設置了isleaf之后,類圖會發生變化
d、活動類
類分為活動類和被動類,活動類表示一個類能主動啟動一個流程,而被動類是無法主動啟動,只能被調用。
可以在類圖屬性里設置;
設置之后,會發現類圖左右邊線變成了兩條。
e、接口類
可以使用Interface圖形。
它也能像類一樣,添加方法,添加的操作與類一致。
2、類之間的關系
a、內部類
一個類是另一個類的內部類。
新建兩個類;
將”機翼”類拖動到”飛機”里去;
在model explorer 里,將”機翼”拖動到”飛機里去”。
b、繼承關系
一個類繼承於另一個類,兩個類是父子關系;
在圖中的表現是 兩個類用箭頭連起來;
箭頭是空心的三角形,由子類指向父類。
c、實現
一個類實現一個接口;
在途中的表現是 兩個類用箭頭連接;
箭頭是 實線,但在工具欄里,是一個虛線空心箭頭,注意區分。
d、組合
A類要想完成工作,必須要B、C類參與,B和C在A類中表現形式是 定義 B類和C類類型的成員變量,A類與B、C類是強關聯;
在途中的表現形式是A的類圖分別與B、C類的類圖用箭頭連接起來;
箭頭樣式:帶實心菱形頭的實線箭頭。
組合的數量關系是指在組合的時候,組合兩方進行一次組合各需要的數量。
選擇箭頭,設置屬性:
分別設置 end1.multiplicity 和 end2.multiplicity ,在途中的表現形式:
e、聚合
聚合是一個特殊的關聯關系,它體現的是一個多個類可以聚合在一起,組成一個整體,比如說航母、驅逐艦、護衛艦組成一個航母戰斗群,其中航母是核心,航母與驅逐艦、護衛艦之間的關系就是聚合關系;
聚合關系由箭頭連起來;
箭頭樣式:帶空心菱形頭的實線箭頭。
f、依賴
依賴是非常弱的一種關聯,A類要執行某種動作,需要B類來觸發,那么A類依賴於B類,比如說電腦要工作,依賴於人的操作,那么電腦依賴於人,但是電腦和人都是獨立存在的個體;
依賴同樣是用箭頭連起來;
箭頭樣式:虛線箭頭,被依賴方指向依賴方。
總結:組合、聚合、依賴,這三種關聯關系較為相似,可以按下面的特點區分開來:
A = B + C : A與B的關系就是組合,A包含B,強關聯;
A + B = C : A 和 B 的關系是聚合,A和B可以一起組成C,中等關聯程度;
A * B = C ,A * D = E : A 和 B、A和D的關系是依賴關系,A要完成C,需要B的協助,A要完成E,需要D,弱關系,與聚合關系的不同在於,聚合中 A和B是C的一部分,C包含A和B;而依賴中 C不包含B、A,是A經過B的處理之后得到的。
學習對象:https://www.jianshu.com/p/87767f67f379
https://www.cnblogs.com/zhigu/p/10681249.html