一、UML類圖基本介紹
1,UML介紹
- UML -- Unified modeling language(統一建模語言),是一種用於軟體系統分析和設計的語言工具,它使用者幫助軟體開發人員進行思考和記錄思路的結果
- UML本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號使用者描述軟體模型中的各個元素和他們之間的關係,比如類、介面、實現、泛華、依賴、組合、聚合等。
2,UML圖
畫UML圖與寫文章差不多,都是把自己的思想描述給別人看,關鍵在於思路和條理,UML圖分類:
- 用例圖(use case)
- 靜態結構圖:類圖、物件圖、包圖、元件圖、部署圖
- 動態行為圖:互動圖(時序圖與協作圖)、狀態圖、活動圖
說明:類圖是描述類與類之間的關係的,是UML圖中最核心的。
3,UML類圖
- 用於描述系統中的類(物件)本身的組成和類(物件)之間的各種靜態關係。
- 類之間的關係:依賴、泛化(繼承)、實現、關聯、聚合與組合。
二、類圖——依賴(Dependence)
1,基本介紹
- 依賴關係:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴。
- 程式碼表現:區域性變數、方法的引數護著對靜態方法的呼叫
- 識別符號:帶箭頭的虛線,指向被使用者
2,示例圖
程式碼示例
//另外4個類與當前類都是依賴關係 public class PersonService { private PersonDao personDao; public void save(Person person) { } public IDCard getIDCard(Integer personid) { return new IDCard(); } public void modify() { Department department = new Department(); } } class PersonDao {} class Person {} class IDCard {} class Department {}
3,總結
- 類中用到了對方
- 類的成員屬性
- 方法的返回型別
- 方法接收的引數型別
- 方法中使用到
三、類圖——泛化(Generalization)
1,基本介紹
- 泛化關係:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行為。
- 識別符號:帶三角箭頭的實線,箭頭指向父類
2,示例圖
程式碼示例
public abstract class Father { public void eat() { } } public class Son extends Father {}
3,總結
- 泛化關係實際上就是繼承關係
- 如果A類繼承了B類,我們就說A和B存在泛化關係
四、類圖——實現(Implementation)
1,基本介紹
- 實現關係:指的是一個class類實現Interface介面(可以是多個)的功能;實現是類與介面之間最常見的關係;在java中此類關係通過關鍵字implements明確標識
- 識別符號:帶三角箭頭的虛線,箭頭指向介面
2,示例圖
程式碼示例
public interface PersonService { public void delete(int id); } public class PersonServiceImpl implements PersonService { @Override public void delete(int id) {} }
五、類圖——關聯(Association)
1,基本介紹
- 關聯關係:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生、丈夫與妻子關聯等。關聯可以是雙向關聯,也可以是單向關聯。雙向關聯可以有兩個箭頭或沒有箭頭,單向關聯有一個箭頭。它是依賴關係的特例。
- 0..1:表示可以有0個或者1個例項;0..*: 表示對例項的數目沒有限制;1 :表示只能有一個例項;1..* :表示至少有一個例項
- 識別符號:帶普通箭頭的實心線,指向被擁有者
2,示例圖
程式碼
public class Teacher { } public class Student { Teacher teacher; }
六、類圖——聚合(Aggregation)
1,基本介紹
- 聚合關係:是整體與部分的關係,且部分可以離開整體而單獨存在。聚合關係是關聯關係的特例,所以他具有關聯的導航性與多重性。
- 識別符號:使用帶空心菱形的實現表示
2,示例圖
程式碼示例,與關聯程式碼一致
public class Computer { Mouse mouse; public void setMouse(Mouse mouse) { this.mouse = mouse; } } public class Mouse { }
七、類圖——組合(Composition)
1,基本介紹
- 組合關係:是整體與部分的關係,但部分不能離開整體而單獨存在。組合關係也是關聯關係的一種,是比聚合關係還要強的關係。
- 識別符號:帶實心菱形的實線,菱形指向整體
2,示例圖
程式碼示例,與關聯程式碼一致
public class Computer { Mouse mouse = new Mouse(); } public class Mouse { }
八、總結
組合、聚合、關聯和依賴這幾種關係都是語義級別的,所以從程式碼層面並不能完全區分各種關係。關係所表現的強弱程度依次為:組合>聚合>關聯>依賴。