1. 程式人生 > >詳解UML類圖(持更)

詳解UML類圖(持更)

類在類圖中的表示
在UML中,類圖屬於靜態圖中的一種,用於定義系統中的類,包括描述類的內部結構和類之間的關係。主要是用於描述系統的靜態結構的。現在我們在下面來看一下如何表示一個類。

public class Pen{
	private string color;
	private int model=1;
	
	public string getColor(){
		return name;
	}
	public int getModel(){
		return model;
	}
	public void setColor(String color){
		this.color=
color; } public void setModel(int model){ this.model=model; } }

我們在這裡定義了一個類,名為Pen,還定義了兩個欄位color和model,另外還定義了color和model的set、get方法。現在我們再來看看如果是在UML中,該會如何表示?
在這裡插入圖片描述
我們可以看到一個矩形被分為三份,第一層為類的名字;第二層為類的屬性;第三層為類的方法;從圖中我們可以看出color和model都是私有的,前邊都有一把小鎖。

類之間的關係
類與類之間一共有六種關係分別為:泛化(Generalization)、實現(Realization)、依賴(Dependence)、關聯(Association)、聚合(Aggregation)、組合(Composition)
好好學習英語哦



泛化關係
泛化關係在Java中也被稱為繼承關係,在UML中我們用帶有空心三角形的直線來表示。
舉例:分別定義Person、student、teacher各為一個類,那他們的關係為下圖:
在這裡插入圖片描述
實現關係
在UML中我們用帶空心三角形的虛線來表示。
舉例:由於student和teacher都是一種職業,所以我們定義一個類,裡面有一個職業的方法

public class ICareer{
	void career();
}

則他們三個之間的關係如下圖所示:
在這裡插入圖片描述
如果是定義一個介面的話:

public interface Icareer{
	void career()
}

在UML類圖中的表示如下圖:
在這裡插入圖片描述
則他們之間的關係圖為:
在這裡插入圖片描述


依賴關係
依賴是一種比較弱的關係,一般指一個類使用另一個類。在網上搜索資料時,看到一個很好的例子:如果在現實中規定學生如果撿到錢,那麼就要交給警察叔叔。所以當學生撿到錢以後,學生與警察叔叔之間就是一種依賴關係,交給警察叔叔以後就不再是這種關係了,而且撿到錢是偶然事件。
我們在student類中加入一個交錢的方法;新增一個新類為policemen,並加入收錢的方法。則在UML中如下圖表示:
在這裡插入圖片描述
在UML中依賴關係用帶著箭頭的虛線來表示,箭頭指向被依賴物件,也就是這裡的policemen。

聚合關係
聚合關係是一種特殊的關聯關係,聚合關係強調的是整體和部分的關係,其中部分是可以脫離整體而存在的。比如:羊群和一隻羊的關係就是聚合關係,因為羊脫離羊群也是可以獨立存在的。在UML類圖中,聚合關係用帶著空心菱形的直線來表示,如下圖:警官與制服
在這裡插入圖片描述

組合關係
組合關係也是一種特殊的關聯關係,它與聚合很像,也是強調整體與部分的關係,但不同的是部分是無法脫離整體而存在的。比如學生用手撿到錢,其中手是學生的一部分,並且不能脫離學生而單獨存在。那手和學生之間就是組合關係,組合關係用帶實心的菱形直線來表示,其中菱形指向整體,如下圖:
在這裡插入圖片描述
之前一直對這幾種關係的關係強度不是特別的清晰,但是經過這次的整理和理解,發現從泛化、實現、依賴、關聯、聚合、到組合。對我來說
泛化:繼承屬性
實現:繼承方法
依賴:有求於他人
關聯:有血緣關係
聚合:你大爺、你和大家族
組合:你、你腦子和你這個人
關係是越來越強的,如果各位大佬還有其他的見解,歡迎留言,不勝感激。