設計模式---UML類圖

一. UML基本介紹

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

二. UML圖
畫UML圖與寫文章差不多,都是把自己的思想描述給別人看,關鍵在於思路和條理,UML圖分類:

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

三. UML類圖

  1. 用於描述系統中的類(對象)本身的組成和類(對象)之間的各種靜態關係。
  2. 類之間的關係:依賴、泛化(繼承)、實現、關聯、聚合與組合
  • 類圖—依賴關係(Dependence)
    只要是在類中用到了對方,那麼他們之間就存在依賴關係。如果沒有對方,連編繹都通過不了。
public class PersonServiceBean {
private PersonDao personDao;//類
public void save(Person person){}
public IDCard getIDCard(Integer personid){}
public void modify(){
Department department = new Department();
}
}
public class PersonDao{}
public class IDCard{}
public class Person{}
public class Department{}
小結
1) 類中用到了對方
2) 如果是類的成員屬性
3) 如果是方法的返回類型
4) 是方法接收的參數類型
5) 方法中使用到

在這裏插入圖片描述

  • 類圖—泛化關係(generalization)
    泛化關係實際上就是繼承關係,他是依賴關係的特例。
public abstract class DaoSupport{
    public void save(Object entity){ }
    public void delete(Object id){ }
}
public class PersonServiceBean extends Daosupport{ }
小結:
1) 泛化關係實際上就是繼承關係
2) 如果A類繼承了B類,我們就說A和B存在泛化關係

在這裏插入圖片描述

  • 類圖—實現關係(Implementation)
    實現關係實際上就是A類實現B接口,他是依賴關係的特例。
public interface PersonService {
    public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
    public void delete(Interger id){}
}

在這裏插入圖片描述

  • 類圖—關聯關係(Association)
    關聯關係實際上就是類與類之間的聯繫,他是依賴關係的特例。
    關聯具有導航性:即雙向關係或單向關係。
    關聯具有多重性:如“1”(表示有且僅有一個),“0…”(表示0個或者多個),“0,1”(表示0個或者一個),“n…m”(表示n到 m個都可以),“m…*”(表示至少m個)。
    在這裏插入圖片描述

  • 類圖—聚合關係(Aggregation)
    聚合關係(Aggregation)表示的是整體和部分的關係,整體與部分可以分開。聚合關係是關聯關係的特例,所以他具有關聯的導航性與多重性。
    如:一臺電腦由鍵盤(keyboard)、顯示器(monitor),鼠標等組成;組成電腦的各個配件是可以從電腦上分離出來的,使用帶空心菱形的實線來表示:
    在這裏插入圖片描述
    如果我們認爲Mouse,Monitor和Computer是不可分離的,則升級爲組合關係。

  • 類圖—組合關係(Composition)
    組合關係也是整體與部分的關係,但是整體與部分不可以分開。
    再看一個案例:在程序中我們定義實體:Person與IDCard、Head, 那麼 Head 和Person 就是組合,IDCard 和 Person 就是聚合。但是如果在程序中Person實體中定義了對IDCard進行級聯刪除,即刪除Person時連同IDCard一起刪除,那麼IDCard 和 Person 就是組合了。

public class Person{
	private IDCard card;
	private Head head = new Head();
}
public class IDCard{}
public class Head{}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章