目录
画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:
1)在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和address这3个属性,以及work()方法。

2)属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:
3)属性的完整表示方式是: 可见性 属性名 :类型 [ = 缺省值 ]
4)方法的完整表示方式是: 可见性 方法名(参数列表) [ :返回类型 ]
示例

上图Demo类定义了三个方法:
依赖关系示例代码:
| 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)在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类
泛化关系示例代码:
| public abstract class DaoSupport{ public void save(Object entity){ } public void delete(Object id){ } } public class PersonServiceBean extends Daosupport{ } |
以上代码对应类图:

1)实现关系是接口与实现类之间的关系,也是依赖关系的特例。
2)在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。
实现关系示例代码:
| public interface PersonService { public void delete(Interger id); } public class PersonServiceBean implements PersonService { public void delete(Interger id){} } |
以上关系对应类图如下:

1)关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,是依赖关系的特例
2)具有导航性:即双向关系或单向关系
3)具有多重性。主要有以下几种形式:
| 形式 | 含义 | 形式 | 含义 |
| 0 | 恰为0 | 1 | 恰为1 |
| 0..1 | 0或1 | 0..* | 任何数 |
| * | 任何数 | 1..* | 1或更多 |
| public class Person { private IDCard card; } public class IDCard{} |
| public class Person { private IDCard card; } public class IDCard{ private Person person } |
双向关联关系用一个不带箭头的实线表示。
自关联关系
| public class Employee { private Integer id; // 主键id private Integer leader; // 领导id } |
1)表示的是整体和部分的关系,整体与部分可以分开。
2)聚合关系是关联关系的特例,所以他具有关联关系的导航性与多重性。
3)在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。
示例:如,一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的。
| public Computer { private Mouse mouse; private Monitor monitor; public void setMouse(Mouse mouse) { this.mouse = mouse; } public void setMonitor(Monitor monitor) { this.monitor = monitor; } } |
1)也是整体与部分的关系,但是整体与部分不可以分开。
2)在UML类图中,组合关系用带实心菱形的实线来表示,菱形指向整体
3)再看一个案例:在程序中我们定义实体,Person、IDCard和Head,那么Head和Person就是组合,IDCard和Person就是聚合。
示例: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{} |
1)组合关系是一种强关联关系,部分和整体具有同样的生命周期,即部分不能脱离整体单独存在,在整体消亡后,部分也会随之消亡。比如人和器官就是组合关系;国和家的关系也是组合关系,国没有了家也就没有了。
2)聚合关系是一种弱关联关系,部分和整体并没有相同的生命周期,整体消亡后部分可以独立存在。比如汽车(整体)与轮胎或发动机(部分)的关系,轮胎或发动机都可以脱离汽车而独立存在;再比如公司和员工的关系。
3)一般来说,组合关系中,被组合的对象是在组合对象创建的时候创建的,如上述组合关系代码中所看到的一样。
4)组合对象和被组合对象是一对一的关联关系;聚合关系则不同,被聚合的对象可以属于多个聚合对象,例如一个员工可以属于多个公司(全职和兼职)
我水平有限,错误难免,还望各位加以指正。
本文内容到此结束,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连丫(点赞、收藏、关注)