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

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

教材学习内容总结

  1. 了解了在多态引用时的后绑定的概念。
  2. 学习练习如何利用继承方式来实现多态性。
  3. 学习练习如何利用接口来实现多态性。
  4. 初步学习算法,了解学习了两种对数组中的元素进行排序的方法。
  5. 了解学习了两种在一组元素中寻找一个指定的目标元素的方法。
  6. 初步学习判断何时使用多态性设计对问题进行解决,并体会利用多态性所带来的好处。

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

  • 问题1:在刚刚开始学习利用接口实现多态性的时候感觉很奇怪,因为在原来学习接口的时候的时候知道Java中的接口是一组常量和抽象方法的集合,接口不能被实例化。在看到树上的举例 Speak special() = new Philosopher();的时候感到很疑惑,不明白为什么接口可以被实例化。
  • 问题1解决方案:随着学习的深入后,了解到这里并不是对接口自己本身实例化,而是用于声明一个对象引用变量指向实现该接口的类的对象。
  • 问题2:在学习对一组元素进行排序的时候有这样一段代码
 public static void selectionSort(Comparable[] list) {
        int min;
        Comparable temp;

        for (int index = 0; index < list.length - 1; index++) {
            min = index;
            for (int scan = index + 1; scan < list.length; scan++)
                if (list[scan].compareTo(list[min]) < 0)
                    min = scan;

            // Swap the values
            temp = list[min];
            list[min] = list[index];
            list[index] = temp;
        }
    }
  • 这里的temp是一个Comparable类的对象,不明白为什么可以用list[min]对它进行赋值。
  • 问题2解决方案:对书本上的知识继续学习并结合蓝墨云上的视频学习后,这里的list数组是一个形式参数,而在传入的实际参数数组中保存的是一个个Contact对象,这里是利用了多态使得对象引用变量指向其他的对象。
  • 问题3:在开始学习二分搜索法的时候,看到书上给的示例,就想到如果待搜索的元素个数为偶数的话,就会有两个中点值,那么这个时候要怎么取中点?虽然书上后面也进行了解释,不是很理解书上想要表达的意思。
  • 问题3解决方案:王老师在上课的时候对该问题进行了解答,因为是取中点,所以对两个数取平均值在进行类型转换转换为int行,这时候小数部分就被忽略掉了,这也就是书上所说的取两个中点的第一个为新的中点。

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

  • 问题1:在做编程项目pp10.4的时候发现用两种方法进行排序得到的结果不一致。
  • 问题1解决方案:我检查了一遍算法的代码,因为是根据书上的例题进行改写的,所以我就把目光放到了测试代码上,经过仔细的检查后,发现在我进行第二次排序的时候传入的实际参数错了,对参数进行改正代码就可以成功运行了。
  • 问题2:在做编程项目pp10.5的时候运行代码的时候提示了Exception in thread "main" java.lang.NullPointerException
  • 问题2解决方案:一开始的时候我认为是由于我没有在Movies类中写排序的方法,我完成排序的操作是在测试时通过调用其他类的方法来完成的。我对代码进行了修改,可问题依旧没有得到解决。


  • 我实在是找不出有什么问题,只好求助于百度,找到了以下的解释。我开始按照这个思路来找我的问题所在,原来在书上的例题中有一段扩充数组容量的代码,由于数组初始化的大小是100,在进行排序的时候,数组并未全部储存元素,有一部分为空所以也就导致了我上面问题的发生,我对这一段代码修改成如下,问题得以解决。

代码托管

