• 【软件设计师】面向对象类图的六种关系


    面向对象类图的六种关系(继承、实现、依赖、关联、聚合、组合)

    面向对象类图的六种关系(继承、实现、依赖、关联、聚合、组合)
    进行面向对象设计时,经常需要根据场景抽象出一些类,梳理各个类之间的关系,实现一个“低耦合,高内聚”的系统。

    下面通过学生、班级、教师、学校这些角色和场景,说明面向对象中,类与类之间的六种关系

    1、泛化(继承)

    一个类继承另一个类,子类拥有父类的属性

    继承的用处:例如学生和教师,都是属于人,都有名称、年龄、身高、体重这些共同属性,所以用学生类和教师类继承人这个类

    类图如下,用实线空心三角箭头表示,子类指向父类

    在这里插入图片描述

    Java代码的类文件,并且在Java中,如果是普通类继承一个抽象类,必须实现抽象类的所有抽象方法。

    public class Person {	
        private Integer age;
        private String name;
        private Integer height;
        private Integer weight;
    }
    
    public class Student extends Person {
        private Integer studentNo;
    }
    
    public class Teacher extends Person{
        private Integer teacherNo;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、实现

    使用接口去定义一个方法的参数和返回值,没有具体实现,由一个类来实现接口的方法

    实现的使用:例如学生和教师,都需要知道自己在学校的信息,给学生和教师提供一个根据自己的编号查看信息的方法,可以使用一个接口定义方法,由学生和教师类实现这个方法

    类图如下,用虚线空心三角形箭头表示,实现类指向接口
    在这里插入图片描述

    Java代码如下,并且在Java中,一个类可以实现多个接口

    public interface QueryInterface {
       /**
        * 根据编号查询具体信息
        * @param no
        * @return
        */
       Object getDetailByNo(Integer no);
    }
    public class Student extends Person implements QueryInterface {
        @ApiModelProperty("学生编号")
        private Integer studentNo;
    
        @Override
        public List<Student> getDetailByNo(Integer no) {
            return null;
        }
    }
    public class Teacher extends Person implements QueryInterface {
    
        @ApiModelProperty("教师编号")
        private Integer teacherNo;
    
        @Override
        public Teacher getDetailByNo(Integer no) {
            return null;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3、依赖

    指一个类在使用中依赖了另一个类,对于类A和类B,如果类A使用类B作为局部变量、方法参数或方法返回值等,则称类A依赖类B

    依赖的使用:例如学生犯错后,班级的班主任要给一个学生记过,即教师类修改学生信息,给教师类定义一个方法,使用学生类作为方法参数,对学生类的数据进行修改

    类图如下,使用虚线箭头表示

    在这里插入图片描述

    4、关联

    指一个类使用另一个类作为成员变量,如果类A使用类B作为成员变量,称类A单向关联类B,如果类B也使用类A作为成员变量,则类A与类B双向关联。关联有1:1,1:n,n:1,n:n多种关系

    关联的使用:例如在学校里,每门课程都需要指定一个教师来教,而一个教师要教多门课程,所以课程与教师双向关联,所以课程:教师=n:1

    类图如下,使用实线箭头表示
    在这里插入图片描述

    5、聚合

    聚合指的是整体和个体之间的关系,由个体组成了一个整体,但是整体的生命周期不影响个体

    聚合的使用:比如说班级和教师、学生的关系,一个班级由一群学生和教师组成了,当班级解散后,教师和学生都还存在。

    类图如下,使用尾部为空心菱形的实线箭头表示

    在这里插入图片描述

    6、组合

    组合跟聚合一样,指定是整体和个体之间的关系,但是在组合中,个体的生命周期和整体是一致的。

    组合的使用:比如说教学楼和教室,有教学楼才有教室,如果教学楼被炸了,教室也会被炸掉。

    类图如下,使用尾部为实心菱形的实线箭头表示
    在这里插入图片描述

  • 相关阅读:
    [spring学习]13、声明式事务(@Transaction)
    新零售项目及离线数仓核心面试,,220807,,
    基于javaweb简单的在线考试系统
    入门力扣自学笔记151 C++ (题目编号850)
    PodMan容器技术
    2022年大一学生实训作业【基于HTML+CSS制作中华传统文化传统美德网站 (6页面)】
    【机器学习】XGB/LGBM
    maven环境变量,安装源,本地仓库配置
    File类(在JSP中的使用)详解
    电脑蓝屏的错误代码含义
  • 原文地址:https://blog.csdn.net/qq_39198394/article/details/133869694