20172318 2017-2018-2 《程序设计与数据结构》第8周学习总结
20172318 2017-2018-2 《程序设计与数据结构》第8周学习总结
教材学习内容总结
- 后绑定:延迟到程序执行时的一个方法调用与一个方法定义的绑定
- 由继承实现多态性:一个引用变量可以指向有继承关系的任何类的任何对象,实际将调用的方法取决于对象的类型而不是引用变量的类型
- 利用接口实现多态性:接口名可以用于声明对象引用变量,一个接口引用变量可以指向实现该接口的任何类的任何对象
- 方法的参数可以是多态性的,使得方法所接收对象的参数具有灵活性
- 选择法排序:选择法排序算法通过相继的将各值放在自己的最终位置(排序后的位置)来实现数值的有序排列
- 插入法排序:不断地将新元素插入到已排好序的数列子集中
- 以多态性方式实现的排序算法可对任何一组可比较的对象排序
- 排序算法的比较:如果一种算法执行的比较操作比另一种更多,则前者是效率更低的算法
- 线性搜索:从数列的起点开始,将目标元素依次与每一个值进行比较,最终找到目标元素,或者搜索到数列的终点后发现数列中不存在目标元素
- 二分搜素:从有序数列的中点开始搜索,如果中点元素不是目标元素,则继续搜索
- 多态性允许用一样的方法实现不一样的行为
教材学习中的问题和解决过程
- 问题1:对于Sorting类如何进行升序排列不是很清楚
- 问题1解决方案:在内部循环中
list[scan].compareTo(list[min]) < 0
表示将该值与最小值比较,小于则将该值赋予最小的索引,外层循环将索引值加一,一次次地循环就可以得到升序排列 - 问题2:对于二分搜索找到两个中点值的处理情况不清楚
- 问题2解决方案:课本后来提到
中点计算将忽略小数部分,取两个中点的第一个为新的中点
如19的数列要找到7,会在确认5不是目标元素后向69的中点搜索,这时中点为7.5,会忽略小数部分,找到目标元素7
代码调试中的问题和解决过程
-
问题1:pp10.1
-
问题1解决方案:要求使用Payable接口实现多态性,而我只定义了接口,后来发现需要在Staff类中接上才能完成
-
问题2:pp10.4降序排列
-
问题2解决方案:理解了升序排列是将最小值赋予最小的索引,后来修改了一下就可以将最大值赋予最小的索引获得降序排列
代码托管
上周考试错题总结
- 错题1及原因,理解情况
Polymorphism is achieved by
A . overloading
B . overriding
C . embedding
D . abstraction
E . encapsulation
选B,多态性靠重写实现 - 错题2及原因,理解情况
Comparing the amount of memory required by selection sort and insertion sort, what can one say?
A . Selection sort requires more additional memory than insertion sort
B . Insertion sort requires more additional memory than selection sort
C . Both methods require about as much additional memory as the data they are sorting
D . Neither method requires additional memory
E . None of the above
选D,两种方法都不需要额外内存 - 错题3及原因,理解情况
Can a program exhibit polymorphism if it only implements early binding?
A . Yes, because one form of polymorphism is overloading
B . No, because without late binding polymorphism cannot be supported
C . Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism
D . Yes, because early binding has nothing to do with polymorphism
E . none of the above
选A,重载也是多态性的一种形式 - 错题4及原因,理解情况
It is possible to sort an array of int, float, double or String, but not an array of an Object class such as a CD class.
A . true
B . false
选B,这题答题想的是B,应该是手滑选了A,可以对对象数组进行排序 - 错题5及原因,理解情况
A reference variable can refer to any object created from any class related to it by inheritance.
A . true
B . false
选A,一个引用变量可以指向有继承关系的任何类的任何对象,课本原话
点评模板:
- 博客中值得学习的或问题:
- 对教材内容解析的非常到位
-
代码中值得学习的或问题:
点评过的同学博客和代码
其他(感悟、思考等,可选)
课本简单实验难
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 128/128 | 1/1 | 12/12 | |
第二周 | 212/340 | 1/2 | 18/30 | |
第三周 | 206/546 | 1/3 | 20/50 | |
第四周 | 483/1029 | 2/5 | 40/90 | |
第五周 | 633/1662 | 1/6 | 30/120 | |
第六周 | 560/2222 | 1/7 | 20/140 | |
第七周 | 511/2733 | 1/8 | 20/160 | |
第八周 | 817/3550 | 3/11 | 25/185 |