类定义
目录
要求
- 设计并实现一个Book类,定义成Book.java,Book 包含书名、作者、出版社和出版日期,这些数据都要定义getter和setter。定义至少三个构造方法,接收并初始化这些数据。覆盖(Override)toString方法,返回良好的含有多行的书的描述信息。覆盖equals方法,书名,作者,出版社和出版日期完全一致才说明两本书是一样的。
- 创建一个测试类Bookshelf, 其中的main方法创建并更新几个Book对象。Book至少包含三本本学期教材内容。
- 提交博客,要有设计思路,测试代码和运行结果截图,加上学号水印,要有码云代码链接。
- 独立完成,抄袭倒扣分。
设计思路
优先完成要求的基础定义
- 定义 Book.java 和其中的四个成员变量:bookName、bookWriter、bookPress、bookDate;
以四个成员变量为基础,定义对应的getter和setter方法;
String bookName, bookWriter, bookPress, bookDate;
public String getBookName() { return bookName; }
public void setBookName(String bookName) { this.bookName = bookName; }
......//省略
- 定义三种构造方法,最先构造默认方法;
Book() { bookName = null; ... } //设为空
Book(String bookName, String bookWriter, String bookPress, String bookDate) { ... } //使用分别赋值
Book(String bookInfor[]) { ... } //使用数组赋值
- 覆盖 toString 方法,返回良好的含有多行的书的描述信息;
覆盖 equals 方法,判定书名、作者、出版社和出版日期是否完全一致;
public String toString() { /*return 书名 作者 出版社 出版日期;*/ }
public boolean equals(Object o){
//再判断是不是Book类,提高代码的健壮性;向下转型,父类无法调用子类的成员和方法
//最后判断类的所有属性是否相等;其中String类型和Object类型可以用相应的equals()来判断
}
- 定义 Bookshelf.java 及其 main 方法,载入三本本学期教材内容。
Book bookOld[] = new Book[3];
bookOld[...] = new Book("...",......);
对基础定义进行完善、运用和拓展
- 将基础定义的程序进行完善;
- 实现添加书籍;实现书籍列表输出;实现验证书籍信息完整性;
Book book[] = new Book[...];
for (...) { book[...]=new Book(); }
//使用覆盖的 toString 方法输出列表
for (...) { System.out.println(book...[...].toString()); }
//使用覆盖的 equals 方法验证完整性
Scanner ((Book)wannaBook).bookName, ......; //输入要查验的书籍信息
if (book...[...].toString().equals(wannaBook.toString())) { ... } //比对已存信息和查验信息,返回期望值
- 将上述功能与 menu 菜单合并,添加退出选项,开启循环菜单。
Book book[] = new Book[...];
for (...) { //开启循环
System.out.println("Input the number of functions to complete:\n"
+"1. Make a list of books.\n"
+"2. Determine the accuracy of information in a book.\n"
+"0. Exit.");
if (...) {...} else if ( 0 ) { System.exit(0); } else {...} //实现合并,并添加退出选项
}
测试代码截图
运行结果截图
解释运行 [图 1 ]
添加书籍:
书名:1 作者:1 出版社:1 出版日期:1
输出列表
解释运行 [图 2 ]
不添加书籍,验证完整性
码云链接
https://gitee.com/Yogile/YogileOne.git
码云直达链接