• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
20145207李祉昂
博客园    首页    新随笔    联系   管理    订阅  订阅

《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学习笔记
posted @ 2017-05-22 19:58  20145207李祉昂  阅读(325)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3