类之间的六大关系

类之间的关系

  • 依赖
  • 泛化(继承)
  • 实现
  • 关联
  • 聚合
  • 组合

依赖关系

只要类中用到了对方,它们之间就存在依赖关系。如果没有对方,连编译都通过不了。剩余5种关系都是依赖关系的特例。

package com.atguigu.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();
	}

}

类之间的六大关系_第1张图片

总结

  • 类中用到了对方
  • 类的成员属性
  • 类中方法的返回类型
  • 方法接收的参数类型
  • 类中方法使用了该类

泛化关系

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

实现关系

实现关系实际上就是A类实现了B类的接口,属于依赖关系的特例

关联关系

类之间的六大关系_第2张图片

聚合关系

聚合关系表示的是整体和部分的关系整体与部分可以分开。聚合关系是关联关系的特例,所以该关系具有导航性与多重性。
比如 电脑和鼠标、键盘的关系:

package com.atguigu.uml.aggregation;

public class Computer {
	private Mouse mouse; //鼠标可以和computer分离
	private Moniter moniter;//显示器可以和Computer分离
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
	public void setMoniter(Moniter moniter) {
		this.moniter = moniter;
	}
	
}

类之间的六大关系_第3张图片

组合关系

组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
总结就是:组合关系,同生共死
如下程序中我们定义实体Preson类、IDcard、Head,那么Head类与Person类就是组合关系,IDcard和Person类就是聚合关系。
但如果在程序Person实体中定义了对IDcard进行级联删除,及删除Person时连同IDcard一起删除,那么IDcard和Person就是组合关系了。

package com.atguigu.uml.composition;

public class Person {
    private IDCard card; //聚合关系
    private Head head = new Head(); //组合关系

}

类之间的六大关系_第4张图片

你可能感兴趣的:(设计模式-JAVA)