《Java 程序设计》课堂实践项目-类定义
《Java 程序设计》课堂实践项目类定义 课后学习总结
目录
- 改变
- 类定义实验要求
- 课堂实践成果
- 课后思考
改变
修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改。
加了一些类定义相关的拓展的内容,图片等都是再次运行之后截得细致的图片,电脑上也有原图。
类定义实验要求
设计并实现一个Book类,定义义成Book.java,Book 包含书名,作者,出版社和出版日期,这些数据都要定义getter和setter。
定义至少三个构造方法,接收并初始化这些数据。覆盖(Override)toString方法,返回良好的含有多行的书的描述信息。
覆盖equals方法,书名,作者,出版社和出版日期完全一致才说明两本书是一样的。 创建一个测试类Bookshelf, 其中的main方法创建并更新几个Book对象。Book至少包含三本本学期教材内容。
课堂实践成果
代码如下:
1.产品代码
public class Book {
String name;
String writer;
String company;
int data;
public String getWriter() {
return writer;
}
public String getName() {
return name;
}
public String getCompany() {
return company;
}
public int getData() {
return data;
}
public Book(String name, String writer, String company, int data) {
this.name = name;
this.writer = writer;
this.company = company;
this.data = data;
}
@Override public String toString() {
return "Book{" +
"name='" + name + '\'' +
", writer='" + writer + '\'' +
", company='" + company + '\'' +
", data=" + data +
'}';
}
@Override public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
if (data != book.data) return false;
if (name != null ? !name.equals(book.name) : book.name != null) return false;
if (writer != null ? !writer.equals(book.writer) : book.writer != null) return false;
return company != null ? company.equals(book.company) : book.company == null;
}
@Override public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (writer != null ? writer.hashCode() : 0);
result = 31 * result + (company != null ? company.hashCode() : 0);
result = 31 * result + data;
return result;
}
}
2.测试代码:
public class BookTest extends TestCase{
Book book1 = new Book("book1","AAA","COM",20170517);
Book book2 = new Book("book2","BBB","COM",20170518);
Book book3 = new Book("book3","CCC","COM",20170519);
@Test public void testEquals(){
assertEquals(true,book1.equals(book1));
assertEquals(false,book1.equals(book2));
assertEquals(false,book3.equals(book2));
}
@Test public void testOutput(){
assertEquals("Book{name='book1', writer='AAA', company='COM', data=20170517}",book1.toString());
}
}
实验截图如下:

插入一些书名,这里就用AAA之类的代替,为了简便。
需要注意以下两点:
- 没有this并且同名的时候,会被认为book方法的参数bookname复制给了自己.

- this代表它所引用的函数对象。
- this韩束构造了函数间的调用,该调用有先后顺序之分

本次实践重载以及父类及子类的应用也就做了这么多,博客也就能完善到这样,望老师理解
学习反思及总结
这次实践依然是重复或者说加强对测试类的理解和运用,本身会的确实有限,所以只能额外举出这么几个例子,见谅。
实践的每一个步骤都是重新做的,因此截图都是重新截得,但是博客日期可以看出是当时有写只不过很草帅而已,经过本次修改希望老师满意
《Java 程序设计》课堂实践项目-类定义的更多相关文章
- 《Java 程序设计》课堂实践项目汇总链接
1.<Java 程序设计>课堂实践项目-命令行参数 2.<Java 程序设计>课堂实践项目-mini dc 3.<Java 程序设计>课堂实践项目-Arrays和S ...
- 《Java 程序设计》课堂实践项目 课后学习总结
<Java 程序设计>课堂实践项目 课后学习总结 String类的使用(sort) 目录 Linux命令(sort) 课堂实践 课后思考 学习老师的代码之后的思考:int与Integer ...
- 《Java 程序设计》课堂实践项目-简易计算器
<Java 程序设计>课堂实践项目简易计算器 课后学习总结 目录 改变 简易计算器实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有 ...
- # 20155308 2016-2017-2《Java程序设计》课堂实践项目 5月17日
20155308 2016-2017-2<Java程序设计>课堂实践项目 5/17 本次因为git出现了问题,所以没有按时提交我的代码 问题一 在IDEA中对P145 MathTool.j ...
- 《Java 程序设计》课堂实践项目-Arrays和String单元测试
<Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...
- 20155320 2016-2017-2《Java程序设计》第十二周课堂实践项目
20155320 2016-2017-2<Java程序设计>第十二周课堂实践项目 1.修改教材P98 Score2.java, 让执行结果数组填充是自己的学号: 2.在IDEA中以TDD的 ...
- 20155321 2016-2017-2《Java程序设计》课堂实践项目
20155321 2016-2017-2<Java程序设计>课堂实践项目 关于String类 split方法 charAt方法 项目题目: 模拟实现Linux下Sort -t : -k 2 ...
- 《Java 程序设计》课堂实践项目-命令行参数
<Java 程序设计>课堂实践项目 课后学习总结 目录 改变 命令行参数实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改.加了 ...
- 《Java 程序设计》课堂实践项目-mini dc
<Java 程序设计>课堂实践项目-后缀表达式 课后学习总结 目录 改变 mini dc实验要求 后缀表达式介绍 课堂实践成果 课后思考 改变 修改了博客整体布局,改变了之前贴个截图粘个代 ...
随机推荐
- 第六章 函数、谓词、CASE表达式 6-2 谓词
一.什么是谓词 需要满足返回值为真值的函数.谓词的返回值全都是真值(TRUE/ FALSE/UNKNOWN) 如:LIKE/BETWEEN /IS NULL/IS NOT NULL/IN/EXISTS ...
- 关于jquery的serialize方法转换空格为+号的解决方法
jquery的 serialize()方法,可以对表单项进行序列化,这本来是很方便的一个功能:但是实际使用中去发现了如下问题:例如:< textarea name="content&q ...
- sql面试
1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 ...
- 使用innodb_ruby探查Innodb索引结构
使用innodb_ruby探查Innodb索引结构 innodb_ruby 是使用 Ruby 编写的 InnoDB 文件格式解析器.innodb_ruby 的目的是暴露一些其他隐藏的 InnoDB 原 ...
- [翻译] NMBottomTabBarController
NMBottomTabBarController A customisable tab bar controller for iOS written in Objective C. It uses a ...
- [翻译] JFMinimalNotifications
JFMinimalNotifications This is an iOS UIView for presenting a beautiful notification that is highly ...
- lumen框架的辅助函数
简介 Laravel 包含一些多样化的 PHP 辅助函数函数.许多在 Laravel 自身框架中使用:如果你觉得实用,也可以在你应用当中使用. 可用方法 数组 array_add array_coll ...
- 3星|《结构思考力》:用金字塔原理整理PPT的思路,案例偏简单
结构思考力 名义上全书是讲结构化思考,实际内容是用结构化思考的方法来整理PPT的思路,让PPT的逻辑更清晰.少部分提到如何修改标题更吸引人,如何做图表设计. 书中结构化思考的基本思路,重要的有两个:1 ...
- SQL Server与CLR数据类型的对应关系
数据库 C#程序 int int32 text string bigint int64 binary System.Byte[] bit Boolean char string date System ...
- 20165318 预备作业3 Linux安装及学习
Linux安装及学习 一.VirtualBox和Ubuntu的安装 我安装的是VirtualBox 5.2.6和Ubuntu 16.04 LTS,安装过程按照老师博客中的步骤依次进行,出现了以下几个问 ...