博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201621123053《Java程序设计》第五周学习笔记文章
阅读量:7049 次
发布时间:2019-06-28

本文共 2939 字,大约阅读时间需要 9 分钟。

1. 本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词

关键字:接口多态

1.2 尝试使用思维导图将这些关键词组织起来。注:思维导图一般不需要出现过多的字。

1123151-20171021123759349-1504812855.png

2. 书面作业

1. 面向对象设计大作业(团队项目,2-3人)

1.1 项目简介表格:

学生 负责任务 博客地址
张雨阳 购物车类,登陆类
李铎 商品类,用户类

1.2 系统常用功能框架图

1123151-20171021123946006-199725803.png

1.3 系统总体类图

1123151-20171021123957646-1909119189.png

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

1123151-20171021124130006-137503977.png

1123151-20171021124140834-890200023.png
1123151-20171021124151818-1377766159.png
1123151-20171021124316271-1573504215.png

1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。

  1. 修改了购物车类的方法和内容,定义了新的buy方法将购物车内的商品进行购买。
  2. 新建了登陆类,定义了登陆方法。
  3. 两个人一起完成效果事半功倍。但是该程序还是有很多bug,还需要继续认真学习,积极修改。

2. abstract:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢

  • 改造前,只能在控制台输入。改造后,使用了抽象类,可以在控制台或者对话框图形界面进行输入。
  • 改造后可以实现多态和继承,对于进行大程序的编写有很大优势。

2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。

  1. 当一个类中没有具体的方法的时候,它是一个非常抽象的概念,此时需要申明为abstract。这也解释了为何abstract的类可以实现继承。
  2. 当这个类有完整的方法时,就没有必要声明为abstract,直接实现即可。

2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。

答:变化的是类的声明方式和输入方式,以及生成的数(因为是随机的)。不变的是这个程序的作用(随机数游戏)。

3. Comparable与Comparator

3.1 结合PTA 7-1中你的代码说明,为什么某个类实现了Comparable接口,就可以直接使用Arrays.sort对该类型的数组进行排序?

  • 某个类实现了Comparable接口后,我们只需重写其中的compareTo()方法,让其在使用Arrays.sort()排序时能按照题意进行比较并排序。
  • 实现了Comparable接口后,因为在Comparable的源代码中有用于比较的compareTo()方法,我们只需重写这个方法,再用Arrays.sort(),就能得到我们想要的排序结果。

3.2 结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?

  • 在某个类实现实现Comparator接口后,我们可以重写Comparator接口中的compare()方法,写出class NameComparator implements Comparator<PersonSortable1>class AgeComparator implements Comparator<PersonSortable1>两种比较方式,再使用Arrays.sort(Arrays.sort(person,new NameComparator());)Arrays.sort(Arrays.sort(person,new AgeComparator());),按不同规则进行比较。
  • Comparator接口可以定义多种比较方式,而Comparable接口只能按一种规则进行比较。

3.3 以前的作业Shape, Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。

答:Sharp类中计算周长和面积的方法应申明为abstract,因为不同的图形其计算周长和面积方法是不同的,因此要定义成抽象类,以便子类继承后可以根据自身的形状的实现具体方法。

3.4 有很多Shape类型对象如Rectangle、Circle。希望使用Arrays.sort对他们进行排序,请写出相应代码。并简述应在哪个类上实现Comparable接口比较好?

  1. 在Shape上实现Comparable最好,因为其他的类都是继承Shape类的,只要在Shape类中重写compare()方法,子类都可以用。以下是部分代码和运行结果

    1123151-20171021124535771-684296188.png
    1123151-20171021124555631-2084754873.png
    1123151-20171021124617974-1000979042.png

  2. 我更喜欢用Comparator接口,因为这样可以通过两种排序进行比较,分别是通过面积大小和通过周长大小。以下是部分代码:

    1123151-20171021124649209-15560764.png
    1123151-20171021124716334-1973273924.png

3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。(注意:一定要结合自己编写的代码)

  1. 对于某个类,比如Shape,当我们需要进行比较排序时,我们需要定义它的Comparable接口,并重写compare()方法后,可以让所有子类都继承这个方法,而不用每一个子类都编写这样一个方法,那样太麻烦。
  2. 面向Comparable接口编程、面向父类编程的好处是:简化代码,更易读懂,更易操作。

4. 面向接口案例分析

阅读Case-StudentDao.zip案例

4.1 a.画出类关系图。b.StudentDao接口有什么用?

  1. 1123151-20171021124734990-142615412.png
  2. StudentDao接口定义了三种抽象方法:写入学生信息,读取学生信息,输出所有学生信息。

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何共同之处?有何区别?

  1. 相同点:都继承了StudentDao接口并实现了抽象方法。
  2. 不同点:StudenDaoListImpl使用ArrayList来存储学生信息,StudentDaoArrayImpl使用数组来存储学生信息。如图:
    1123151-20171021124806740-1312570432.png
    1123151-20171021124817193-2073989768.png

4.3 结合Test.java中的main函数,简述面向接口编程的好处。

  1. test中是定义了StudentDao接口,所以往后台写数据时,无需考虑后台是什么。
  2. 通过接口中的抽象方法,可以更清晰的分析代码的作用,而不需要在某一个方法上花费大量的时间。

5. 什么是面向接口编程?面向接口编程的好处是什么?

  1. 通过接口中的抽象方法,我们可以对不同的对象使用不同的实现方法来实现其抽象方法。而不是一个一个去定义。
  2. 简化了代码,使代码更易理解。
  3. 提高了各个系统直接的独立性,避免了一个bug需要修改整个系统的尴尬。

3.码云及PTA

题目集:面向对象2-进阶-多态接口内部类

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

1123151-20171021124835740-944208305.png

3.2 截图PTA题集完成情况图

需要有两张图(1. 排名图。2.PTA提交列表图)

1123151-20171021124840787-1841182002.png
1123151-20171021124857177-1113524036.png

3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 200 200 3 3
2 308 108 7 4
3 571 263 16 9
5 833 262 19 3
6 1241 408 27 8

转载于:https://www.cnblogs.com/ACmilan1899kaka/p/7704467.html

你可能感兴趣的文章
android listView嵌套gridview的使用心得
查看>>
[ES7] Descorator: evaluated & call order
查看>>
安卓动态调试七种武器之离别钩 – Hooking(上)
查看>>
从P6 EPPM 8 R3 到P6 EPPM 16 R1 有哪些改变?
查看>>
Android Studio2.0 教程从入门到精通Windows版 - 安装篇
查看>>
Linux 系统磁盘满处理方法
查看>>
Java HashMap Demo
查看>>
yaml官方介绍
查看>>
three.js模型
查看>>
网络流24题 餐巾计划问题
查看>>
基于 Android NDK 的学习之旅-----序言
查看>>
asio制作使用ssl通信的证书
查看>>
.Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加
查看>>
一款MVC5+EF+Bootstrap搭建的后台通用管理系统模板
查看>>
Java使用reids,以及redis与shiro集成
查看>>
zyupload四种不同的PHP上传demo
查看>>
好的博客网站收藏
查看>>
数字转IP地址函数
查看>>
glibc 各版本发布时间以及内核默认glibc版本
查看>>
ASP.NET SignalR2持久连接层解析
查看>>