上周考试错题总结

  • 错题1: Inheritance through an extended (derived) class supports which of the following concepts?
    A . interfaces
    B . modulary
    C . information hiding
    D . code reuse
    E . correctness
  • 解析 通过扩展一个类并继承它,新类不必重新实现任何这些继承的方法或实例数据,从而节省了程序员的工作量。 因此,代码重用是为了您的需要扩展它而重用其他代码的好处。
  • 原因 呃...未理解好题目所想要表达的意思。
  • 错题2: Which of the following is an example of multiple inheritance?
    A . A computer can be a mainframe or a PC
    B . A PC can be a desktop or a laptop
    C . A laptop is both a PC and a portable device
    D . A portable device is a lightweight device
    E . Macintosh and IBM PC are both types of PCs
  • 解析 多重继承意味着一个给定的类继承了多个父类。 在上面列出的那些选项中,笔记本电脑继承了来自PC和便携式设备的特性。 A,B和E中的答案都是单个继承的例子,其中一个类至少有两个子类(在A中,计算机有儿童大型机和PC,B,PC有儿童台式机和笔记本电脑,E,PC有孩子Macintosh 和IBM PC)。 答案D表示一个类的属性。
  • 原因 对继承的概念理解混淆不清。
  • 错题3: A variable declared to be of one class can later reference an extended class of that class. This variable is known as
    A . protected
    B . derivable
    C . cloneable
    D . polymorphic
    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
  • 解析 多态意味着变量可以有多种形式。 在普通情况下,Java被强烈定义,即一旦声明为某个类型的变量永远不会变为不同的类型。 这是一个例外,多态变量可以是任何类型的派生类(尽管不是同时,变量可以从一种类型变为另一种类型)。
  • 原因 我以为这道题是想问变量前面要声明为什么类型,没有理解题意。
  • 错题4: If you instantiate an Abstract class, the class or object you wind up with
    A . is also an Abstract class
    B . is a normal class
    C . is an Interface
    D . is a reference to an Object
    E . can‘t exist you cannot instantiate an Abstract class
  • 解析 你只能实例化具体类而不是抽象类。 但是你可以扩展抽象类和接口。
  • 原因 我把提意理解成写抽象类的子类的类型是什么...(英语不好是硬伤)

结对及互评

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

    • 排版精美,对于问题研究得很细致,解答也很周全。
  • 代码中值得学习的或问题:
    • 代码写的很规范,思路很清晰,继续加油!

点评过的同学博客和代码

  • 本周结对学习情况

    • 20172332
    • 结对学习内容
      • 第10章 多态性

其他

感觉这周的学习任务相较与上周又有了一定的提升,学起起来也更困难,但同时也是我更加意识到Java的学习是通过不断的亲身实践和练习才能不断提高的,书本上的内容和老师上课所讲的不过是理论而已,只能辅助你学习,不能完全依赖上课听讲,死啃书本。同时,在这周的测试中我也意识到了一个问题,很多题目的错误都是由于我对题目的翻译不到位导致理解错了题意所以导致了错误,希望在以后的学习生活中能继续不断提高自己的英语能力。也希望自己能在以后通过努力不断进步!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 126 1/1 20/20
第二周 388/466 1/2 15/35
第三周 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五周 1126/3392 1/5 15/87
第六周 906/4298 1/6 20/107
第七周 1233/5531 1/7 20/127
第八周 1391/6922 1/8 24/151
  • 计划学习时间:24小时
  • 实际学习时间:24小时
  • 改进情况:
    开学也有将近半个学期了,虽然自己的学习状态相比于刚开学的时候有了一定的提升,但是相比于他人还是感到自己的学习时间不够多,学习态度不够端正,在以后的学习正活中多学Java,我爱Java,Java使我快乐,Java使我身心愉悦!

参考资料

原文地址:https://www.cnblogs.com/yu-kunpeng/p/8974172.html

时间: 2024-07-31 20:09:24

20172313 2017-2018-2 《程序设计与数据结构》第八周学习总结的相关文章

《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 图:图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的.与树的区别在于树中的一个结点只有一个前驱,也就是说只有一个父结点.但图中的顶点(结点)是没有这种限制关系的. 无向图:边为无需结点对的图.也就是说,现有两个顶点A.B.(A,B)与(B,A)效果相同.当两个顶点之间有边连接,也就是说这两个顶点是邻接的,也称作邻居.一个顶点

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

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

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

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

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

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

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

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

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

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In