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);}@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 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 |
转载于:https://www.cnblogs.com/wenzun/p/7705183.html
201621123021《JAVA程序设计》第五周学习总结相关推荐
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20155313 2016-2017-2 《Java程序设计》第二周学习总结
20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...
- 20165203 2017-2018-2 《Java程序设计》第一周学习总结
20165203 2017-2018-2<Java程序设计>第一周学习总结 教材学习内容总结 (一)Java的地位 Java是面向对象编程,并涉及网络.多线程等重要的基础知识,是一门很好的 ...
- 20155229 2016-2007-2 《Java程序设计》第一周学习总结
20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...
- 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结
20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...
- 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结
20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...
- 20175317 《Java程序设计》第一周学习总结
20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...
- 20172318 2016-2017-2 《Java程序设计》第一周学习总结
20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...
最新文章
- Linux那些事儿之我是Sysfs(5)举例二sculld
- Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。
- 用sql从文件中恢复数据库
- myeclipse中的classpath .
- 2021年恩阳中学高考成绩查询,巴中市恩阳中学2021年排名
- linux 管道 top,linux IPC总结——管道
- Java小案例(二) 用数组实现增删查改排序
- java 合成mp3_java如何把文本合成音频格式(MP3)
- lambdapython语法_Python中lambda表达式的语法与应用
- 解决npm npm does not support Node.js
- Silverlight中的ControlTemplate
- windows下mysql安装包安装
- 如何减小电压跟随器输出电阻_电压跟随器只会跟踪?不!请看看它对电路的“魔力”。...
- python控制雷电模拟器
- 一个医院院长的信息化建设感悟:信息化条件下的流程再造
- 黑马程序员--安卓22期毕业19天就业50人平均薪资8261
- python用pandas读取excel指定列_Python用Pandas读写Excel
- Real-Time-Voice-Cloning(github声音克隆项目演示)
- Android 收银机Wifi 连接厨房厨单打印机
- Greenplum 实时数据仓库实践(1)——数据仓库简介