201621123021《JAVA程序设计》第五周学习总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了201621123021《JAVA程序设计》第五周学习总结相关的知识,希望对你有一定的参考价值。
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); } @Override public 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; } @Override public 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; } @Override public 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; else return 0; } Array.Sort(Shape);
- 应在Shape中实现Comparable接口比较好,应为不管是周长还是面积都是包含在Shape类中。
3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。
- 面向接口编程和面向父类编程可以提高函数的灵活性,如题3.4中我对于面积、周长的比较程序灵活的选择比较方法。
4. 面向接口案例分析
4.1 a.画出类关系图。b.StudentDao
接口有什么用?
- b.
StudentDao
的作用是作为程序的接口,进行读、写、输出功能。
4.2 StudenDaoListImpl
与StudentDaoArrayImpl
有何共同之处?有何区别?
- 共同之处:都是用来存储学生信息的类。
- 区别:
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 |
以上是关于201621123021《JAVA程序设计》第五周学习总结的主要内容,如果未能解决你的问题,请参考以下文章