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

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

教材学习内容总结

本周内容主要为书的9.1-9.5的内容

  • 第九章

    1.子类和父类的关系、抽象类php

    2.保留字super和可见性修饰符protectedhtml

    3.类的层次结构及继承方式java

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

  • 问题1:保留字super和可见性修饰符protected
  • 问题1解决方案:针对super的做用,一直没有理解究竟是什么意思,调用父类的构造方法,有什么做用,父类的构造方法内包含的参数,在子类的构造方法内去建立不也是能够的么?可是,经过在打PP9.3的例子,发现本身经过编写ReadMaterial父类和novel等五个子类的过程发现,super在实际编写过程当中的简便,针对和父类构造方法中相同的参数,能够省去很大一部分去编写相关的方法,经过继承的方式就能够,并且这样的调用构造方法,省去了很多力气。很大程度上的细化了父类方法,使子类有更强的针对性。==比如生物界的分类同样,把各类各样的生物分为域、界、门、纲、目、科、属、种,层层细化,域比如是最最原始的父类,不断经过继承细化父类的方法、扩充父类的方法,成为一个继承一个的子类。==可见性修饰符protected是一种不一样于可见性修饰符public和private的独特一种。git

    • 使用super引用能够调用父类的构造方法。
    • 当一个变量或方法声明为protected可见性时,子类就能够引用它,而且使父类保持了必定的封装性。protected可见性时的封装性不如private可见性严格,但比public可见性更强。
  • 问题2:父类和子类
  • 问题2的解决方案:父类和子类的关系是一种经过继承来实现的一种更细化的子类,基于父类实现的一种“扩充”,就像我在上一个问题中说的那样,经过一个个继承的方式不断“扩充”子类使其方法不断的细化,不断的贴近具体的目标。省去了对于父类和子类的共同方法,能够避免重复。程序员

  • 问题3:抽象类和接口
  • 问题3的解决方案:抽象类与接口的问题,理解的并非很深入。web

    • 在面向对象的概念中,咱们知道全部的对象都是经过类来描绘的,可是反过来却不是这样。并非全部的类都是用来描绘对象的,若是一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类每每用来表征咱们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不一样,可是本质上相同的具体概念的抽象。
    • 不一样点:抽象类能够含非抽象的方法和常量、数据。
    • 相同点:二者都不能实例化。

    问题4:类的层次结构及继承方式
    问题4的解决方案:所谓类的层次结构就是类的不断继承,不断发展,可是类的继承是单向的,因此父类是一个简单的,相同性方法的一个集合。经过一个又一个的子类不断实现具体化(终于体会到面向对象的简便)。类的继承方式,通俗点说就是用extends链接父类和子类,用于子类的继承(简简单单的一个单词就能够把有共同特征的内容仅写一遍就能够了。)编程

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

  • 问题1:PP9.1
  • 问题1解决方案: 这个编程项目的要求是要在第五章的Coin类上进行派生,可是对于Coin类的理解,它只不过是返回为硬币的正面或反面,可是本题的要求是要返回硬币的面值,那么“面值”到底是什么意思?是指硬币的正面和反面,仍是硬币所表明的价值。蓝墨云班课答疑内,赵乾宸同窗的提问中,被断定为是正面和反面,可是我更倾向于返回的面值,因此我在继承父类方法后,进行修改父类的flip方法,进行重写方法,对于父类中原有的方法进行改写。在改写的同时我又进行了NumberFormat类的添加,使其输出的面值带有人民币符号。(可能与老师的要求有些相违背,可是在大方向上仍是一致的。)
    数组

  • 问题2:PP9.3
  • 问题2解决方案:针对9.3的编写,自我感受没有什么太大的问题,就是要编写一堆的类,经过继承达到符合题意。因此这就要在编写以前要进行伪代码的编写:
    阅读材料的共有属性:书页数、做者(主编)、书的类型等几方面。经过UML的建模,进行了简单的构图进行表示。同时,我在针对不一样的子类进行了不一样的方法扩充、构造方法内参数的添加,进行更具体的表述。 经过这些子类的编写,更加感觉到面向对象的开发到底是什么意思了,就像个人初中数学老师说“数学来源生活,又高于生活。”java语言是服务于人类的一种高级语言,存在的意义就是便利生活中的繁杂事情,就像这道题目同样,感受在此基础上进行一部分的修饰和改写,就能够造成一个图书馆丛书的信息管理,经过输入输出就能够把丛书进行整理与规划。数据结构

  • books子类中进行是否带有图片或拼音,进行判断适合的人群读此书
  • magazine子类中增添杂志内文章数量的参数
  • definitions子类中增添学术刊物发表范围、学术学科,经过发行范围是国家仍是全球进行判断该学术刊物的影响力及可信度、价值等
  • novel子类进行添加做者的国籍
  • textbook子类进行单元的计数、丛书适合的学习科目,什么语文、数学、天然等。
  • 用UML表述的PP9.3
  • 小说
  • 图书
  • 杂志
  • 学术刊物
  • 课本

