91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java設計模式UML之類圖的示例分析

發布時間:2022-02-08 09:17:02 來源:億速云 閱讀:176 作者:小新 欄目:開發技術

小編給大家分享一下Java設計模式UML之類圖的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.UML基本介紹

  • UML——Unified modeling language UML (統一建模語言),是一種用于軟件系統分析和設計的語言工具,它用于幫助軟件開發人員進行思考和記錄思路的結果。

  • UML本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用于描述軟件模型中的各個元素和他們之間的關系,比如類、接口、實現、泛化、依賴、組合、聚合等,如下圖:

Java設計模式UML之類圖的示例分析

Java設計模式UML之類圖的示例分析

上面的截圖就是一個UML類圖的案例,只不過這是在eclipse中的,下面的類圖我會在IDEA中使用。

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

  • 用例圖 (use case)

  • 靜態結構圖:  類圖、對象圖、包圖、組件圖、部署圖

  • 動態行為圖:  交互圖(時序圖與協作圖)、狀態圖、活動圖

類圖是描述類與類之間的關系的,是UML圖中最核心的。

2.UML類圖

用于描述系統中的類(對象)本身的組成和類(對象)之間的各種靜態關系。

類之間的關系:  依賴、泛化(繼承)、實現、關聯、聚合與組合。

2.1 類關系——依賴

只要是在類中用到了對方,那么他們之間就存在依賴關系。   來看下面的代碼

package com.szh.uml.dependence;
 
public class PersonServiceBean {
	private PersonDao personDao;
 
	public void save(Person person) {
	}
 
	public IDCard getIDCard(Integer personId) {
		return null;
	}
 
	public void modify() {
		Department department = new Department();
	}
}
package com.szh.uml.dependence;
 
public class PersonDao {
}
package com.szh.uml.dependence;
 
public class Person {
}
package com.szh.uml.dependence;
 
public class IDCard {
}
package com.szh.uml.dependence;
 
public class Department {
}

上面的代碼中,PersonServiceBean類中用到了Department、Person等這幾個類,那么我們就可以說PersonServiceBean類與它們幾個類之間存在依賴關系。

  • 類中用到了對方

  • 類的成員屬性

  • 方法的返回類型

  • 方法接收的參數類型

  • 方法體內部使用到

依賴的符號就是 虛線 + 一個箭頭。

Java設計模式UML之類圖的示例分析

2.2 類關系——泛化

泛化實際上就是繼承,它是依賴關系的一種特例。

如果A類繼承了B類,那么我們就可以說 A和B 之間存在泛化關系。

package com.szh.uml.generalization;
 
public abstract class DaoSupport {
 
	public void save(Object entity) {
	}
 
	public void delete(Object id) {
	}
}
package com.szh.uml.generalization;
 
public class PersonServiceBean extends DaoSupport {
}

繼承就不再多說了,這里需要指出的一點是:IDEA中的泛化符號不太一樣,一般來說,泛化的符號應該是 實線 + 一個空心三角形,而IDEA中則是下圖這樣。

Java設計模式UML之類圖的示例分析

2.3 類關系——實現

實現關系其實就是面向接口而言,它和泛化一樣,也是依賴關系的一種特例。

如果A類實現了接口B,那么我們就可以說A和B之間存在實現關系。

package com.szh.uml.implementation;
 
public interface PersonService {
 
	public void delete(Integer id);
 
}
package com.szh.uml.implementation;
 
public class PersonServiceBean implements PersonService{
 
	@Override
	public void delete(Integer id) {
		System.out.println("delete..");
	}
 
}

實現接口這個也不再多說了。 這里需要指出的一點是:IDEA中的實現符號不太一樣,一般來說,實現的符號應該是 虛線 + 一個空心三角形,而IDEA中則是下圖這樣。

Java設計模式UML之類圖的示例分析

2.4 類關系——關聯

