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程序设计》第五周作业总结的更多相关文章

  1. 201621123062《java程序设计》第九周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 思维导图1:(对集合部分做了一些改动和细化) 思维导图2:(泛型) 1.2 选做:收集你认为有用的代码片段 代 ...

  2. 201521123025<java程序设计>第五周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  3. Java程序设计第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...

  4. 201521123027<java程序设计>第14周作业总结

    1.本周作业总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2.书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己 ...

  5. Java ee第五周作业

    Applet: Applet是采用Java编程语言编写的小应用程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同. 含有Applet的网页的HTML文件 ...

  6. Java第十五周作业

    Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(int mont ...

  7. Java程序设计(五)作业

    题目1:Lisa正在编写一个能够计算三科--数学.英语.程序设计基础--平均成绩(平均成绩=三科总成绩/3)和智育成绩(智育成绩=三科总成绩*0.7)的程序.由于两个成绩的获得都要先计算总成绩,因此她 ...

  8. 2017-2018-1 JAVA实验站 第四、五周作业

    2017-2018-1 JAVA实验站 第四.五周作业 JAVA实验站小组成员 学号 名字 职务 20162318 张泰毓 组长 20162303 石亚鑫 组员 20162304 张浩林 组员 201 ...

  9. 201671010140. 2016-2017-2 《Java程序设计》java学习第五周

    java学习第五周心得体会        本周,是Java学习第五周,随着时间推移,随着课本内容的推进,我们接触到的程序也开始变得越来越复杂,不再是二三章那些用来练手的小程序了,这一点,在我们的例题运 ...

  10. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

随机推荐

  1. java自带的类压缩和下载,以及递归删除动态的文件(shiro项目中来的十)

    详见项目,不用借助于任何外在的jar包,通过jre自带的实现.

  2. 前台序列化传过来的值,后台获取之后封装到map当中,让后在转化成json格式,最后在把json里面的参数里面的某一个值进行分割,最后在存到json格式的数据中去。

    一,html脚本 <script type="text/javascript"> $(function() { $(".btn-submit").c ...

  3. ajax就收data的参数

    一,变量 "data": ${cityData},//数据(必传) 二,json data:{"state":"Front"},

  4. 干货:JVM 堆内存和非堆内存

    堆和非堆内存 按照官方的说法:"Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的."" ...

  5. Docker学习——Lepus部署

    Lepus部署(基于docker)及mysql慢查询配置 介绍 Lepus是一个由Python+PHP开发的数据库企业级监控系统,可用于MySQL/Oracle/MongoDB/Redis 下载镜像 ...

  6. [BZOJ1610] [Usaco2008 Feb] Line连线游戏 (set)

    Description Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i ...

  7. Python中的栈溢出及解决办法

    1.递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示, ...

  8. Nginx负载均衡——扩展功能(NGINX Plus)

    本文主要是介绍了NGINX Plus的相关功能,横跨了NGINX Plus R5/R6/R7/R9等各个不同版本的更新. 什么是NGINX Plus? 顾名思义,就是Nginx的加强版或者扩展版.我们 ...

  9. 8Manage:聚焦研发企业利器——研发项目管理

    [导读]研发是企业保持核心竞争力的基石.那么对于研发企业来说,如何计划研发项目目标.保障项目的稳定运行,如何分配人才.资源,把控项目成本呢?这些一系列问题摆在管理者面前!引入8Manage研发项目管理 ...

  10. C++通过COM接口操作PPT

    一. 背景 在VS环境下,开发C++代码操作PPT,支持对PPT模板的修改.包括修改文本标签.图表.表格.满足大多数软件生成PPT报告的要求,先手工创建好PPT模板,在程序中修改模板数据. 二. 开发 ...