类的依赖、泛化、实现、关联、聚合和组合


类的依赖、泛化、实现、关联、聚合和组合

1.依赖关系(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();
    }
}

如上所示,PersonServiceBean和Person、IDCard、Department、PersonDao构成依赖关系。

image-20220707200817089

  1. 如果类中用到了对方
  2. 如果是类的成员方法属性
  3. 如果是方法的返回类型
  4. 是方法接收的参数类型
  5. 方法中使用到

以上情况构成依赖关系

2.泛化关系(generalization)

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

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

image-20220707202425702

  1. 泛化关系实际上就是继承关系;
  2. 如果A类继承了B类,我们就说A和B存在泛化关系

3.实现关系(Implementation)

实现是接口和类的关系,是指类实现了接口中定义的接口

public interface PersonService {
    public void delete(Integer id);
}
public class PersonServiceBean implements PersonService{
    @Override
    public void delete(Integer id) {
        System.out.println("delete...");
    }
}

image-20220707204652740

4.关联关系(Association)

关联关系是类与类之间的联系,是依赖关系的特例。关联分为双向和单向关联.

关系具有多重性,可能是一对一,也可能是一对多、多对多、多对一

单向一对一

public class Person{
    private IDCard card;
}
public class IDCard{}

双向一对一

public class Person{
    private IDCard card;
}
public class IDCard{
    private Person person;
}

image-20220708173727338

5.聚合关系(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;
    }
}

image-20220708195534461

6.组合关系(Composition)

组合也是整体与部分的关系,但是整体与部分不可以分开。简单来讲,组合是一种较为紧密的关系,从生命周期上看,部分和整体是共存亡的关系。聚合则是一种较为松散的关系,部分和整体的生命周期未必一致。

在程序中我们定义实体:Person与IDCard、Head,那么Head和Person是组合,IDCard和Person是聚合的关系

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

image-20220708201823080


  TOC