类定义

目录

要求

  • 设计并实现一个Book类,定义成Book.java,Book 包含书名、作者、出版社和出版日期,这些数据都要定义getter和setter。定义至少三个构造方法,接收并初始化这些数据。覆盖(Override)toString方法,返回良好的含有多行的书的描述信息。覆盖equals方法,书名,作者,出版社和出版日期完全一致才说明两本书是一样的。
  • 创建一个测试类Bookshelf, 其中的main方法创建并更新几个Book对象。Book至少包含三本本学期教材内容。
  • 提交博客,要有设计思路,测试代码和运行结果截图,加上学号水印,要有码云代码链接。
  • 独立完成,抄袭倒扣分。

设计思路

优先完成要求的基础定义

  1. 定义 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; }
......//省略
  1. 定义三种构造方法,最先构造默认方法;
复制Book() { bookName = null; ... }     //设为空
Book(String bookName, String bookWriter, String bookPress, String bookDate) { ... }       //使用分别赋值
Book(String bookInfor[]) { ... }       //使用数组赋值
  1. 覆盖 toString 方法,返回良好的含有多行的书的描述信息;
    覆盖 equals 方法,判定书名、作者、出版社和出版日期是否完全一致;
复制public String toString() { /*return 书名 作者 出版社 出版日期;*/ }

public boolean equals(Object o){
//再判断是不是Book类,提高代码的健壮性;向下转型,父类无法调用子类的成员和方法
//最后判断类的所有属性是否相等;其中String类型和Object类型可以用相应的equals()来判断         
}
  1. 定义 Bookshelf.java 及其 main 方法,载入三本本学期教材内容。
复制Book bookOld[] = new Book[3];
bookOld[...] = new Book("...",......);

对基础定义进行完善、运用和拓展

  1. 将基础定义的程序进行完善;
  2. 实现添加书籍;实现书籍列表输出;实现验证书籍信息完整性;
复制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())) { ... }    //比对已存信息和查验信息,返回期望值
  1. 将上述功能与 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 {...}    //实现合并,并添加退出选项
}

测试代码截图

image.png

运行结果截图

解释运行 [图 1 ]

添加书籍:
书名:1 作者:1 出版社:1 出版日期:1
输出列表

image.png

解释运行 [图 2 ]

不添加书籍,验证完整性
image.png

码云链接

https://gitee.com/Yogile/YogileOne.git
码云直达链接

源代码

源代码博客链接

点此下载源文件压缩包

作者:Yogile

出处:https://www.cnblogs.com/Yogile/p/10645035.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Yogile  阅读(278)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题