前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类之间的六种关系

类之间的六种关系

原创
作者头像
用户3521953
修改2024-03-10 14:51:36
1670
修改2024-03-10 14:51:36

一:定义

关系是指事物之间存在单项或双向的作用或者影响的状态,证明两个或者多个类是否存在关系设计到业务、架构、模块边界的问题,然而由于业务模型的抽象角度不同而不同,确定他们是否有关系是一件比较困难的事情。

二:类之间关系

类之间的六种关系:依赖,泛化(继承),实现,关联,聚合,组合

1. 依赖

依赖是除了聚合和组合之外的单向弱关系,比如使用一个类的属性、方法,或将其作为方法的参数传入或将其作为方法的返回值输出。

1.1 代码中的体现:A的方法参数中包含B。

代码语言:java
复制
public class UserService {
    // UserService则依赖UserDTO
    public void update(UserDTO userDTO){
        // 注:局部变量是类对象,不符合迪米特法则
        Scanner scanner =  new Scanner(System.in);
    }
}
class UserDTO {
}

1.2 UML类图中的体现:虚线+箭头

依赖关系UML类图
依赖关系UML类图

2. 泛化(继承)

泛化(继承)包括子类和父类,子接口和父接口之间的两种泛化(继承)关系。

2.1 代码中的体现:使用extend关键字

代码语言:java
复制
// 子类与父类为 interface 则表示子接口和父接口之间的泛化(继承)关系
public class Person {
}
class Student extends Person {
}

2.2 UML类图中的体现:实线+空心三角形

泛化关系UML类图
泛化关系UML类图

3. 实现

实现关系指的是一个class实现interface(可以实现多个接口)的功能;实现是类与接口之间最常见的关系。

3.1 代码中的体现:使用implement关键字

代码语言:java
复制
public interface UserService {
}
class UserServiceImpl implements UserService {
}

3.2 UML类图中的体现:虚线加+空心三角

实现关系UML类图
实现关系UML类图

4. 关联

  1. 关联关系:类与类之间的联接它使一个类直到另一个类的属性和方法(实例变量的体现)。A依赖于B对象,并且把B作为A的一个成员变量,则A和B之间存在关联关系。
  2. 关联可以是双向,也可以是单向的。两个类之前是一个层次,不存在部分和整体之间的关系。
  3. 按照多重性可分为四类(一对一,一对多,多对一,多对多)

4.1 代码中的体现:A的成员变量中包含B

代码语言:java
复制
public class Teacher {
    private List<Student> students;
}
class Student  {
}

4.2 UML类图中的体现:实线+箭头

关联关系UML类图
关联关系UML类图

5. 聚合

  1. 聚合关系是关联关系的一种特例,它体现的是整体与部分,是一种"弱拥有的关系"。
  2. 与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所设计的两个类处于统一层次上,而聚合关系中,两个类处在不平等层次上,一个代表整体,另一个代表部分

5.1 代码中的体现:A的成员变量包含B(整体和部分可拆分)

代码语言:java
复制
//电脑和鼠标可拆分开
public class Computer {
    private Mouse mouse;
}
class Mouse  {
}

5.2 UML类图中的体现:空心菱形+实线箭头

聚合关系UML类图
聚合关系UML类图

6. 组合

  1. 组合关系是关联关系的一种特例,这种关系比聚合更强,也称为强聚合
  2. 整体和个体不能独立存在,一定是在一个模块中同时管理整体和个体,生命周期必须相同(级联)。

6.1 代码中的体现:A的成员变量包含B(整体和部分不可拆分,即整体与部分同生共死)

代码语言:java
复制
public class Computer {
    //创建鼠标对象,当电脑对象删除的时候该鼠标对象也将被删除
    private Mouse mouse = new Mouse();
}
class Mouse  {
}

6.2 UML类图中的体现:实心菱形+实线箭头

组合关系UML类图
组合关系UML类图

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:定义
  • 二:类之间关系
    • 1. 依赖
      • 2. 泛化(继承)
        • 3. 实现
          • 4. 关联
            • 5. 聚合
              • 6. 组合
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档