圖解Java設計模式之UML類圖

圖解Java設計模式之UML類圖

 

3.1 UML基本介紹

1)UML – Unified modeling language UML(統一建模語言),是一種用於軟件系統分析和設計的語言工具,它用於幫助軟件開發人員進行思考和記錄思路的結果
2)UML自己是一套符號的規定,就像數學符號和化學符號同樣,這些符號用於描述軟件模型中的各個元素和它們之間的關係,好比類、接口、實現、泛化、依賴、組合、聚合等。如右圖 :
在這裏插入圖片描述
在這裏插入圖片描述設計模式

UML圖

UML圖分類 :
1)用例圖(use case)
2)靜態結構圖:類圖、對象圖、包圖、組件圖、部署圖
3)動態行爲圖 :交互圖(時序圖與協做圖)、狀態圖、活動圖
說明:
1)類圖是描述類與類之間的關係的,是UML圖中最核心的ide

UML類圖

1)用於描述系統中的類(對象)自己的組成和類(對象)之間的各類靜態關係。
2)類之間的關係 :依賴、泛化(繼承)、實現、關聯、聚合與組合
3)類圖簡單舉例
在這裏插入圖片描述工具

  • 類圖 - 依賴關係(Dependence)
    只要是在類中用到了對方,那麼它們之間就存在依賴關係。若是沒有對方,連編譯都經過不了。
package com.example.demo.uml.dependence;

public class PersonServiceBean {
	
	private PersonDao personDap;
	
	public void save(Person person) {
		
	}
	
	public IDCard getIDCard(Integer personid) {
		return null;
	}
	
	public void modify() {
		Department department = new Department();
	}
	

}

class Department {

}

class IDCard {

}

class Person {

}

class PersonDao {

}

在這裏插入圖片描述
小結
1)類中用到了對方
2)若是是類的成員屬性
3)若是是方法的返回類型
4)是方法接收的參數類型
5)方法中使用到this

  • 類圖 - 泛化關係(generalization)
    泛化關係實際上就是繼承關係,它是依賴關係的特例
package com.example.demo.uml.generalization;

public abstract class DaoSupport {
	
	public void save(Object entity) {
		
	}
	
	public void delete(Object id) {
		
	}

}
package com.example.demo.uml.generalization;

public class PersonServiceBean extends DaoSupport{

}

在這裏插入圖片描述
小結 :
1)泛化關係實際上就是繼承關係
2)若是A類繼承了B類,咱們就說A和B存在泛化關係.net

  • 類圖 - 實現關係(Implementation)
    實現關係實際上就是A類實現B類,它是依賴關係的特例
package com.example.demo.uml.implementation;

public interface PersonService {

	void delete(Integer id);
}
package com.example.demo.uml.implementation;

public class PersonServiceBean implements PersonService {

	@Override
	public void delete(Integer id) {
	
	}

}

在這裏插入圖片描述

  • 類圖 - 關聯關係(Association)
    關聯關係實際上就是類與類之間的聯繫,它是依賴關係的特例
    關聯具備導航性 : 即雙向關係或單向關係
    關係具備多重性 : 如 「1」(表示有且僅有一個),「0…」(表示0個或者多個),「0,1」(表示0個或者一個),「n…m」(表示n到m個均可以),「m…」(表示至少m個)。

單向一對一關係
在這裏插入圖片描述
在這裏插入圖片描述
雙向一對一關係
在這裏插入圖片描述
在這裏插入圖片描述設計

  • 類圖 - 聚合關係(Aggregation)
    聚合關係(Aggregation)表示的是總體和部分的關係,總體與部分能夠分開。聚合關係是關聯關係的特例,因此他具備關聯的導航性與多重性。
    如 : 一臺電腦由鍵盤(keyboard)、顯示器(monitor)、鼠標等組成;組成電腦的各個配件是能夠從電腦上分離出來的,使用帶空心菱形的實線來表示 :
package com.example.demo.uml.aggregation;

public class Computer {
	
	// 鼠標能夠和computer分離的
	private Mouse mouse;
	
	// 顯示器能夠和computer分離的
	private Moniter moniter;

	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}

	public void setMoniter(Moniter moniter) {
		this.moniter = moniter;
	}
	
}

class Mouse {
	
}

class Moniter {
	
}

在這裏插入圖片描述
若是咱們的Mouse、Monitor和Computer是不可分離的,則升級爲組合關係3d

  • 類圖 - 組合關係(Composition)
    組合關係:也是總體與部分的關係,可是總體與部分不能夠分開。
    在這裏插入圖片描述
    在這裏插入圖片描述
    再看一個案例 :在程序中咱們定義實體 :Person與IDCard、Head,那麼Head和Person就是組合,IDCard和Person就是聚合。
package com.example.demo.uml.composition;
public class Person {
	private IDCard card;
	private Head head = new Head();
}
class IDCard {
}

class Head {
}

在這裏插入圖片描述
可是若是在程序中Person實體中定義了對IDCard進行級聯刪除,即刪除Person時連同IDCard一塊兒刪除,那麼IDCard和Person就是組合了。code

相關文章
相關標籤/搜索