20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
教材学习内容总结
- 通过继承来创建类,比从零开始编写代码来的更快、更容易也更经济。
- 继承在父类与子类之间建立了is-a关系。
- 子类的实例不依赖于父类的实例。
- 继承是单向的。
- 变量或方法声明为保护可见性时,其封装性不如声明为私有时严格,但比声明为公有时要好。UML类图中,在保护成员加上#说明保护可见性。
- 构造方法不能继承。
- super可用在一个类中,用来指向其父亲。
- 子类可以重写(重定义)继承自父类的方法。
- 派生于父类的子类还可以是自己子类的父类,形成了类层次。
- 公共特性应该放到类层次中尽可能高的位置上。
- 抽象类不能实例化,它提供的概念可由其他类定义。在UML类图中,抽象类和抽象方法的名称用斜体表示。
- 私有成员也被子类继承,但不能通过名字直接引用。可以间接引用。
- 使用final修饰符可以限制继承。
教材学习中的问题和解决过程
- 问题1:程序8.1,8.2,8.3三个存在父子类关系,但他们之间的关系不是特别清楚,通过书上的UML图就可以清晰明了的看出他们的继承关系。
代码调试中的问题和解决过程
- 问题1:没有理解程序8.10、8.11、8.12中的具体算法
- 首先通过8.10调用8.12,8.12Pizza类继承于8.11FoodItem。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1 An array declared as an int[] can contain elements of different primitive types.(用int[]声明的数组,元素类型可以是所有基本类型)错误。
已声明具有特定类型的数组可能只包含该类型的元素。在这种情况下,数组只能包含整数。 错题2 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
扫描仪构造函数需要将文件对象引用为参数,所以选择A、B和D是不正确的。文件对象的构造函数包含一个字符串,所以选择C是不正确的。因此,选择E是正确的。错题3 Which of the following statements best describes the flow of control in the main method of a Java program that has no conditionals or loops? (在没有条件和循环语句的情况下,对于Java程序中main方法的描述,下面哪个选项最为合适?)
A .Program statements are all executed at the same time.(程序语句同时执行)
B .Program statements are executed according to their priority, which is specified by the programmer.(程序语句根据程序员指定的优先级按优先级执行)
C . Program statements are executed linearly, with earlier statements being executed first.(程序语句顺序执行,前面的语句先执行)
D .Program statements are executed linearly, with later statements being executed first.(程序语句顺序执行,后面的语句先执行)
E . Some program statements are executed at the same time, and others are executed in a linear manner. (有的程序语句同时执行,有的语句顺序执行)
正确答案: C
java程序中的程序语句的执行线性当没有条件语句或循环。这意味着在代码中出现较早的语句在代码后面出现的语句之前执行。错题4 输入"cd"命令并按回车键后,将会出现什么情况?
A .从当前目录切换到根目录
B .屏幕显示当前目录
C .从当前目录切换为上一级目录
D .从当前目录切换到用户主目录
正确答案: D
cd 等价于cd ~,也就是cd /home/userXXX错题5 已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,使用一下哪个命令后可以进入/home/stud1/test?
A .cd home B .cd stud1/test C .cd /stud1/test D .cd test
正确答案: B
看错了,很遗憾
点评模板:
点评过的同学博客和代码
其他
这周的时间也比较少,所以内容也比较少,相对来说学习的进度还是比较快的,学的也比之前顺畅多了。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 75/75 | 1/1 | 10/10 | |
第二周 | 200/245 | 1/2 | 12/22 | |
第三周 | 363/608 | 1/3 | 18/40 | |
第四周 | 926/1534 | 2/5 | 30/70 | |
第五周 | 1121/2655 | 1/6 | 20/90 | |
第六周 | 328/2983 | 1/7 | 10/100 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:20小时
实际学习时间:10小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)