readme

Java面向对象程序设计-接口(一)

需求分析

本项目主要目的是练习如何使用接口来提供服务。在之前的项目中,我们使用了StudentCenter类来管理学生对象和课程对象。在本项目中,我们将在StudentCenter类中新增一个功能,记录学生注册课程信息。换句话说,当一名学生注册了一门课程之后,需要将这一条注册信息记录在StudentCenter类中。

步骤一

在本项目的第一个步骤中,我们将声明三个接口,用于表示注册人(Registrant)、可注册对象(Registerable)和注册机构(Registry)。

首先,在com.littlewaterdrop.registration包中新增两个接口Registrant和Registerable。这两个接口均为公有接口;它们包含一个成员方法getId(),用于获取当前对象的唯一id。该方法的原型如下所示。

String getId();

然后,在com.littlewaterdrop.registration包中新增一个公有接口Registry。该接口有一个成员方法,完成注册的功能。该方法的原型如下所示,它有两个输入参数;第一个参数是Registrant,表示注册人;第二个参数为Registerable,表示注册对象。

void register(Registrant registrant, Registerable registrable);

步骤二

在定义了上述三个新接口之后,我们再来实现这些接口。首先,修改com.littlewaterdrop.bean.Student类,让其实现Registrant接口。然后,修改com.littlewaterdrop.bean.Course类,让其实现Registerable接口。最后,修改com.littlewaterdrop.registration.StudentCenter类,让其实现Registry接口,并新增register()成员方法。

在StudentCenter中新增两个Map私有成员变量,用于实现学生和课程之间的双向映射。

  1. 第一个成员变量为studentsToCourses;Key是字符串类型,表示学生id;Value是课程id的集合(Set),表示该学生已注册的课程id。这个成员变量用于实现学生到注册课程的映射。
  2. 第二个成员变量为coursesToStudents;Key是字符串类型,表示课程id;Value是学生id的集合(Set),表示已注册该课程的学生id。这个成员变量用于实现课程到注册学生的映射。

register()方法的功能为:当输入学生已经注册了输入的课程时,register()方法不用做任何事情。当输入的学生未注册输入的课程时,register()方法会向上述两个成员变量中添加新记录。

参考文档

  1. Java编程语言的基本概念
  2. 设计模式
  3. Maven工程管理工具
Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.