学号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变量时发现不符合自减运算的结果。
问题3解决方法:直接使用自动生成的toString代码,应该用条件运算符卡一下。
代码托管
https://gitee.com/besti1823/20182329lyz.git
(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提供对以其他方式不可访问的变量的写访问。
结对及互评
评分标准
- 正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
- 模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
- 本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
- 其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
- 扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
- 博客中值得学习的或问题:
- 本博客再IDEA的学习运用上学到了许多,在经过IDEA的多种下载安装setting,git程序,都基本掌握了。
- 但是博客在课本自学方面存在一点问题,并没有将所有知识点列出,只是课本编程实列的学习问题的解决。
- 本博客在学习类的编写上下了很大功夫,同时掌握了类的层次结构
- 代码中值得学习的或问题:
- 本博客在提出代码编写错吴时,虽然解析比较完整,没有展示出比较全面的图片。
- 本博客存在设置类(标识符)时的错误,希望改正。
- 基于评分标准,我给本博客打分:10分。得分情况如下:
- 正确排版要素齐全(+1)
- 使用makedown格式(+1)
- 教材问题(+3)
- 代码调试问题(+3)
- 错题深入(+1)
点评认真(+1)
点评过的同学博客和代码
- 本周结对学习情况
- 20182324
- 结对照片
- 结对学习内容
- 学会使用单元测试进行测试代码。
- 学会TDD代码测试。
- 学会是使用编写类,用public、void等编写,调用类的方法进行运算。
- 学习类与类的关系,继承,聚合,关联等等,来厘清关系。
- 学会方法调用和包装方法的使用。
- 上周博客互评情况
其他(感悟、思考等,可选)
首先我在学习测试代码中,感觉就像是主函数子函数之间的传递参数,其实适逢简单。之后的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小时
改进情况:在周六周天假期少一点玩,多打几行代码。