201621123062《java程序设计》第五周作业总结
1. 本周学习总结
1.1 写出你认为本周学习中比较重要的知识点关键词
关键词:interface、Comparable、comparator
1.2 尝试使用思维导图将这些关键词组织起来。注:思维导图一般不需要出现过多的字。

1.3 可选:使用常规方法总结其他上课内容。
1.Arrays.sort的具体用法
2.第四次作业讲解
3.不同接口之间的区别
2. 书面作业
2.1. 面向对象设计大作业(团队项目,2-3人)
内容:继续完善上次的大作业。
注意: 再过几次课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化较大的地方的是输入与输出部分。编码的时候,请不要将处理输入(System.in)与输出(System.out)的代码与某个业务处理方法绑死。
2.1.1 项目简介表格:
团队成员表格
| 学生 | 负责任务 | 博客地址 |
|---|---|---|
| 吴雅思 | 商品类、购物车类 | 吴雅思的博客链接 |
| 林诗乐 | 账户类、收货人类 | 林诗乐的博客链接 |
2.1.2 系统常用功能框架图

2.1.3 系统总体类图

2.1.4 购物车、商品、系统关键代码截图(主要截取自己负责的部分)



结果:


2.1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。
修改:购物车不应该继承商品类,一些类的命名也规范了一点。写了一些主函数,我想做商品的添加操作,但是!!!添加一直实现不了,有个问题解决了好久一直不行,百度类似的问题是出在输入的数据上,但是我感觉输入这一块的数据类型都是对的。。。。
感想:发现写一个小系统都好难,比如商品件数到底应该放在商品类还是购物车里,这些小细节都需要考虑。目前还没有实现能够脱离控制台的代码,,慢慢写吧。。。。。
2.2.abstract:阅读GuessGame抽象类的设计与使用源代码
2.2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢?
好处:阅读改造前代码可以发现未定义抽象类时代码与控制台是绑定的,而改造成抽象类后,不需要与控制台绑定,在其他地方也能实现这段代码。
2.2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。
应该声明为抽象方法:方法的类型暂时不确定,该方法放到子类中才会有具体的代码。
直接实现:方法的类型是确定的,且该方法的实现是具体的,不抽象。
2.2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。
变化: Guess定义成了抽象类,print()、println()、nextInt()都是抽象方法,利用抽象类,猜数字游戏可以在很多种环境下执行,不受控制台限制。
不变:随机数字的操作并不改变
2.3. Comparable与Comparator
2.3.1 结合PTA 7-1中你的代码说明,为什么某个类实现了Comparable接口,就可以直接使用Arrays.sort对该类型的数组进行排序?
查找资料:
Arrays类有一个静态方法sort,利用这个方法可以传入我们要排序的数组进去排序,因为我们传入的是一个数组的引用,所以排序完成的结果也通过这个引用来更改数组。对于整数、字符串排序,jdk提供了默认的实现,如果要对一个对象数组排序,则要自己实现 java.util.Comparator接口。
代码截取:
class PersonSortable implements Comparable<PersonSortable>{
public int compareTo(PersonSortable o){
if(name.compareTo(o.name)==0){
if(age>o.age)
return age-o.age;
if(age==o.age)
return 0;
else
return -1;
}
else return name.compareTo(o.name);
}
原因:通过编写接口方法,实现了对排序的要求,从而实现 java.util.Comparator接口,就能直接使用Arrays.sort。(这题不是很清楚)
2.3.2 结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?
原因:Comparable接口并不适用于多种方式的排序,而Comparator接口则适用于多种方式的排序。本题要求名字和年龄的排序,用Comparator接口。
2.3.3 以前的作业Shape, Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。
方法:getArea()
原因:并不知道getArea()方法的类型,定义为抽象类后就能在子类的代码中具体实现。
2.3.4 有很多Shape类型对象如Rectangle、Circle。希望使用Arrays.sort对他们进行排序,请写出相应代码。并简述应在哪个类上实现Comparable接口比较好?
相应代码:(本题有参考同学代码)

结果:


Comparable接口:shape是所有形状的父类,如果在shape类上实现接口,其他相应的子类都可以在各自的方法中用具体代码实现。
2.3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。(注意:一定要结合自己编写的代码)
好处:面向接口编程可以不用管后台的数据是什么样的,有了共同的方法就可以操作。而面向父类编程可以使子类继承父类的基础上,对同一种方法有不同实现。例如本题的shape父类,它的其他子类,都有求周长排序的方法,但是实现起来是各不相同的。
2.4.面向接口案例分析
阅读Case-StudentDao.zip案例
2.4.1 a.画出类关系图

b.StudentDao接口有什么用?
作用:通过StudentDao接口,StudenDaoListImpl与StudentDaoArrayImp分别用各自的不同代码实现了接口中的三个函数。
2.4.2 StudenDaoListImpl与StudentDaoArrayImpl有何共同之处?有何区别?
共同之处:都使用了StudentDao接口,都有三个函数:
public boolean writeStudent(Student student);
public Student readStudent(String name);
public void diplayAllStudent();
区别:实现三个函数的代码是不一样的。
2.4.3 结合Test.java中的main函数,简述面向接口编程的好处。
好处:在main函数中定义了StudentDao接口的类,面向接口编程后,用户可以使用统一的接口,然后各自编写不同代码实现自己的需求。接口也是一种多态的体现。
2.5什么是面向接口编程?面向接口编程的是什么?
面向接口编程:从Test.java的代码分析:
StudentDao sdm = new StudentDaoArrayImpl(50);//使用数组实现
StudentDao sdm = new StudenDaoListImpl();//使用列表实现
可见面向接口编程应该是使用者用一个共同的方法使用接口,可以实现自己的需求,并且不需要知道接口里面具体是怎么操作的。(不知道理解的对不对?)
百度资料:
指的是系统每部分的实现和实现之间,通过interface所确定的协议来共同工作。
好处:使用者可以往后台写数据,无需考虑后台是什么,各自编写不同代码实现自己的需求。
3.码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图



3.2 截图PTA题集完成情况图
需要有两张图(1. 排名图。2.PTA提交列表图)
排名图:

PTA提交列表图:

3.3 统计本周完成的代码量
| 周数 | 行数 | 新增行数 | 文件数 | 新增文件数 |
|---|---|---|---|---|
| 1 | 57 | 57 | 5027 | 5027 |
| 2 | 400 | 400 | 10 | 10 |
| 3 | 508 | 508 | 23 | 13 |
| 5 | 609 | 609 | 31 | 8 |
| 6 | 612 | 612 | 40 | 9 |
201621123062《java程序设计》第五周作业总结的更多相关文章
- 201621123062《java程序设计》第九周作业总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 思维导图1:(对集合部分做了一些改动和细化) 思维导图2:(泛型) 1.2 选做:收集你认为有用的代码片段 代 ...
- 201521123025<java程序设计>第五周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...
- Java程序设计第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...
- 201521123027<java程序设计>第14周作业总结
1.本周作业总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2.书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己 ...
- Java ee第五周作业
Applet: Applet是采用Java编程语言编写的小应用程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同. 含有Applet的网页的HTML文件 ...
- Java第十五周作业
Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(int mont ...
- Java程序设计(五)作业
题目1:Lisa正在编写一个能够计算三科--数学.英语.程序设计基础--平均成绩(平均成绩=三科总成绩/3)和智育成绩(智育成绩=三科总成绩*0.7)的程序.由于两个成绩的获得都要先计算总成绩,因此她 ...
- 2017-2018-1 JAVA实验站 第四、五周作业
2017-2018-1 JAVA实验站 第四.五周作业 JAVA实验站小组成员 学号 名字 职务 20162318 张泰毓 组长 20162303 石亚鑫 组员 20162304 张浩林 组员 201 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第五周
java学习第五周心得体会 本周,是Java学习第五周,随着时间推移,随着课本内容的推进,我们接触到的程序也开始变得越来越复杂,不再是二三章那些用来练手的小程序了,这一点,在我们的例题运 ...
- 20175313 张黎仙《Java程序设计》第九周学习总结
目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...
随机推荐
- 页面jquery调试的一个宝贵经验(类似于Eclipse中的写出一个对象点它的方法时候用alt加/可以跳出来它所有的方法)
案例讲解 一,html片段 <div class="page-upload"> <div class="tab-wrapper2"> & ...
- 申请Jetbrain教育帐号,免费使用一年
JetBrains是一家捷克的软件开发公司.旗下IDE产品有(不限于):(1) IntelliJ,IDEA Java集成开发工具:(2) PHPStorm,PHP 集成开发工具:(3) PyChar ...
- Fragment加载方式与数据通信
一.加载方式 1. 静态加载 1.1 加载步骤 (1) 创建fragment:创建自定义Fragment类继承自Fragment类,同时将自定义Fragment类与Fragment视图绑定(将layo ...
- 第十一篇:Map/Reduce 工作机制分析 - 错误处理机制
前言 对于Hadoop集群来说,节点损坏是非常常见的现象. 而Hadoop一个很大的特点就是某个节点的损坏,不会影响到整个分布式任务的运行. 下面就来分析Hadoop平台是如何做到的. 硬件故障 硬件 ...
- jquery 实现拖动文件上传加进度条
通过对文件的拖动实现文件的上传,主要用到的是HTML5的ondrop事件,上传内容通道FormData传输: //进度条 <div class="parent-dlg" &g ...
- 【POI2001】【HDU1814】和平委员会
题面 Description 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...
- 机器学习-kNN
基于Peter Harrington所著<Machine Learning in Action> kNN,即k-NearestNeighbor算法,是一种最简单的分类算法,拿这个当机器学习 ...
- Delphi关于ADO控件的简单使用
控件:TAdoQuery.ADOConnection.TDataSource.TRzDBGrid 1.新建Vcl Form Application 2.在窗体上添加TADOConnection,设置连 ...
- Delphi子窗体随主窗体大小而变化
当然办法有很多种,我建议用TRzsplitter更好点, TRzsplitter分割,在其上边放置panel,然后把align置为alClient,则可以随着主窗体的大小而一起变动 选中此控件右键ed ...
- ubuntu中eclipse 不支持gbk编码问题解决办法
今天在ubuntu 下, 把Windows下工程导入Linux下Eclipse中,由于工程代码,是GBK编码,而Ubuntu默认不支持GBK编码,所以,要让Ubuntu支持GBK. 方法如下: 1.修 ...