20172330 2017-2018-1 《Java程序设计》第八周学习总结

时间:2023-02-21 22:34:55

学号 2017-2018-1 《程序设计与数据结构》第八周学习总结

教材学习内容总结

这一章主要是对多态性的学习:

由继承实现多态性

  • 多态性引用能够随时间变化指向不同类型的对象。
  • 对于多态性引用,方法调用与方法定义代码的绑定在运行时执行。
  • 一个引用变量可以指向有继承关系的任何类的任何对象。
  • 实际将调用的方法版本取决于对象的类型而不是引用变量的类型。
  • 多态性的实质是,每个类很清楚自己如何完成一个指定的行为,并且从某种意义说,每个类的行为都是相同的,多态制允许具有一致性但又独特的方式处理类似的对象。

    利用接口实现多口实现多态性

  • 接口名可以声明对象引用变量。
  • 一个接口引用变量可以指向实现该接口的任何类的任何对象。
  • 方法的参数可以是多态性的,,使得方法所接受的参数具有灵活性。
  • 以多态性方式实现的排序算法可对任何一组可比较的对象排序。
  • 学会使用排序法和插入法。
  • 多态性允许用一致性的方法实现不一致的行为。
  • 学会使用线性搜索和二分搜索。

教材学习中的问题和解决过程

  • 问题1:排序算法的比较
  • 问题1解决方案:如书上所说,选择法排序和插入法排序实质上有同等的效率。但是选择法排序容易理解,大多数情况下能满足需求,并且每个值一次性准确的移动到自己的最终位置,所以优于插入法。
    20172330 2017-2018-1 《Java程序设计》第八周学习总结

具体举例如下:

使用选择和插入排序法,写出第3次排序的结果:3  1 9  3 6 2 10 
选择排序法:
                   1 2 3 9 6 3 10

插入排序法:
                   1 3  3 9 6 2 10。
  • 问题2: 搜索当方法的比较
  • 问题2解决方案:就搜索方法而言,二分法远比线性搜索的效率高,但二分搜索要求数据已经经过排序。
    如果数据排序相对容易或者数据的搜索量非常大,则使用二分搜索较合适,但是线性搜索的实现相当简单,若长远的看守所的效率不是重要问题时,线性搜索则可能是最佳的选择。
    线性查找可以针对任何数组,将数组中的每项依次遍历出来之后,与所要查找项对比。
    消耗时间也是不规律的,可能查找项处于数组的第一位,也可能处于数组的最后一位。还有可能数组中完全不存在需要查找的项目。

二分查找法,针对有序数组使用。
因为数组已经有序排列,可以通过将数组从中间分割,将中间项与所需查找项对比;然后再根据对比结果,再次向上或者向下,寻找中间项对比,直至完成查找。
而且,对于查找最开始,可以通过与第一项和最末项的对比,确定查找项是否处于此数组中。

代码托管

20172330 2017-2018-1 《Java程序设计》第八周学习总结

上周考试错题总结

  • 1.All classes in Java are directly or indirectly subclasses of the ________ class.
    A Wrapper
    B String
    C Reference
    D this
    E Object
    分析:Java要求所有类都有父类。如果一个类不扩展另一个类,那么它在默认情况下扩展了对象类。对象类是Java中其他类的父类或父类。所以obiect是作为其他类的父类的。

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 图片和文字相结合,方便理解。
    • 增加了博客中的目录,方便查看,同时样式进行了更新,显得更加美观
    • 阅读了许多资料,使得博客更有说服力。
  • 代码中值得学习的或问题:
    • 我两在做本周的四则运算中,严域俊同学就编写题目输出花费了大量时间,和我也讨论了许多编写类的方法,这种共同协作的态度我们以后一定会继续加强。
    • commit依旧很详细,有条理性。

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172333
    • 结对学习内容
      • 学习第十章pp项目。
      • 学习继承的具体内容
      • 一起做四则运算的的项目。

其他(感悟、思考等,可选)

这一周在做课后项目时问题不大,但是在做是四则运算的编写时遇到了很多问题,需要继续努力研究。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 180/180 2/2 20/25
第二周 312/414 2/4 20/45
第三周 557/971 1/5 25/70
第四周 1217/2242 2/7 44/114
第五周 734/2976 1/8 24/138
第六周 523/3509 1/9 20/158
第七周 697/4206 1/10 24/182
第八周 1118/5324 3/113 30/212

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:20小时

  • 实际学习时间:24小时

  • 改进情况:

这周对于课后练习做的没有那么吃力,但还是存在一些对于类的编写的问题,希望继续加油。

参考资料