- 👏作者简介:大家好,我是卷心菜~~,在校大二学生一枚,Java领域新星创作者。
- 📝个人主页:卷心菜的CSDN博客
- 📕系列专栏:本文写在Java设计模式专栏:不就是Java设计模式吗
- 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
- 🌻格言:向日葵向阳生长,我也是?
前言
今天学习了Java设计模式中的类图设计,它是学习后面课程中各种设计模式的前提,所以就整理了笔记,其中类图是自己截图过来的,感觉还可以,大家喜欢的话,三连支持一下💕🧡
一、UML基本介绍
UML是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 Class表示类 Interface表示接口 Dependency表示依赖 Association表示关联 Generalization表示泛化(继承) Realization表示实现 Aggregation表示聚合 Composite表示组合
二、UML图
UML图分为静态结构图和动态行为图,其中类图是描述类与类之间的关系,是UML图中最核心的部分,所以主要学习和介绍类图。
三、UML类图
用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系 类之间的关系:依赖、泛化(继承)、实现、关联、聚合、组合
四、类图分类
依赖关系(Dependency)
概念
只要是在类中用到了对方,他们之间就存在依赖关系;如果没有对方,连编译都通过不了。
代码
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();
}
}
public class Person{}
public class PersonDao{}
public class IDCard{}
public class Department{}
对应的类图
小结
类中用到了对方,可以是类的成员属性、方法的返回类型、方法接收的参数类型
泛化关系(Generalization)
概念
泛化关系实际上就是继承关系,它是依赖关系的特例。
代码
public abstract class DaoSupport{
public void save(Object entity){
}
public void delete(Object id){
}
}
public class PersonServiceBean extends DaoSupport{}
对应的类图
小结
泛化关系实际上就是继承关系;如果A类继承了B类,就说A 和 B存在泛化关系
实现关系(Implementation)
概念
实现关系实际就是A 类实现B接口,是依赖关系的特例
代码
public interface PersonService {
void delete(Integer id);
}
public class PersonServiceBean implements PersonService {
@Override
public void delete(Integer id) {
System.out.println("delete..");
}
}
对应的类图
小结
实现关系实际上就是实现接口;如果A类实现了B接口,就说A 和 B存在实现关系
关联关系(Association)
概念
关联关系实际上就是类与类之间的联系,是依赖关系的特例
单向一对一关系
代码
public class Person {
private IDCard idCard;
}
public class IDCard{}
对应的类图
双向一对一关系
代码
public class Person {
private IDCard idCard;
}
public class IDCard{
private Person person;
}
对应的类图
小结
关联关系就比较容易,强调的是类与类之间的联系,符号用直线表示
聚合关系(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;
}
}
public class Mouse{}
public class Monitor{}
对应的类图
小结
聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
组合关系(Composition)
概念
组合关系是整体与部分的关系,但是整体与部分不可以分开。
代码
根据现实,一个人不能没有脑袋,但是可以没有身份证(可以补办)
public class Person {
private Head head = new Head();
private IDCard idCard;
}
public class IDCard{}
public class Head{}
注意:如果在程序实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除,那么IDCard和Person就是组合关系了。
对应的类图
小结
如果把private IDCard idCard; 改为 private IDCard idCard = new IDCard(); 表示IDCard与Person不可分开,是组合关系。
总结
类图不难,整理一下大纲:
|