關聯關系 實際上就是類與類之間的聯系,他是依賴關系的特例。關聯具有導航性:  即雙向關系或單向關系。

關系具有多重性:  如“1”(表示有且僅有一個),“0...”(表示0個或者多個),“0,1”(表示0個或者一個),“n.….m”(表示n到 m個都可以), "m.….*”(表示至少m個)

package com.szh.uml.association1;
 
/**
 *
 */
public class Person {
    private IDCard card;
}
package com.szh.uml.association1;
 
/**
 *
 */
public class IDCard {
}

這里我們的理解就是Person類表示人,IDCard類表示身份證類,一個人只有一個身份證號、一個身份證號只屬于一個人,所以它倆之間就存在著一對一的關聯關系。  關聯的符號就是 實線 + 一個箭頭。

下圖是單向的關聯關系,當我們在IDCard類中聲明了Person類的成員變量時,這二者之間的關聯關系就轉換成了雙向。(圖中還有組合符號,我們后面會說)

Java設計模式UML之類圖的示例分析

2.5 類關系——聚合

聚合關系(Aggregation)表示的是整體和部分的關系,整體與部分可以分開。聚合關系是關聯關系的特例,所以他具有關聯的導航性與多重性。

如:  一臺電腦由鍵盤(keyboard)、顯示器(monitor),鼠標等組成;組成電腦的各個配件是可以從電腦上分離出來的,使用帶空心菱形的實線來表示。

package com.szh.uml.aggregation;
 
public class Computer {
 
	private Mouse mouse;
	private Monitor monitor;
 
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
	public void setMonitor(Monitor monitor) {
		this.monitor = monitor;
	}
	
}
package com.szh.uml.aggregation;
 
public class Monitor {
}
package com.szh.uml.aggregation;
 
public class Mouse {
}

聚合的符號一般來說應該是 實線 + 空心菱形,組合的符號則是 實線 + 實心菱形,IDEA中聚合、組合的符號都是下圖這樣。

Java設計模式UML之類圖的示例分析

Java設計模式UML之類圖的示例分析

2.6 類關系——組合

組合關系:  也是整體與部分的關系,但是整體與部分不可以分開。

再看一個案例:在程序中我們定義實體: Person與IDCard、Head,那么 Head和 Person 就是組合, IDCard 和Person就是聚合。

但是如果在程序中 Person實體中定義了對IDCard進行級聯刪除,即刪除Person時連同IDCard 一起刪除,那么IDCard和 Person就是組合了。

package com.szh.uml.composition;
 
public class Computer {
 
	private Mouse mouse = new Mouse();
	private Monitor monitor = new Monitor();
 
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
 
	public void setMonitor(Monitor monitor) {
		this.monitor = monitor;
	}
	
}
package com.szh.uml.composition;
 
public class Monitor {
}
package com.szh.uml.composition;
 
public class Mouse {
}
package com.szh.uml.composition;
 
public class Person {
    private IDCard card;
    private Head head = new Head();
}
package com.szh.uml.composition;
 
public class Head {
}
package com.szh.uml.composition;
 
public class IDCard {
}

Java設計模式UML之類圖的示例分析

Java設計模式UML之類圖的示例分析

Java設計模式UML之類圖的示例分析

以上是“Java設計模式UML之類圖的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安宁市| 广水市| 岗巴县| 泗洪县| 景泰县| 安康市| 合川市| 开平市| 鞍山市| 巴南区| 大丰市| 都匀市| 宜春市| 平遥县| 仲巴县| 博客| 赤壁市| 习水县| 洪泽县| 芦溪县| 永寿县| 喀喇沁旗| 洪湖市| 郓城县| 贺州市| 南充市| 平顶山市| 冷水江市| 平舆县| 新建县| 左云县| 苏州市| 西乌珠穆沁旗| 孟村| 固始县| 阿拉善左旗| 集安市| 涟源市| 鲜城| 慈溪市| 柞水县|