学号 20162320 《程序设计与数据结构》第5周学习总结
教材学习内容总结
- 定义类的方法,
class 类名
+{属性;方法}
,属性叫成员变量——描述类的状态,方法叫成员方法——描述类的行为 - 类的表示方法,,生成对象的方法:
类名 对象名 = new类名();
,例如:Dog dog = new Dog();
,Dog dog
为创建一个Dog的引用,new Dog()
创建一个Dog的对象,=
为将对象赋值给引用。 - 类的剖析,面对对象的核心是类的定义,它定义了类的状态和行为的对象。
- static关键字的用法,静态成员变量只有一份,函数中不能用this,静态代码块的作用是为成员变量赋初始值。
- 参数(parameter),chong方法调用处声明参数,,相当于给方法提供了一个数据,若无参数则用空括号。
- 类的关系,分别为依赖,聚合和继承。
- 方法设计,为了达成一个方法进行设计,可以将方法进行分解,将复杂变简单。
- 方法重载,多次使用名字相同但参数不同的方法。可以根据参数个数、参数类型和参数次序来区分
教材学习中的问题和解决过程
- 问题1:关于程序5.2中
private int faceValue
的private是什么意思。
解决方案:通过实验发现private表示一个类的私有属性,只能在本类中访问到,在其他的类中无法进行访问,相当于设置了一个权限,并表示任何类不能实例化这个类。与它相对应的是public,在其他包就不能实例化你这个类 这里的意思就是可以在所有的类里实例化这个类。 - 问题2:关于程序5.4中
return(face ==HEADS) ? "Heads" : "Tails";
问号的含义,以及后面冒号的含义。
解决方案:通过复习教材以前的内容,发现?之前是一个布尔条件,?后是两个表达式,使用:
分开。如果条件为真,则整个条件表达式返回第一个表达式的计算结果;如果为假则返回第二个表达式内容。 - 问题3:关于程序中
return
的意义。
解决方案:首先教材上的解释作用是一个返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)。但仍然很抽象,通过调试一个程序,如图可以知道return有一个特性就是一旦调用return 那么直接结束方法。
代码调试中的问题和解决过程
- 问题1:为什么可以先出现
translatrword
而后定义呢?
解决方案:翻阅教材实例发现在定义类的程序中不同的块的先后顺序是可以互不影响的 - 问题2:setValue和Num为什么指向的参数会不一样?
解决方案:通过观察代码,f2 = new Num(777)
是新建一个对象,而setValue
是设置方法,改变了具体的值。 - 问题3:在编辑Card类的时候,在类中定义了随机数的值num,但是在执行主程序的时候不能用num来代表那个随机数。
解决方案:袁逸灏查看了我的代码,指出我并没有将num这个值返回出去,于是帮我添加了public int getNum() { return num; }
,加上getNum即设置了一个访问方法,提供了具体值的只读访问。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题未更新
结对及互评
点评模板:
-
博客中值得学习的或问题:
无
-
代码中值得学习的或问题:
无
-
基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
点评过的同学博客和代码
其他(感悟、思考等,可选)
关于课程程序学习的经验感悟:
1.要理解教材上的程序,一定要掌握单词的意思。比如程序5.11中reciprocal
,denominator
,我第一次学习时直接忽略了这个单词意思跳跃学习,结果花了很多时间都看不懂,终于去查了字典,其意思为倒数和分母,才知道程序是在定义算法。
2.为什么我看懂了教材上程序类的定义方法,但是还是不会用?是因为练得太少了吗?
3.定义性的东西太多了,比如类的关系,静态变量等等,有什么方法能够加深对抽象定义的理解呢?
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 180/180 | 1/4 | 15/15 | |
第二周 | 465/645 | 1/5 | 18/33 | 学习了scanner |
第三周 | 456/1101 | 1/6 | 17/ 50 | 学会了如何编写数学公式等 |
第四周 | 620/1734 | 2/8 | 40/90 | 学了条件循环和数组 |
第五周 | 890/2604 | 1/9 | 25/115 | 接近学会了编写类 |
第六周 | 0/0 | 1/10 | 0/0 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:25小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)