UML的插件下载地址
1. 基本介绍
- 统一建模语言, 是一种用于软件系统设计和分析的语言工具, 用于帮助软件开发人员进行思考和记录思路的结果
- UML本身是一套符号的规定, 用于描述软件模型中各个元素和他们之间的关系. 比如类 接口 实现 泛化 依赖 聚合等
分类:
- 用例图(use case)
- 静态结构图: 类图 对象图 包图 组件图 部署图
- 动态行为图: 交互图(时序图和协作图) 状态图 活动图
类图是描述类和类之间关系的, 是uml图最核心的
2. Eclipse安装AmaterasUML
- Help -> Install New SoftWare…
- http://download.eclipse.org/tools/gef/updates/releases/
- 将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 关联
- 关联关系实际上就是类与类之间的联系, 是依赖关系的特例
- 关联具有导航性, 即双向关系或者单向关系
单向
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 聚合
- 聚合表示的整体和部分的关系, 整体和部分可以分开, 聚合关系是关联关系的特例, 所以具有关联的导航性和多重性
- 例如一个电脑由键盘 鼠标 显示器组成, 组成电脑的各个配件是可以从电脑上分离出来的, 使用空心菱形的实线来表示
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 …
人和脑袋就是组合关系, 人不能没有脑袋…