代码托管

上周考试错题总结

  • 错题1:The "off-by-one" error associated with arrays arises because(与数组相关的“逐一个”错误出现是由于)oop

    • A.the first array index is 0 and programmers may start at index 1, or may use a loop that goes one index too far(数组索引是0,程序员能够从索引1开始,也可使用一个索引过远的循环。)

    • B.the last array index is at length + 1 and loops may only iterate to length, missing one

    • C.the last array element ends at length - 1 and loops may go one too far

    • D.programmers write a loop that goes from 0 to length - 1 whereas the array actually goes from 1 to length

    • E.none of the above, the "off-by-one" error has nothing to do with arrays
    • 错误解析:数组被初始化为= new type[x],其中x是数组的大小数组内存放的长度。然而,该数组的索引为0到x - 1,所以,程序员的off-by-one的问题是由于程序员将编写代码来尝试访问索引1到x,所谓的边界检查就是数组的长度与索引值之间的差1进行的检查。

  • 错题2:if a and b are both int arrays, then a = b; will(若是a和b都是int数组,那么a = b;

    • A.create an alias(建立一个别名)

    • B.copy all elements of b into a

    • C.copy the 0th element of b into the 0th element of a

    • D.return true if each corresponding element of b is equal to each corresponding element of a (that is, a[0] is equal to b[0], a[1] is equal to b[1] and so forth) and return false otherwise

    • E.return true if a and b are aliases and return false otherwise
    • 错误解析:针对这道题,我在作的时候有点蒙,因此在百度上进行搜索,查到一个博客的内容就是针对此题的,经过对博客的快速理解,我认为我应该选择B,可是却错误了。经过解析:“=”是一个赋值运算符。若是两个变量都是原语,比左边的变量副本右边变量(若是a和b是int值,b = 5,而后将成为5)。然而,由于a和b是数组的引用变量设置为参考变量b,致使a和b都引用同一个数组在内存中,或者他们如今彼此的别名。是第三章的别名的知识点,就像书中所示图例同样,相互成为别名,指向相同的地址、相同的对象。

  • 错题3:A Java main method uses the parameter (String[ ] variable) so that a user can run the program and supply "command-line" parameters. Since the parameter is a String array, however, the user does not have to supply any parameters.(Java主方法使用参数(String[] variable),以便用户能够运行程序并提供“命令行”参数。因为参数是一个字符串数组,所以用户没必要提供任何参数。)
    • A.true

    • B.false
    • 错误解析:主方法须要参数,以防程序员但愿容许用户提供命令行参数。在java命令以后,在命令行输入的任何内容都将被接受为命令行参数。若是是由空格分隔的几个单词,那么每一个单词都做为一个单独的字符串数组元素存储。例如,“java foo。class hi there“将在variable[0]中存储“hi”,variable[1]中存储“there”以供程序使用。

  • 错题4:So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It's only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.(要只访问ArrayList的元素,它的效率与数组的效率差很少。只有开始在ArrayList的前部分插入或移除元素时,它的效率才会恶化。)
    • A.true

    • B.false
    • 错误解析:ArrayList是做为数组实现的,只要其中一个只是访问ArrayList的元素,效率与数组的效率是同样的。可是,当对ArrayList的前部分进行插入或删除时,就会发生大量的元素复制,从而下降其效率。

  • 本章内容相对易于理解,对数组的理解掌握的也比较好,明显比上次考试考的顺手,可是也有几道题作错,说明仍是有书上内容没看到位的地方。对于错误4的问题想到了ArrayList类是以数组的形式进行存储的,可是对于“效率”的问题就没有意识上去,仍是本身仅仅局限于表面,没有细探究其中内容致使的。

结对与互评

点评(方艺雯)

  • 博客中值得学习的或问题:
    • 问题和详细的解答、同时在博客开头位置进行了各类的概念的解释,有助于对本章的理解。
    • 截图特别详细,可是不多见到用IDEA进行的截图,因此建议下次使用IDEA,你会发现那个会好用的。
    • 博客排版仍相对单调,方艺雯--<span style="color:颜色">方艺雯--<font face="STCAIYUN">均可以成为增添博客亮点的方式
  • 代码中值得学习的或问题:
    • commit的提交粒度详细,会一直向你学习的。
    • 代码写的规范、并且针对错误代码有深入的认识和独到的理解,特别是虚拟机和IDEA 之间的运行同种代码出现的“\t”问题。
  • 基于评分标准,我给本博客打分:15分。

  • 得分状况以下: - 正确使用Markdown语法(加1分)
    • 模板中的要素齐全(加1分)
    • 教材学习中的问题和解决过程, 五个问题加5分
    • 代码调试中的问题和解决过程, 四个问题加4分
    • 感想,体会不假大空的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 代码规范加1分
    • 有动手写新代码的加1分

      点评(王禹涵)

  • 博客中值得学习的或问题:
    • 截图不是很全面,但愿下次能够改正。
    • 博客排版相对单调,与以前的风格相比,开始走下坡路(喜欢之前的风格)。
  • 代码中值得学习的或问题:
    • 建议能够更详细的写一些代码出现的问题。
    • 问题4的内容有些问题,建议修改一下。
  • 基于评分标准,我给本博客打分:9分。

  • 得分状况以下: - 正确使用Markdown语法(加1分)
    • 模板中的要素齐全(加1分)
    • 教材学习中的问题和解决过程, 两个问题加2分
    • 代码调试中的问题和解决过程, 四个问题加4分
    • 感想,体会不假大空的加1分
    • 代码规范加1分

互评对象

  • 本周结对学习状况
    • 20172304方艺雯
    • 20172323王禹涵

    • 结对学习内容
      • 第九章(继承的问题)
        • 1.子类和父类的关系、抽象类

        • 2.保留字super和可见性修饰符protected

        • 3.类的层次结构及继承方式

感悟

第九章的内容是基于第四章和第七章继续讲解如何自创类、更简便的使用类,经过继承的方式,能够把相同特征的有关方法进行集中做为父类,可是经过本周的编写也发现本身在类的编写方面有很大不足,对于简单的能够很清晰编写成功,可是对于有些复杂的就不得不写写伪代码、照着书上的例子进行敲码。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 136/136 1/1 15/15
第二周 570/706 1/2 20/35
第三周 613/1319 1/3 23/58
第四周 1249/2568 1/5 30/88
第五周 904/3472 1/6 30/118
第六周 540/4012 1/7 30/118
第七周 826/4838 1/7 30/178

参考资料

相关文章
相关标签/搜索