zoukankan      html  css  js  c++  java
  • 20172330 2017-2018-1 《Java程序设计》第八周学习总结

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

    教材学习内容总结

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

    由继承实现多态性

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

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

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

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

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

    具体举例如下:

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

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

    代码托管

    上周考试错题总结

    • 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小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/linanlalala/p/8982099.html
Copyright © 2011-2022 走看看