首页 > 其他分享 >面向对象类图的六种关系(继承、实现、依赖、关联、聚合、组合)

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

时间:2023-03-12 22:11:57浏览次数:41  
标签:教师 六种 类图 private 学生 面向对象 Integer public

进行面向对象设计时,经常需要根据场景抽象出一些类,梳理各个类之间的关系,实现一个“低耦合,高内聚”的系统。

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

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;
}

 

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;
    }
}

 

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、组合

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

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

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

 

标签:教师,六种,类图,private,学生,面向对象,Integer,public
From: https://www.cnblogs.com/davidFB/p/17189168.html

相关文章

  • UML-面向对象与软件建模
    面向对象与软件建模面向对象技术以问题域中出现的问题为中心,进行模型化设计和开发基础知识:对象与类封装泛化(继承)多态性多态的两种模式:方法的多态性方法的重......
  • 航空公司客户价值分析各类图代码
    importpandasaspddatafile='D:\data/air_data.csv'#航空原始数据,第一行为属性标签resultfile='D:\data/explore.csv'#数据探索结果表#读取原始数据,指......
  • UML类图
    UML类图了解   基本介绍1)UML——UnifiedmodelinglanguageUML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录......
  • 面向对象基础
    一、面向对象基础1、面向对象思想简介软件编程就是将我们的思维转变成计算机能够识别语言的一个过程什么是面向过程?自上而下顺序执行,逐步求精其程序结构是按功能......
  • Java面向对象的三大特性:封装、继承、多态
    1、封装  封装的特点:高内聚,低耦合,说白了就好比电视机,它把里面的线路都给隐藏了,只留给我几个接口供我们使用。高类聚就是类的内部数据细节由自己来完成,不允许外部干涉,低......
  • 面向对象回顾02
    package1.包的理解包就是文件夹,里面放类文件.2.包的作用如果将所有的类文件都放在同一个包下,不利于管理和后期维护,所以将不同功能的类文件放在不同包下方便管理3.包......
  • 回顾面向对象01
    javaee回顾继承1.继承的格式子类extends父类2.继承的好处与弊端提高复用性和维护性,但是增加了类与类之间的耦合3.何时适合用继承?多个子类中有相同的代码4.java......
  • 【教学典型案例】22.原型图的面向对象
    目录​​一:背景介绍​​​​二:面向对象思想​​​​面向对象思想:​​​​三:分析过程​​​​1、颗粒封装、组合使用​​​​将所有页面中的公共内容抽取出来,封装成组件​​......
  • 线程六种状态
    线程六种状态 1.new状态线程创建,还没有执行2.runnable状态线程正常执行3.teminated状态线程终止4.block状态阻塞状态,例如等待锁释放5.timed_waiting状态有时......
  • 面向对象
    面向对象一、IDEA的一些基本使用网址:IntelliJIDEA–领先的Java和KotlinIDE(jetbrains.com)创建IDEA工程:创建一个空的工程设置主题和字体设置一......