1. 本周学习总结
1.1 写出你认为本周学习中比较重要的知识点关键词
接口 Comparable Arrays.sort -has a Lambda表达式
1.2尝试使用思维导图将这些关键词组织起来。注:思维导图一般不需要出现过多的字。
1.3 可选:使用常规方法总结其他上课内容。
本周学习了引用类型的接口,接口的定义和实现。
2. 书面作业
作业参考文件下载
PTA题集:面向对象2-进阶-多态、接口与内部类
1.面向对象设计大作业(团队项目,2-3人)
内容:继续完善上次的大作业。
注意: 再过几次课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化较大的地方的是输入与输出部分。编码的时候,请不要将处理输入(System.in)与输出(System.out)的代码与某个业务处理方法绑死。
参考资料:
使用Processon画图
作业提交结构如下:
1.1项目简介表格:
项目码云地址
团队成员表格
学生 | 负责任务 | 博客地址 |
---|---|---|
陈晓菲 | 商品类以及菜单类 | [博客地址](http://www.cnblogs.com/cxf1404445126 /) |
廖文姑 | 用户类以及输入输出接口 | [博客地址](http://www.cnblogs.com/liao1531870282 /) |
贾海涛 | 购物车类及测试类 | [博客地址](http://www.cnblogs.com/jiahaitao /) |
1.2系统常用功能框架图
提示:在XMind文本方框中,可通过按Shift+Enter将字竖起来。
1.3 系统总体类图
类图绘制参考资料:
UML类图几种关系的总结
1.4 购物车、商品、系统关键代码截图(主要截取自己负责的部分)
1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。
答:主要是实现了一个菜单类,里面添加了注册登录等方法,还通过实现了一个输入输出接口,让控制台不与某个类进行绑定。搜索功能很遗憾还是没有实现。
在整个讨论过程中我主要负责用户和接口,每个人有空的时间都不一样所以在时间上很难协调,导致我们讨论时间不长,在有些模块的衔接方面还存在一些问题。
2. abstract:阅读GuessGame抽象类的设计与使用源代码
2.1Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢?
答:改造前使用抽象类仅局限于在控制台操作,改造后使用抽象类就可以在控制台也可以使用对话框图形界面等输入。
2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。
答:具体实现方法时未定义或不确定其执行环境时用abstract类,有些类可以不用abstract来直接实现。
2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。
答:变的是实现方法,不变的是结果,
3. Comparable与Comparator
3.1结合PTA 7-1中你的代码说明,为什么某个类实现了Comparable接口,就可以直接使用Arrays.sort对该类型的数组进行排序?
答:PTA 7-1中,写重写其中比较方法使得元素进行排序,
3.2结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?
答:PTA 7-2 中,Comparator接口通过创建多个比较器实现对类的排序方法。
3.3以前的作业Shape, Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。
答:在Sharp类中的计算图形周长和面积的方法应声明为abstract,虽然每个图形都有计算周长和面积的方法,但是对于不同的图形,其计算方法也有不同,我们在定义时,没有办法确定其具体实现步骤,所以要定义为抽象类,然后在继承的子类中根据不同的形状来实现其具体方法。
3.4有很多Shape类型对象如Rectangle、Circle。希望使用Arrays.sort对他们进行排序,请写出相应代码。并简述应在哪个类上实现Comparable接口比较好?
答:
使用抽象类Shape实现Comparable接口比较好。
3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。(注意:一定要结合自己编写的代码)
答:按照不同的方法实现对象的排序,好处就是比较方便。
4. 面向接口案例分析
阅读Case-StudentDao.zip案例
4.1a.画出类关系图。b.StudentDao接口有什么用?
StudentDao接口定义了三个抽象,
4.2StudenDaoListImpl与StudentDaoArrayImpl有何共同之处?有何区别?
答:StudentDaoArrayImpl定义是用来存放学生信息,但只限于存放一定数目的学生信息;而StudenDaoListImpl定是存放学生信息,空间上不会受到约束。
4.3 结合Test.java中的main函数,简述面向接口编程的好处。
答:面向接口的编程使得程序更加的灵活,比如例子给出的写入学生的数据,不管接口的具体是用数组还是列表实现,在写入学生的数据的时候不用考虑实现的细节。工程上开发的时候,比如写一个功能,但是没有指定是图形界面还是文字界面,那么使用接口来实现功能,就不用考虑这种细节。
5. 什么是面向接口编程?面向接口编程的好处是什么?
结合题目4案例中的Test.java的代码进行分析。不要百度原封不动照搬!
答:Arrays,sort就是面向 Comparable接口进行编程,这就是所谓的面向接口编程,面向接口的好处主要就是代码的重用性,可扩展性,比较灵活以后维护起来也方便,
3码云及PTA
题目集:面向对象2-进阶-多态接口内部类
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2 截图PTA题集完成情况图
需要有两张图(1. 排名图。2.PTA提交列表图)
3.3 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中。
|总代码量|新增代码量|总文件数|新增文件数|
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 0 | 0 |
4 | 0 | 0 | 0 | 0 |
5 | 0 | 0 | 0 | 0 |
6 | 647 | 647 | 13 | 13 |
D:>
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 125 | 125 | 2 | 2 |
4 | 141 | 141 | 3 | 3 |
5 | 674 | 647 | 13 | 13 |