设计模式学习笔记02 - Java版之UML类图


UML的插件下载地址

1. 基本介绍

  1. 统一建模语言, 是一种用于软件系统设计和分析的语言工具, 用于帮助软件开发人员进行思考和记录思路的结果
  2. UML本身是一套符号的规定, 用于描述软件模型中各个元素和他们之间的关系. 比如类 接口 实现 泛化 依赖 聚合等
    在这里插入图片描述

分类:

  1. 用例图(use case)
  2. 静态结构图: 类图 对象图 包图 组件图 部署图
  3. 动态行为图: 交互图(时序图和协作图) 状态图 活动图
    类图是描述类和类之间关系的, 是uml图最核心的

2. Eclipse安装AmaterasUML

  1. Help -> Install New SoftWare…
  2. http://download.eclipse.org/tools/gef/updates/releases/
    在这里插入图片描述
    在这里插入图片描述
  3. 将AmaterasUML的三个jar包拷贝到eclipse的plugin目录下, 重启, OK…
    地址: https://zh.osdn.net/projects/amateras/downloads/56447/AmaterasUML_1.3.4.zip/

3. 类之间的关系

3.1 依赖

只要类中用到了对方, 那么他们之间就存在依赖关系

public class Department {

}
public class IDCard {

}
public class Person {

}
public class PersonDao {

}
package com.liyang;

public class PersonServiceBean {
	PersonDao personDao = new PersonDao();
	
	public void save(Person person) {
		
	}
	
	public IDCard getIDCard(Integer personID) {
		return null;
	}
	
	public void modify() {
		
	}
}

在这里插入图片描述

3.2 泛化

泛化关系实际上就是继承关系, 是依赖关系的特例

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

}

在这里插入图片描述

3.3 实现

A类实现B类, 是依赖关系的特例

public interface PersonService {
	public void delete(Integer id);
}
public class PersonServiceBean3 implements PersonService {

	@Override
	public void delete(Integer id) {

	}
}

在这里插入图片描述

3.4 关联

  1. 关联关系实际上就是类与类之间的联系, 是依赖关系的特例
  2. 关联具有导航性, 即双向关系或者单向关系

单向

public class Person {
	IDCard idCard = new IDCard();
}
public class IDCard {

}

在这里插入图片描述
双向

public class IDCard {
	Person person = new Person();
}
public class Person {
	IDCard idCard = new IDCard();
}

在这里插入图片描述

3.5 聚合

  1. 聚合表示的整体和部分的关系, 整体和部分可以分开, 聚合关系是关联关系的特例, 所以具有关联的导航性多重性
  2. 例如一个电脑由键盘 鼠标 显示器组成, 组成电脑的各个配件是可以从电脑上分离出来的, 使用空心菱形的实线来表示
public class Computer {
	Moniter moniter = new Moniter();
	Mouse mouse = new Mouse();
	public Moniter getMoniter() {
		return moniter;
	}
	public void setMoniter(Moniter moniter) {
		this.moniter = moniter;
	}
	public Mouse getMouse() {
		return mouse;
	}
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
	
}
public class Mouse {

}
public class Moniter {

}

在这里插入图片描述

3.6 组合

能分离出来的叫做聚合, 分离不出来的就是组合

public class Computer {
	private Moniter moniter = new Moniter(); // 不能分离
	private Mouse mouse = new Mouse();
	public Moniter getMoniter() {
		return moniter;
	}
	public void setMoniter(Moniter moniter) {
		this.moniter = moniter;
	}
	public Mouse getMouse() {
		return mouse;
	}
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
}
public class Mouse {

}
public class Moniter {

}

在这里插入图片描述
更生动的例子:
人和身份证是聚合关系, 人丢失身份证重新补办就OK …
人和脑袋就是组合关系, 人不能没有脑袋…

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