世界杯欧洲区预选赛_世界杯足球几年一次 - chinaacecloud.com



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

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

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

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

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

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

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