网站项目设计具体方案,wordpress 指定分类置顶文章,茶酒行业网站建设,深圳网站建设公司地图面向对象类图的六种关系#xff08;继承、实现、依赖、关联、聚合、组合#xff09; 1、泛化#xff08;继承#xff09;2、实现3、依赖4、关联5、聚合6、组合 面向对象类图的六种关系#xff08;继承、实现、依赖、关联、聚合、组合#xff09; 进行面向对象设计时… 面向对象类图的六种关系继承、实现、依赖、关联、聚合、组合 1、泛化继承2、实现3、依赖4、关联5、聚合6、组合 面向对象类图的六种关系继承、实现、依赖、关联、聚合、组合 进行面向对象设计时经常需要根据场景抽象出一些类梳理各个类之间的关系实现一个“低耦合高内聚”的系统。
下面通过学生、班级、教师、学校这些角色和场景说明面向对象中类与类之间的六种关系
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;Overridepublic ListStudent getDetailByNo(Integer no) {return null;}
}
public class Teacher extends Person implements QueryInterface {ApiModelProperty(教师编号)private Integer teacherNo;Overridepublic Teacher getDetailByNo(Integer no) {return null;}
}3、依赖
指一个类在使用中依赖了另一个类对于类A和类B如果类A使用类B作为局部变量、方法参数或方法返回值等则称类A依赖类B
依赖的使用例如学生犯错后班级的班主任要给一个学生记过即教师类修改学生信息给教师类定义一个方法使用学生类作为方法参数对学生类的数据进行修改
类图如下使用虚线箭头表示 4、关联
指一个类使用另一个类作为成员变量如果类A使用类B作为成员变量称类A单向关联类B如果类B也使用类A作为成员变量则类A与类B双向关联。关联有1:11:nn:1n:n多种关系
关联的使用例如在学校里每门课程都需要指定一个教师来教而一个教师要教多门课程所以课程与教师双向关联所以课程教师n1
类图如下使用实线箭头表示
5、聚合
聚合指的是整体和个体之间的关系由个体组成了一个整体但是整体的生命周期不影响个体
聚合的使用比如说班级和教师、学生的关系一个班级由一群学生和教师组成了当班级解散后教师和学生都还存在。
类图如下使用尾部为空心菱形的实线箭头表示 6、组合
组合跟聚合一样指定是整体和个体之间的关系但是在组合中个体的生命周期和整体是一致的。
组合的使用比如说教学楼和教室有教学楼才有教室如果教学楼被炸了教室也会被炸掉。
类图如下使用尾部为实心菱形的实线箭头表示