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

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

教材学习内容总结

  • 多态是一种后期绑定,也叫做动态绑定
  • 实现多态的两种方法
    1. 由继承实现多态性
    2. 由接口实现多态性
  • 排序的两种方法(两种算法执行的比较操作次数相同,但选择排序法所执行的交换操作的次数更少,因此选择法由于插入法)
    1. 选择排序法
    2. 插入排序法
  • 搜索的两种方法(二分法搜索的效率远比线性搜索的效率高,但因为需要事先排序,所以选择取决于具体条件)
    1. 线性搜索(不需要先排序)
    2. 二分法搜索(需要先排序)

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

  • 问题1:前期绑定后后期绑定的区别
  • 问题1解决方案:绑定分为静态绑定(前期绑定)和动态绑定(后期绑定);

<1>前期绑定就是说在编译过程中就已经知道这个方法到底是哪个类中的方法,此时由编译器或其它连接程序实现。java当中的方法只有final,static,private和构造方法是前期绑定。

<2>后期绑定是在运行时根据具体对象的类型进行绑定。动态绑定的过程:

  1. 虚拟机提取对象的实际类型的方法表;
  2. 虚拟机搜索方法签名;
  3. 调用方法。
  • 问题2:在例题10.7中
  public void addHours(int moreHours)
    {
        hoursWorked += moreHours;
    }

public double pay()
    {
        double payment = payRate * hoursWorked;

        hoursWorked = 0;

        return payment;
    }

为什么在pay方法里hoursWorked又重新赋值为0了?

  • 问题2解决方案:此处的hoursWorked是计算完一个人的工作时间后,将时间归0后再去计算另一个人的工作时间。
  • 问题3:
 found = (Contact) Searching.linearSearch(friends, test);

中两个括号的区别

  • 问题3解决方案:前面的括号中指的是需要调用的方法所在的类,后面那个括号里是进行线性搜索所需要的比较目标和比较列表。
  • 问题4:如何交换两个变量的位置
  • 问题4解决方案:设计一个temp临时保存变量,使两个数组里的数值进行交换

代码调试中的问题和解决过程

  • 问题1:pp10.1的接口位置应该放在哪里
  • 问题1解决方案:开始放在了Firm的位置,这样的话就需要在Firm中重写payable方法,实际上不应该对Firm有改动,该将接口放置于Staff类中。
  • 问题2:在vm虚拟机中无法上传Sorting2,提示Sorting2.java使用了未经检查或不安全的操作。
  • 问题2解决方案:没有想到解决方案,导致我驱动类也不能编译,所以也没有办法上传...
  • 问题3:pp10.5时遇到较大问题,审题时看到说DVD按名字排序,所以就没有考虑导演,就觉得导演可以没有必要出现,但是这样的结果就是
  • 问题3解决方案:原来导演真的没有必要出现!我出现错误提示的原因是不需要if了,有if就需要else,又没有给result赋值,就找不到返回值了

代码托管


(statistics.sh脚本的运行结果截图)

上周考试错题总结

  1. Which of the following is true regarding Java classes?
    A . All classes must have 1 parent but may have any number of children (derived or extended) classes
    B . All classes must have 1 child (derived or extended) class but may have any number of parent classes
    C . All classes must have 1 parent class and may have a single child (derived or extended) class
    D . All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes
    E . All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
    所有类的父类都是Object,但是object类比较特殊…他是自己的爹。‎java 支持继承, 但不是多个继承, 因此 java 类可以有任意数量的子级, 但只有一个父项。此外, 由于所有 java 类都直接或间接从对象类继承。

  2. 声明为一个类的变量稍后可以引用该类的扩展类。此变量称为‎
    A . protected
    B . derivable
    C . cloneable
    D . ‎多 态 性‎
    E . none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class

  3. Which of the following is not a method of the Object class?
    A . clone
    B . compareTo
    C . equals
    D . toString
    E . all of the above are methods of the Object class
    看错题目了,没有看到not😅

  4. Using the reserved word, super, one can
    A . access a parent class'constructor(s)
    B . access a parent class'methods and instance data
    C . access a child class'constructor(s)
    D . access a child class'methods and instance data
    E . both A and B is right
    用super()访问父类的构造函数,用super.方法名调用父类的方法。C和D用this。

  5. 您可以使用超级保留字访问父类的私有成员。
    A . true
    B . false
    超级将允许访问父类的所有非私有成员, 而不是私有的。

结对及互评

点评模板:

  • 博客中值得学习的或问题:

    • 这位同学总能在别人的博客里找到很通俗易懂的形容,

  • 找到的问题都很典型,解决方法也写得很详细

  • 错题理解很理解

  • 代码中值得学习的或问题:

    • 看得我有点知其然不知其所以然...可能是因为我还不是小机灵鬼吧
  • 基于评分标准,我给本博客打分:14 。得分情况如下:

  1. 正确使用Markdown语法(加1分)
  2. 模板中的要素齐全(加1分)
  3. 教材学习中的问题和解决过程, 加4分
  4. 代码调试中的问题和解决过程, 加4分
  5. 本周有效代码超过300分行,加2分
  6. 其他加分,加2分
  • 排版精美的加一分
  • 进度条中记录学习时间与改进情况的加1分

点评过的同学博客和代码

  • 本周结对学习情况
    • 21号
    • 结对学习内容
      • 四则运算第一则-思考则
      • 讨论了第十章遇到的各种问题
      • 对教材的学习有相互帮助

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/2 20/20
第二周 329/500 2/3 18/38
第三周 619/1000 2/5 22/60
第四周 817/1734 2/7 38/98
第五周 674/2408 1/9 30/128
第六周 1136/2870 2/10 30/158
第七周 1000/3791 1/11 32/190
第八周 2662/6453 2/13 48/238

参考资料

posted @ 2018-05-02 20:15  amberR  阅读(187)  评论(7编辑  收藏  举报
/*头部导航栏*/ #navigator { font-size:15px; border-bottom: 1px solid #ededed; border-top: 1px solid #ededed; height: 60px;/*导航栏高度,原始50*/ clear: both; margin-top: 25px; } /*导航栏设置,可以自定义导航栏的目录*/ #navList { min-height: 35px; float: left; } #navList li { /*每一个栏目节点*/ float: left; margin: 0 5px 0 0; /*这里原来是0 40px 0 0 */ } #navList a { /*栏目文字的格式*/ display: block; width: 5em; height: 22px; float: left; text-align: center; padding-top: 19px; }