201621123021《JAVA程序设计》第五周学习总结

1. 本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词

  • 接口、comparator接口、comparable接口、has-a

1.2 尝试使用思维导图将这些关键词组织起来。

2. 书面作业

1. 面向对象设计大作业(团队项目,2-3人)

内容:继续完善上次的大作业。

1.1 项目简介表格

学生 负责任务 博客地址
简卓林 Store git[https://gitee.com/TongCan/ShoppingCart.git]
董明超 Good、ShoppingCart git

1.2 系统常用功能框架图

1.3 系统总体类图

1.4 购物车、商品、系统关键代码截图

购物车

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;public class ShoppingCart {private ArrayList<Good> goods = new ArrayList<>();public void add(Good good){ //购买商品==将商品放入购物车
        goods.add(good);}@Overridepublic String toString() {return "ShoppingCart{" +"goods=" + goods +"}";}public BigDecimal sum(){BigDecimal res = new BigDecimal(0);for (Good good : goods) {res=res.add(good.getPrice());}return res;}public void deleteGood(int index){goods.remove(index-1);}public void deleteGood(Good o){goods.remove(o);}
}

商品

import java.math.BigDecimal;public class Good {private BigDecimal price;private String name;private int number;public Good(BigDecimal price, String name) {this.price = price;this.name = name;}public BigDecimal getPrice() {return price;}public void setPrice(BigDecimal price) {this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Good{" +"price=" + price +", name='" + name + '\'' +"}";}//数量编辑public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}
}

商家

import java.math.BigDecimal;public class Good {private BigDecimal price;private String name;private int number;public Good(BigDecimal price, String name) {this.price = price;this.name = name;}public BigDecimal getPrice() {return price;}public void setPrice(BigDecimal price) {this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Good{" +"price=" + price +", name='" + name + '\'' +"}";}//数量编辑public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}
}

1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。

  • 更上一次系统相比本次系统的功能变得更多,更加强大。通过本次大作业我明白了面向对象的重要性。

2. abstract:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢?

  • 使用抽象类、抽象方法能够使子类更加方便的实现多态。

2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。

  • 当我们想要一个类实现不同的功能时可以使用抽象类。
  • 当我们想要对类实现特定功能时可以不适用抽象类。

2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。

  • 变化的是类从非抽象类变成了抽象类。
  • 不变的是游戏的猜数字功能并没有发生改变。

3. Comparable与Comparator

3.1 结合PTA 7-1中你的代码说明,为什么某个类实现了Comparable接口,就可以直接使用Arrays.sort对该类型的数组进行排序?

public PersonSortable(String name, int age) {super();this.name = name;this.age = age;}

  • 因为Comparable接口中包含着对于数组的创建,所以可以使用Arrays.sort进行排序。

3.2 结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?

  • 因为本题需要进行两种排序方式,一种按照年龄排序,一种按照姓名排序,此时Comparable接口被占用,则还需使用Comparator接口进行比较。

3.3 以前的作业Shape,Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。

  • Shape重计算周长的函数getPerimeter()和计算面积的函数getArea()应声明为abstract,因为面积和周长在不同的图形中实现功能的方法不一样。

3.4 有很多Shape类型对象如Rectangle、Circle。希望使用Arrays.sort对他们进行排序,请写出相应代码。并简述应在哪个类上实现Comparable接口比较好?

public int CompareTo(Shape o){if(this.getPerimeter()-o.getPerimeter()<0)return -1;else if(this.getPerimeter()-o.getPerimeter()>0)return 1;elsereturn 0;
}
Array.Sort(Shape);

  • 应在Shape中实现Comparable接口比较好,应为不管是周长还是面积都是包含在Shape类中。

3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。

  • 面向接口编程和面向父类编程可以提高函数的灵活性,如题3.4中我对于面积、周长的比较程序灵活的选择比较方法。

4. 面向接口案例分析

4.1 a.画出类关系图。b.StudentDao接口有什么用?

  • b.StudentDao的作用是作为程序的接口,进行读、写、输出功能。

4.2 StudenDaoListImplStudentDaoArrayImpl有何共同之处?有何区别?

  • 共同之处:都是用来存储学生信息的类。
  • 区别:StudenDaoListImpl通过列表的方式来存储数据,而StudentDaoArrayImpl通过数组的方式来存储数据。

4.3 结合Test.java中的main函数,简述面向接口编程的好处。

  • 面向接口编程提高了程序了灵活性,如Test.java中数据的后台来源可能不一样,但是却可以正确使用。

5. 什么是面向接口编程?面向接口编程的好处是什么?

  • 面向接口编程即不管后台数据是怎样的形式,程序都可以对这些数据进行正确的处理,如题目中Test.java,我们有两个数据后台一个是List另一个是Array,接口可以对他们进行正确的处理,来实现对学生信息的正确处理。
  • 面向接口编程的好处是提高程序运行的广度,能够让数据对象成为一个集合,然后再进行统一处理。

3.码云及PTA

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图

3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
4 437 437 7 7
5 905 468 13 6

转载于:https://www.cnblogs.com/wenzun/p/7705183.html

201621123021《JAVA程序设计》第五周学习总结相关推荐

  1. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  2. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  3. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  4. 20165203 2017-2018-2 《Java程序设计》第一周学习总结

    20165203 2017-2018-2<Java程序设计>第一周学习总结 教材学习内容总结 (一)Java的地位 Java是面向对象编程,并涉及网络.多线程等重要的基础知识,是一门很好的 ...

  5. 20155229 2016-2007-2 《Java程序设计》第一周学习总结

    20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...

  6. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  7. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

  8. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  9. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  10. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

最新文章

  1. Linux那些事儿之我是Sysfs(5)举例二sculld
  2. Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。
  3. 用sql从文件中恢复数据库
  4. myeclipse中的classpath .
  5. 2021年恩阳中学高考成绩查询,巴中市恩阳中学2021年排名
  6. linux 管道 top,linux IPC总结——管道
  7. Java小案例(二) 用数组实现增删查改排序
  8. java 合成mp3_java如何把文本合成音频格式(MP3)
  9. lambdapython语法_Python中lambda表达式的语法与应用
  10. 解决npm npm does not support Node.js
  11. Silverlight中的ControlTemplate
  12. windows下mysql安装包安装
  13. 如何减小电压跟随器输出电阻_电压跟随器只会跟踪?不!请看看它对电路的“魔力”。...
  14. python控制雷电模拟器
  15. 一个医院院长的信息化建设感悟:信息化条件下的流程再造
  16. 黑马程序员--安卓22期毕业19天就业50人平均薪资8261
  17. python用pandas读取excel指定列_Python用Pandas读写Excel
  18. Real-Time-Voice-Cloning(github声音克隆项目演示)
  19. Android 收银机Wifi 连接厨房厨单打印机
  20. Greenplum 实时数据仓库实践(1)——数据仓库简介

热门文章

  1. pixhawk自学笔记之px4程序启动顺序
  2. HDU Problem - 6214 Smallest Minimum Cut(最小割边,两种方法)
  3. voip 音频采集时间_数字音频基础------从PCM说起
  4. 标准库类型string的基本功能和使用
  5. 计算器服务端/客户端
  6. 怎么查找那台电脑中了ARP病毒
  7. JavaFX 8 教程 (中文)
  8. Struts2工作原理和框架扩展点
  9. Eclipse Alt+/ Content Assistant
  10. hibernate实体的几种状态