《数据结构与面向对象程序设计》第4周学习总结

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

教材学习内容总结

  • 学会使用单元测试进行测试代码。
  • 学会TDD代码测试。
  • 学会是使用编写类,用public、void等编写,调用类的方法进行运算。
  • 学习类与类的关系,继承,聚合,关联等等,来厘清关系。
  • 学习UML图,设定方法、类、数据。
  • 学会方法调用和包装方法的使用。
  • 学会类与类的继承,还有接口的选择。

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

  • 问题1:在编写类时用总类下又定义了一个public来定义一个变量,后来在另一个类中引用这个方法,却没有用到这个变量产生的变化
  • 问题1解决方案:在类中设置使用变量时,会有封装问题和归类问题,在类之下的方法中定义的变量无法在其他方法中使用。
  • 问题2:用强制封装private设定变量,后面无法调用。
  • 问题2解决方案:public是公共封装封装,private是私有封装,而可见性保护protected才是不死有情况下恰当封装。
  • 问题3:使用枚举类时按照书上的操作cone3.NAME进行调用,但是发现无法输出。
  • 问题3解决方法:在声明后,在计算机内部每一个枚举类型都保存为一个整数值,所以我一卡使用double类型声明,且使用小数会损失数据。

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

  • 问题1:在编译时发现找不到类的错误。
  • 问题1解决方案:我在编写时将setpogyrightdate自己设定的方法当作类进行运算,所以找不到类
  • 问题2:在编写接口时定义接口后,再用一个链接接口的类的子类去调用发现出现无法调用的情况。
  • 问题2解决方案:接口引用可以指向实现这个接口的任意类的任何对象,继承可以使用接口。但是我没有声明使用的是接口。
  • 问题3:在编写类时,使用toString输出return变量时发现不符合自减运算的结果。《数据结构与面向对象程序设计》第4周学习总结_第1张图片

  • 问题3解决方法:直接使用自动生成的toString代码,应该用条件运算符卡一下。

代码托管

https://gitee.com/besti1823/20182329lyz.git
《数据结构与面向对象程序设计》第4周学习总结_第2张图片

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

上周考试错题总结

-The behavior of an object is defined by the object's

A
.
instance data

B
.
constructor

C
.
visibility modifiers

D
.
methods

E
.
all of the above

解析:这些方法规定了对象在传递消息时的反应。每个消息都被实现为一个方法,该方法是传递消息时执行的代码。

  • To define a class that will represent a car, which of the following definitions is most appropriate?

A
.
private class car

B
.
public class car

C
.
public class Car

D
.
public class CAR

E
.
private class Car

解析:类应该定义为公共的,以便其他类可以访问它们。根据Java命名惯例,.class名除了每个新单词的开头外,应该以大写字母和小写字母开头,因此Car比Car或Car更合适。

  • A variable whose scope is restricted to the method where it was declared is known as a(n)

A
.
parameter

B
.
global variable

C
.
local variable

D
.
public instance data

E
.
private instance data

解析:局部变量是那些声明它们的方法的“局部”变量,也就是说,它们只能在方法内部访问。全局变量是那些可以从任何地方访问的变量,而参数是传递给方法的变量。可以将实例数据视为整个对象的全局变量。

  • A class' constructor usually defines

A
.
how an object is initialized

B
.
how an object is interfaced

C
.
the number of instance data in the class

D
.
the number of methods in the class

E
.
if the instance data are accessible outside of the object directly

解析:构造函数应该用于“构造”对象,即设置实例数据的初始值。

  • Instance data for a Java class

A
.
are limited to primitive types (e.g., int, float, char)

B
.
are limited to Strings

C
.
are limited to objects(e.g., Strings, classes defined by other programmers)

D
.
may be primitive types or objects, but objects must be defined to be private

E
.
may be primitive types or objects

解析:实例数据是组成类的实体,可以是任何可用的类型(无论是基元类型还是对象类型),也可以是公共类型或私有类型。通过使用对象作为实例数据,它允许在其他类的基础上构建类。如果一个类拥有其他类的实例数据,则这种关系称为has-a关系。

  • 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参数。对于equals,字符串必须作为参数ed,以便接收消息的字符串可以进行比较。

  • 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

解析:对于A,值0 (int)被扩大为double。在C的情况下,添加操作产生0.3,然后调用doublefoo。D中的参数列表是非法的,因为它包含两个双参数,而不是1。

  • All Java classes must contain a main method which is the first method executed when the Java class is called upon.

A
.
true

B
.
false

解析:只有驱动程序需要一个主方法。驱动程序是在任何Java程序(applet除外)中首先执行的程序,但是它可以根据需要调用其他类,而这些其他类不需要主方法。

  • Java methods can return more than one item if they are modified with the reserved word continue, as in public continue int foo( ) { ... }

A
.
true

B
.
false

解析:语法错误的原因是它以“”符号结尾。

  • A constructor may contain a return statement so long as no value (or expression) is returned.

A
.
true

B
.
false

解析:构造函数可能包含非值返回的返回语句。这样做是不鼓励的,但却是合法的。

  • Accessors and mutators provide mechanisms for controlled access to a well-encapsulated class.

A
.
true

B
.
false

解析:访问器提供对变量的读访问,否则这些变量是不可访问的。mutator提供对以其他方式不可访问的变量的写访问。

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):
    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)
    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

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

  5. 本周有效代码超过300分行的(加2分)
    • 一周提交次数少于20次的不加分
  6. 其他加分:
    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:
    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:
    • 本博客再IDEA的学习运用上学到了许多,在经过IDEA的多种下载安装setting,git程序,都基本掌握了。
    • 但是博客在课本自学方面存在一点问题,并没有将所有知识点列出,只是课本编程实列的学习问题的解决。
    • 本博客在学习类的编写上下了很大功夫,同时掌握了类的层次结构
  • 代码中值得学习的或问题:
    • 本博客在提出代码编写错吴时,虽然解析比较完整,没有展示出比较全面的图片。
    • 本博客存在设置类(标识符)时的错误,希望改正。
  • 基于评分标准,我给本博客打分:10分。得分情况如下:
  • 正确排版要素齐全(+1)
  • 使用makedown格式(+1)
  • 教材问题(+3)
  • 代码调试问题(+3)
  • 错题深入(+1)
  • 点评认真(+1)

  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182324
    • 结对照片
    • 结对学习内容
      • 学会使用单元测试进行测试代码。
      • 学会TDD代码测试。
      • 学会是使用编写类,用public、void等编写,调用类的方法进行运算。
      • 学习类与类的关系,继承,聚合,关联等等,来厘清关系。
      • 学会方法调用和包装方法的使用。
  • 上周博客互评情况
    • 学号1
    • 学号2
    • 学号3
    • 学号4
    • ...

其他(感悟、思考等,可选)

首先我在学习测试代码中,感觉就像是主函数子函数之间的传递参数,其实适逢简单。之后的TDD测试也是十分简单,只要注意函数之间的返回值就行。最为重要的是Java的精髓是类的编写调用,各个类的关系和调用,让针对对象的运算更加方便。接口也让Java简单的上下级的类关系多了更多如蛛网般的联系,更加灵活,多态的指向不同类型对象也缩减了不少代码量。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 6000行 30篇 400小时
第一周 107/107 2/2 15/15
第二周 454/526 2/4 32/47
第二周 988/1514 2/6 31/78

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

  • 计划学习时间:30小时

  • 实际学习时间:31小时

  • 改进情况:在周六周天假期少一点玩,多打几行代码。

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导
  • ...

你可能感兴趣的:(《数据结构与面向对象程序设计》第4周学习总结)