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

教材学习内容总结

object类:所有Java类都直接或间接地由object类派生。(Java的每一个类都继承toString和equals方法)
继承主要表达的是“是”这个关系。子类是父类的一个更具体的类。
super用来调用父类的构造方法。
对于层次结构,我觉得就是将共用性强的类提高在较高的层次,这样引用的时候,更加的方便。同时,应知道Object类是没有父类的。

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

  • 问题1:子类是否可以重写父类的所有方法。
  • 问题1解决方案:构造方法时一个特殊的方法,与类名相同,但是没有返回类型。如果试图重写父类的构造方法,将会产生语法错误,因为除了构造方法之外的所有方法都必须有返回类型。
  • 问题2:为什么抽象类不包含抽象代码
  • 问题2解决方案:抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。对于抽象方法,一定要用public abstract修饰抽象方法,而privateprotected不可以。如果一个类中有抽象方法,那么这个类一定是抽象类。

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

  • 问题1:Juint出现错误
  • 问题1解决方案:点击小灯泡,选择给出的方案中最便捷的一项
  • 问题2:没有输入ToString
  • 问题2解决方案:结果会输出一串代码,这个是地址,加入ToString输出结果
  • 问题3:代码中出现中文,输出会有乱码。
  • 问题3的解决方案:选择GBK

代码托管

上周考试错题总结

  • 错题1
    An example of passing message to a String where the message has a String parameter would occur in which of the following messages?
    A .length
    B .substring
    C .equals
    D .toUpperCase
    E .none of the above, it is not possible to pass a String as a parameter in a message to a String
    解析: 长度和toUpperCase消息没有参数,子字符串有两个int参数。对于等于,必须将字符串作为参数传递,以便将接收消息的字符串与作为参数传递的字符串进行比较。
  • 错题2
    Consider a method defined with the header: public void doublefoo(double x). Which of the following method calls is legal?
    A .doublefoo(0);
    B .doublefoo(0.555);
    C .doublefoo(0.1 + 0.2);
    D .doublefoo(0.1, 0.2);
    E .all of the above are legal except for D
    正确答案: E 你的答案: D
    解析:在A的情况下,0(一个int)的值被加宽到双倍。在C的情况下,执行生成0.3的加法,然后调用双foo。D中的参数列表是非法的,因为它包含两个双参数,而不是1。
  • 错题3
    In a UML diagram for a class
    A .classes are represented as rectangles
    B .there may be a section containing the name of the class
    C .there may be a section containing the attributes (data) of the class
    D .there may be a section containing the methods of the class
    E .all of the above
    正确答案: E 你的答案: B
    解析:这四个属性正确地描述了类的UML表示。
  • 错题4
    Visibility modifiers include
    A .public, private
    B .public, private, protected
    C .public, private, protected, final
    D .public, protected, final, static
    E .public, private, protected, static
    正确答案: B 你的答案: E
    解析:公共、私有、受保护的控制变量和方法的可见性。最终控制变量、方法或类是否可以进一步更改或重写不可见性。静态控制变量或方法是否与类的实例或类本身相关联。
  • 错题5
    What happens if you declare a class constructor to have a void return type?
    A .You'll likely receive a syntax error
    B .The program will compile with a warning, but you'll get a runtime error
    C .There's nothing wrong with declaring a constructor to be void
    D .The class' default constructor will be used instead of the one you're declaring
    E .None of the above
    正确答案: A 你的答案: D
    解析:声明任何类型的构造函数(甚至是void)都是违反语法的,因此您将收到一个语法错误。
  • 错题6
    The following method header definition will result in a syntax error: public void aMethod( );
    A .true
    B .false
    正确答案: A 你的答案: B
    解析:语法错误的原因是因为它以“;”符号结尾。相反,需要后面跟着{},括号中有0或更多的指令。抽象方法将以“;”结尾,但此标头并不定义抽象方法。
  • 错题7
    The interface of a class is based on those data instances and methods that are declared public.
    A .true
    B .false
    正确答案: A 你的答案: B
    解析:接口是外部代理与对象的交互方式。交互只能通过在类的定义中声明为公共的项来实现。
  • 错题8
    An object should be encapsulated in order to guard its data and methods from inappropriate access.
    A .true
    B .false
    正确答案: A 你的答案: B
    解析:封装是一种概念,即应该保护对象不被意外(或有目的)误用。
  • 错题9
    Accessors and mutators provide mechanisms for controlled access to a well-encapsulated class.
    A .true
    B .false
    正确答案: A 你的答案: B
    解析:访问器提供对否则无法访问的变量的读访问。变异器提供对其他不可访问变量的写访问。

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分)

  2. 模板中的要素齐全(加1分)

  3. 教材学习中的问题和解决过程, 3个问题加3分

  4. 代码调试中的问题和解决过程, 2个问题加2分

  5. 本周有效代码超过300分行的(加2分)

  6. 感想,体会不假大空的加1分

  7. 排版精美的加一分

  8. 进度条中记录学习时间与改进情况的加1分

  9. 有动手写新代码的加1分

  10. 课后选择题有验证的加1分

  11. 错题学习深入的加1分

  12. 点评认真,能指出博客和代码中的问题的加1分

  13. 结对学习情况真实可信的加1分

点评模板:

  • 博客中值得学习的或问题:
    博客书写规范;
    博客中的错题整理的规范

  • 代码中值得学习的或问题:
    代码增长量多,说明结对的同学这周很努力的在学习Java,我也要努力学习Java了

  • 基于评分标准,我给本博客打分:15分。

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182313
    • 结对学习内容
      编写自定义类,绘制UML类图,共同理解各种循环的异同之处,学习封装的基本概念并做一一些浅显的实践。
  • 上周博客互评情况

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 168/168 2/2 22/22
第二周 300/500 1/3 16/38
第三周 500/1000 2/5 22/60
第四周 605/1460 2/7
参考:软件工程软件的估计为什么这么难软件工程 估计方法
  • 计划学习时间:30小时

  • 实际学习时间:35小时

参考资料