学号 2016-2017-2 《程序设计与数据结构》第6周学习总结
教材学习内容总结
关键摘要:
1.继承是从已有类派生一个新类的过程。
2.继承在父类和子类之间建立了is-a关系
3.可以使用super引用来调用父类的构造方法。
4.子类可以重写(重定义)继承自父类的方法。
5.一个类的子类可以是一个或多个其他类的父亲,这样形成了类层次。
6.Java 的所有类直接或间接派生于Object类。
7.Java 程序中的每个类都继承了toString和equals方法。
8.final修饰符可用来限制继承。
教材学习中的问题和解决过程
- 问题1:is-a关系是什么关系啊?
- 问题1解决方案:上网查找
is-a( 是 "a" 小明是人类)表示的是属于得关系。比如兔子属于一种动物(继承关系)。
has-a( 有 "a" 汽车有轮胎) 表示组合,包含关系。比如兔子包含有腿,头等组件;就不能说兔子腿是属于一种兔子(不能说是继承关系)
7.1.2 "is a"关系和"has a"关系
假设有两个类:Computer和Employee。明显地,这两个类之间不存在"is a"的关系,即Employee不是计算机,它们之间没有继承关系的必要。因此不可能产生代码重用性。但这两个类之间是"has a"关系,即是支持的关系。例如,Employee"has a"Computer。明显地是一种支持关系。这种支持关系落实到代码中,就是在Employee中创建Computer的对象,调用其方法,到达完成某种运算和操作的目的。
Employee和Manager 类存在的则是"is a"关系,即Manager是Employee。它们之间存在共性,或者共同的属性。Manager是Employee的具体化;Employee是Manager的概括和抽象。概括性和抽象性的类,如Employee,在继承中则定义为超类。具体或代表对象特性的类,如Manager,则定义为子类。如果这是一个用来计算雇员工资的程序,那么在超类Employee中,我们应当包括所有子类都应该具有的、与计算工资有关的数据,例如name、employeeID、jobTitle、seniority、baseSalary以及用来计算基本工资部分的方法,如baseSalary()等。在Manager这个子类中,我们不仅继承Employee的所有数据和方法,还增加针对Manager的新的数据,如是否董事会成员boardMember、职务补贴merit等,因为除基本工资的计算之外,这些都影响到具有经理职务雇员的收入。
对两个类之间"is a"或是"has a"关系的分析,有助于我们确定它们之间是否存在继承关系,避免设计上的错误,因而达到提高代码重用性的目的
- 问题2:public void与public int区别
- 问题2解决方案:
public.是访问修饰,访问修饰有public ,protected,默认修饰符(也就是什么也不写),private四种,四种按照从前到后访问级别依次降低。
void.的不返回任何参数,它是方法返回类型中的一种,除了void 外,方法返回类型还可以是基本数据类型和引用数据类型,基本数据类型有byte,short,int,long,char ,float,double,boolean八种,引用数据类型有很多的,它是根本你想引用什么数据类型,想常见的有String 类型,还有你自己定义的类的类型。
代码调试中的问题和解决过程
- 问题1:运行三个程序?
- 问题1解决方案:在src目录下mkdir一个新的目录,再将程序放在同一个目录下,再javac,然后退到原来的目录,java运行
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
上周没有考试
结对及互评
基于评分标准,我给本博客打分:7分。
点评过的同学博客和代码
其他(感悟、思考等,可选)
这周班主任给我们开了班会,让我又重新的认真的思考了一下我目前的学习状态,刘老师说的没有错,以前的学习,都是老师一味的灌输,老师教什么,我们就会什么,没有自己探索的过程,等到自己去实践的时候,就会遇见各种各样的问题;现在娄老师的教学就是让我们自己去学习,自己去发现问题,然后问自己所发现的问题,因为每个人的思维方式不同,所以碰到的困难也是多种多样的,解决属于自己的问题,这样成长才是最快的。
老师单方面的传输的知识,对于我们来说,是最习惯的一种学习方式,也是我们认为最简单的学习方式,但是,我认为自己发现问题然后再解决,这样的学习是高效的,虽然会很累,但是,这样才能学到更多的东西。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 72/72 | 1/1 | 20/20 | |
第二周 | 267/339 | 1/2 | 18/38 | |
第三周 | 297/636 | 1/3 | 22/60 | |
第四周 | 719/1355 | 2/5 | 30/90 | |
第五周 | 640/1995 | 1/6 | 20/110 | |
第六周 | 698/2693 | 1/7 | 20/130 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:XX小时
实际学习时间:XX小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)