20182308 2019-2020-1 《程序设计与数据结构》第6周学习总结

学号 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

教材学习内容总结

将此二章的内容与前面的继承内容相结合,更加深入了解了接口作为一种特殊的继承方法的作用。
接口是抽象方法,不能拿来实例化,不过可以拿去声明对象并引用变量。
继承也同样适用于接口,所以接口也同样可以衍生出新的接口。

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

  • 问题1:什么是多态,它和继承有什么关系,多态是怎么靠接口来实现的?
  • 问题1解决方案:根据课本第246页的说法,多态引用就是说一个在不同时刻可以指向不同类型对象的引用变量。而多态引用常用的两种办法就是继承或接口。接口通过创建抽象变量,在别的类中implement这些抽象类,使得这些没有被实例化、也不能被实例化的类用以引用类中,进行实例化。
  • 问题2:第十章中的异常讲述的目的是什么,什么叫捕获异常,捕获异常在运行中的意义是什么?
  • 问题2解决方案:这一章的主要内容并不是介绍各种类型的错误,而是说如何去解决程序中的错误;不是在编辑代码的时候去解决错误,而是在代码运行的时候让程序去自己消化错误。同时借着这一章的内容,我们花了不少的时间消化I/O的内容。

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

  • 问题1:在敲实践代码的时候,出现了write无法把计算结果写入文件的问题,运用其他方法也不行。
  • 问题1解决方案:最终我采取了写入缓冲区的办法,但是根据老师给的那个代码FileTest,只能把一个String数据类型的变量写入文件。于是我要把计算得出的结果从int型转换成String。最便利的方法就是另外创一个toString方法,把int返回为String类型会极大带来方便。
  • 问题2:在敲课后代码的过程中,不知如何结束程序(PP10.2)。
  • 问题2解决方案:思路来自于课本例题。根据程序功能,需要多次输入,也就是说可以利用循环、判断是否等值的方式来结束循环并退出程序。因此我将程序改为了While循环,并且在判断头处判断“该语句是否是Done”,大体思路是和课本例题比较接近的。

代码托管

上周考试错题总结

  • 错题1及原因,理解情况
    Which of the following lists of numbers would accurately show the array {9,4,12,2,6,8,18} after the first pass through the Selection Sort algorithm?
    A .9, 4, 12, 2, 6, 8, 18
    B .4, 9, 12, 2, 6, 8, 18
    C .2, 4, 12, 9, 6, 8, 18
    D .2, 4, 6, 8, 9, 12, 18
    E .2, 4, 9, 12, 6, 8, 18
    错解:A 正解:C
    答错原因:没有理解题干中说的那个方法究竟是什么。事实上这个排序方法的涵义是,从第一个数字开始(也就是数列的第零位)往后找,找出第一个没有排序的(比如在选项C中,12的大小显然不应该居于4和9之间)并且比第一个数大的数字,交换位置。

  • 错题2及原因,理解情况
    We compare sorting algorithms by examining
    A .the number of instructions executed by the sorting algorithm
    B .the number of instructions in the algorithm itself (its length)
    C .the types of loops used in the sorting algorithm
    D .the amount of memory space required by the algorithm
    E .whether the resulting array is completely sorted or only partially sorted
    错解:E 正解:A
    答错原因:执行时,不同的排序算法需要不同数量的指令。例如,选择排序通常比插入排序需要更多的指令。因此,我们将排序算法通过每个算法对数组进行排序所需的指令数进行比较。我们可能会计算排序算法在最坏的情况下将执行的最大指令数,或在最佳情况下的最小数目,或者平均计算已执行的指令数。如果两种排序算法需要大致相同数量的指令来对数组进行排序,则我们可能还会检查所需的内存空间量。

  • 错题3及原因,理解情况
    Which statement is completely true?
    A .Java upcasts automatically, but you must explicitly downcast
    B .Java downcasts automatically, but you must explicitly upcast
    C .Java expects the user to explicitly upcast and downcast
    D .Java will both upcast and downcast automatically
    E .The rules for upcasting and downcasting depend upon whether classes are declared public, protected, or private
    错解:E 正解:A
    答错原因:缺乏把实践经验总结起来的意识。事实上每一次敲代码的时候,每次我改最上面的一个实例化变量的变量名的时候,只要按一次自动纠错,下面的所有变量名都会变成我改后的那个名字。这是题目解析给出的介绍——上载是完全安全的,它是Java支持的单一继承结构的产物。相比之下,向下转换必须由程序员明确完成。Java只会自动向上投射一个方向。向上和向下转换的规则不取决于所使用的可见性修饰符。

  • 错题4及原因,理解情况
    Can a program exhibit polymorphism if it only implements early binding?
    A .Yes, because one form of polymorphism is overloading
    B .No, because without late binding polymorphism cannot be supported
    C .Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism
    D .Yes, because early binding has nothing to do with polymorphism
    E .none of the above
    错解:C 正解:A
    答错原因:这是一个概念疏漏。解析的分析是这样的:尽管继承和接口支持多态,但只有在绑定较晚时才支持。但是,重载是一种多态性(方法)名称的形式,它是多个主体,因此只要程序使用重载,就会使用多态性。

点评过的同学博客和代码

  • 本周结对学习情况

    • 20182312
    • 结对学习内容
      • 花了大概两个小时的时间沟通实践六的相关内容:如何读取文件中的数据,又要需要进行怎么样的计算可以既符合题目要求,又实现代码的最简化。同时在计算得到结果之后,又要怎么样才能够把得到的
        数据放回到文件去。
  • 上周博客互评情况

其他

1、这一周的学习任务主要是比较过渡性的、带有扫尾性质的对于I/O的实践。在未来的安卓环境的程序开发当中,客户端、服务器是必然要分离的,为此我们就必须要在IDEA学习Java代码的当下能够习惯于这种客户端与服务器分离、需要进行两个端口之间的输入和输出操作。我们两个相关内容的实践虽然是分开进行的,但是我们应该去尝试着整合操作。
2、在平时测试成绩远远落后于别人的当下,要想瞬间在分数上超上其他同学是不可能的、在接下来的测试中遥遥领先的可能性也是几乎不存在的。为此我只能更加认真对待博客:为规避和减少不擅长做Markdown和UML视图带来的分数损失,决定将增加敲代码的时间,尽力地把课本中的代码和课后习题的代码思路对接上。也许这才是课本学习能够为我的整个代码学习带来的最有用的东西。同时敲了课本例题的代码之后才会发现这些代码和课后习题的相通之处,可见要想搞懂课后习题的代码做法必须要好好敲一遍例题代码,否则就连其他同学的代码也完全看不懂。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 6000行 30篇 400小时
第一周 101/101 2/2 23/23 了解了一些Linux系统操作入门、学会了基本的JDB调试操作
第二、三周 353/441 3/5 42/67 能够基本记住Java代码编程中的格式代码。了解了一些有关方法的特殊命令(比如substring)。了解了一些有关类的基本知识。
第四周 327/768 2/7 28/95 基本已经适应IDEA的基本功能
第五周 807/1575 2/9 17/112 基本能够理解继承的作用和用法,初步了解了接口的代码原理,能够正确分析优秀同学的代码思路
第六周 1015/2590 1/10 22/134
  • 计划学习时间:25小时

  • 实际学习时间:22小时

  • 改进情况:开始尝试完全自己独立思考、整理思路,根据有限的资源敲完全自己构思的代码。必要的放弃效率也有利于自己的提升。

参考资料

posted on 2019-10-15 21:54  20182308hlh  阅读(181)  评论(2编辑  收藏  举报

导航