UML類圖
技術標籤:設計模式(Java)設計模式java
一.UML圖
1.基本介紹
UML(Unified modeling language UML),即統一建模語言,是一種用於軟體系統分析和設計的語言工具,它用於幫助軟體開發人員進行思考和記錄思路的結果
UML本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用於描述軟體模型中的各個元素和他們之間的關係,比如類、介面、實現、泛化(繼承)、依賴、組合、聚合等。
2.UML圖分類
畫UML圖與寫文章差不多,都是把自己的思想描述給別人看,關鍵在於思路和條理
①用例圖(use case)
②靜態結構圖
類圖、物件圖、包圖、元件圖、部署圖
類圖是描述類與類之間的關係的,是UML圖中最核心的
③動態行為圖
互動圖(時序圖與協作圖)、狀態圖、活動圖
3.UML類圖
用於描述系統中的類(物件)本身的組成和類(物件)之間的各種靜態關係。
類之間的關係:依賴、泛化(繼承)、實現、關聯、組合與聚合
二.UML類圖各種關係
1.依賴關係
只要是在類中用到了對方,那麼他們之間就存在依賴關係。如果沒有對方,連編譯都通過不了。
具體程式碼
PersonServiceBean與PersonDao、Person 、IDCard 、Department 都是依賴關係
class PersonServiceBean{
private PersonDao personDao;
public void save(Person person){
}
public IDCard getIDCard(Integer personId){
return null;
}
public void modify(){
Department department = new Department();
}
}
2.泛化關係
泛化關係實際上就是繼承關係,是依賴關係的特例
具體程式碼(很常見,不介紹了)
3.實現關係
實現關係實際上就是A類實現B類,也是依賴關係的特例
具體程式碼(很常見,不介紹了)
4.關聯關係(Association)
關聯關係實際上就是類與類之間的聯絡,也是依賴關係的特例
關聯關係具有導航性,即雙向關係或單向關係。同時還具有多重性。
單向1對1關係
雙向1對1關係
5.聚合關係(Aggregation)
表示的是整體和部分的關係,整體和部分可以分開,則表示聚合關係。
它是關聯關係的特例,也具有導航性與多重性
具體程式碼示例
電腦和滑鼠,顯示器其實是可以分開的,所以Computer類與Mouse 、Monitor其實是聚合關係
class Computer{
private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse){
this.mouse = mouse;
}
public void setMonitor(Monitor monitor){
this.monitor = monitor;
}
}
6.組合關係(Composition)
如果我們認為電腦與滑鼠和顯示器不可分離,則電腦與滑鼠和顯示器是組合關係。
組合關係也是整體與部分的關係,但是整體與部分不可以分開,也是關聯關係的特例。
具體程式碼示例
在這裡,Computer一建立,Mouse與Monitor也同時會例項化,他們“共生共滅”,不可分離,所以是組合關係
class Computer{
private Mouse mouse = new Mouse();
private Monitor monitor = new Monitor();
}
關於聚合與組合
Person和IDCard就是聚合,身份證丟了,人不一定死,還可以補辦一個。
但是Head和Person就是組合關係,人的頭沒了人一定就沒了。
public class Person{
private IDCard card;
private Head head = new Head();
}
特殊情況
但是如果在程式中Person實體類中定義了對IDCard進行級聯刪除(刪除一個物件也會把另外一個刪掉),即刪除Person時連同IDCard一起刪除,則IDCard和Person也是組合關係。即人沒了,身份證就可以一起消失,不存在於這個世界上了。從這個意義上講,人和身份證也是組合關係。總之只要體現“同生共死”這種就算是組合關係。