20162301 2016-2017-2 《程序设计与数据结构》第5周学习总结
教材学习内容总结
第5章编写类
- 1.再谈类与对象(类和对象的确定,分配职责)
- 2.类的剖析(实例数据,UML类图)
- 3.封装(可见性修饰符,访问方法和设值方法)
- 4.方法的剖析(return语句,参数局部数据,再次讨论构造方法)
- 5.静态类成员(静态变量,静态方法)
- 6.类关系(依赖,同一类中各对象之间的依赖,聚合,this引用)
- 7.方法设计(方法分解,再次讨论方法参数)
- 8.方法重载
- 9.测试(审核,缺陷测试,单元测试,集成测试,系统测试,测试驱动的开发)
- 10.调试(使用print语句进行简单调试,调试概念)
教材学习中的问题和解决过程
- 问题1:教材中所说的三个可见性修饰符(public,private,protected)的具体用法。
解决方案:
public:具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。private:访问权限仅限于类的内部,是一种封装的体现,例如,大多数成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。protected:主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。问题2:书本P106中UML类图,书本中的解释有点模糊,看的时候没有很明白。
解决方案:查看了几个对于UML类图比较详细的解释的博客。比较常用UML类图几种关系的小结 ; UML类图、关系及其JAVA代码。
在UML类图中,比较常用的几种关系有:泛化、 实现、 关联、 聚合、组合、依赖。问题3:return语句的具体用法
-
解决方案:return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)。如图所示。
代码调试中的问题和解决过程
- 问题1:在学习return语句时候所写的代码错误,提示少分号(;)
- 解决方案:for循环的循环头含有用分号分隔的三个部分,所以在我所写的for循环中,缺少了一个分号,加上即可。
代码托管
上周考试错题总结
问题1:判断:An array cannot hold object types.(数组中不能包含对象类型) (×)
原因:An array can be declared to hold references to objects.(可以声明数组以保存对对象的引用)
问题2:单选题:Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如我们有一个名为names的String对象数组,下面哪个for循环不能遍历数组中的每一个元素?)
A.for(int i = 0; i < names.length; i++)
B.for(String name : names)
C.for(int i = 0; i < names.length(); i++)
D.none of these will correctly process each element(以上都不能遍历)
E.all of these will correctly process each element(以上都能遍历)原因:这道题首先排除了B(根据上周的学习内容知道:for循环体的用法),但在A和C中犹豫不决。后来询问刘伟康同学,知道了length在数组中是数组对象的属性是一个常量,和类中的length方法不一样,不需要加括号。
问题3:判断:An infinite loop is not a compile-time error.(无限循环不会产生编译时错误) (√)
原因:An infinite loop is usually caused by a logical error, and will not be caught by the compiler.(无限循环通常由逻辑错误引起,不会被编译器捕获。 )
问题4:判断:In Java, a boolean expression is limited to having exactly 2 logical operators.(在Java中,布尔表达式中最多有两个逻辑运算符) (×)
原因:A boolean expression can have any number of logical operators, so it is possible to construct sophisticated conditions using a single boolean expression.(布尔表达式可以有任意数量的逻辑运算符,因此可以使用单个布尔表达式构造复杂条件。)
问题5:The ___________________ statement causes execution of a loop to stop, and the statement following the loop to be subsequently executed.(_________ 语句会导致退出循环,然后顺序执行循环后面的语句)
原因:答案为break。一开始选的是continue,原因是学习书本P86时,将两者搞混。break语句使一回路停止执行,转去执行循环之后的语句。break语句是结束这次循环,不再执行该循环块或者程序块,而continue语句的作用是中断当前的这次循环,继续后面的循环。举个例子,如图所示。
问题6:Suppose we wanted to process a text file called “input.txt” using the Scanner object.Which of the following lines of code correctly creates the necessary Scanner object?(假如我们想用Scanner对象处理文件名为“input.txt”的文本文件,下面哪行代码正确的创建了Scanner对象)
A.Scanner inputFile = new Scanner(“input.txt”);
B.Scanner inputFile = new Scanner(new InputFile(“input.txt”);
C.Scanner inputFile = new Scanner(new File(input.txt);
D.Scanner inputFile = new Scanner(new InputFile(input.txt);
E.Scanner inputFile = new Scanner(new File(“input.txt”);原因:答案选择E。he Scanner constructor needs to take a reference to a File object as a parameter, so choice a, b and d are incorrect. The constructor for a File object takes in a String, so choice c is incorrect.Therefore, choice e is correct.(构造函数需要引用的文件对象作为参数,所以选择A,B和D都是不正确的。 为文件对象的构造函数将一个字符串,因此选项C是不正确的。 因此,选项E是正确的。 )
问题7:输入"cd"命令并按回车键后,将会出现什么情况?
A.从当前目录切换到根目录
B.屏幕显示当前目录
C.从当前目录切换为上一级目录
D.从当前目录切换到用户主目录原因:答案为D。cd 等价于cd ~,也就是cd /home/userXXX
结对及互评
点评过的同学博客和代码
其他(感悟、思考等,可选)
经过上周一周两章的挑战后,这周的一周一章相对来说要轻松一些。这周的课上,娄老师教给了我们一周学习java的时间安排。虽然这周没有完全按照这个节奏学习,但是按照这个节奏学习,周一到周五可以学习大部分内容。虽然周六上了整天的课,依旧可以完成这周的作业。这让我知道恰当的、适合的学习方法要比花大量的时间更加有效。希望自己能够在接下来的学习中,尽量按照老师所给的建议,并且结合自己的自身情况,找到适合自己的学习方法和学习节奏。另外,在这几周的考试中,我的错题数量明显增加,与优秀的同学之间差距逐渐变大。而我所错的题大部分涉及到以前的知识,这就说明我应该在平时的学习中学会“温故知新”,在掌握新知识的同时,也要对旧的知识加强记忆。在清明节的三天假期中,要在休息的同时,弥补自己在java学习上的漏洞,增强自己的实践能力,尽量跟上老师和同学的步伐。(书后PP还是先看的同学的码云!!我急需提高自己的动手写代码的能力!!)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 57/57 | 1/1 | 24/24 | 绪论 |
第二周 | 338/395 | 1/2 | 18/42 | 数据和表达式 |
第三周 | 497/892 | 1/3 | 18/60 | 使用类和对象 |
第四周 | 839/1731 | 1/4 | 30/90 | 条件与循环 |
第五周 | 1018/2749 | 1/5 | 10/98 | 编写类 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:12小时
实际学习时间:10小时
改进情况:提高自己的学习效率,脚踏实地的学习
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)