第六周作业
20182313 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结
教材学习内容总结
- 多态引用在运行时才将方法调用与他的定义绑定在一起
- 接口是一组抽象方法,所以不能被实例化
- 方法的参数可以是多态的,这样使方法具备了对其参数进行控制的灵活性
- 不论是正常退出try块,还是因抛出一个异常而退出,都要执行finally子句
- 从Exception类或它的一个后继类派生一个新类,就可以定义新的异常
- 方法头中的throws子句必须包含本方法中没有捕获及处理的必检异常
- 面向对象的原则是面向对象设计的核心, 面向对象五大原则有SRP、OCP、LSP、DIP、ISP
SRP(单一职责原则)一个设计元素只做一件事。之前一直在讨论这件事,(上帝类与小类)小类容易复用.
高内聚低耦合:与自己无关的拿出去,使用时调用,灵活
OCP:“Closed for Modification; Open for Extension”:对扩充开放 对修改封闭 OCP背后的机制:抽象和多态
软件实体(类。模块。函数)应该对
LSP:(里氏替换原则)Liskov是这个原则的提出者。理解起来就像大于5的数一定大于2,子能存在的地方父一定可以。
DIP(依赖倒置原则)要依赖于抽象,不要依赖于具体。
子类可以被基类替代 不能滥用继承
ISP:(接口分隔原则)一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。
教材学习中的问题和解决过程
- 问题一:接口可以继承接口和实现接口吗?
- 问题一解决过程:接口可以继承接口,并且可以继承不只一个接口,但是不能实现接口。因为接口的成员方法都具有抽象属性,不具有方法体,无法实现继承的接口。
- 问题二:对多态性这个概念不太理解
- 问题二解决过程:通过在网上资料的查找,算是有了一个更加清晰的认识:多态性指的是不同的类的对象可以对同一信息进行不同的反应,信息指的是调用方法。
- 问题三:为什么要自定义异常?
- 问题三解决过程:我们不可能期待虚拟机自动抛出一个自定义异常,也不能期待它自动处理一个自定义异常,所以发现异常和解决和异常还是需要我们自己完成
代码调试过程中的问题和解决过程
- 问题一:在运行代码时不但不成功,还跳出了其他的代码文件,报出一连串错误
- 问题一解决过程:新建一个Project,将几个FileTest文件单独放进去运行就可以了
代码托管
上周考试课题总结
-
错题一:Which of the following lists of numbers would accurately show the array {9,4,12,2,6,8,18} after the first pass through the Selection Sort algorithm?
A .9, 4, 12, 2, 6, 8, 18
B .4, 9, 12, 2, 6, 8, 18
C .2, 4, 12, 9, 6, 8, 18
D .2, 4, 6, 8, 9, 12, 18
E .2, 4, 9, 12, 6, 8, 18
答案:C
解析:在选择排序的每个连续过程中,都会找到未排序的最小值,并与当前数组索引交换(当前索引从0开始,一直到数组中最后一个位置)。在第一个过程中,最小的元素2与索引0交换,所以2和9交换位置。 -
错题二:Both the Insertion Sort and the Selection Sort algorithms have efficiencies on the order of ________ where n is the number of values in the array being sorted.
A .n
B .n * log n
C .n^2
D .n^3
E .Insertion sort has an efficiency of n and Selection Sort has an efficiency of n^2
答案:C
解析:两种排序算法都使用两个嵌套循环,每个循环都执行大约n次,这给两者都带来了N*N或N ^ 2的复杂性。 -
错题三:What are the main programming mechanisms that constitute object-oriented programming?
A .encapsulation, inheritance, polymorphism
B .encapsulation, abstraction, inheritance
C .inheritance, polymorphism, recursion
D .polymorphism, recursion, abstraction
E .none of the above
答案:A
解析:封装是代码部分的隔离,这样它们就不会被意外地修改;继承提供了代码重用;多态提供了一个名称和许多语义。抽象是一个有用的属性,但它不是一种机制。递归是一种控制结构,提供了不同的方式来表示循环或重复。 -
错题四: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
解析:虽然继承和接口支持多态性,但它们只在具有后期绑定的情况下才支持多态性。但是,重载是多态性的一种形式,一个(方法)名,多个体只要程序使用重载,多态性就在使用中。 -
错题五:To swap the 3rd and 4th elements in the int array values, you would do:
values[3] = values[4];
values[4] = values[3];
A .true
B .false
答案:B
解析:此代码首先将值[4]复制到值[3]中,然后将值[3]复制到值[4]中。结果是存储在值[4]中的内容现在同时存储在值[3]和值[4]中。为了适当地执行交换,需要将第三个变量用作临时存储位置,如int temp=值[3];
值[3]=值[4];
值[4]=温度;
14个 -
错题六:Assume Exceptionname is a checked exception. If a method uses a class that can generate Exceptionname, then either the method must include try and catch statements where a catch statement catches Exceptionname, or the method header must include the statement
A .throw Exceptionname
B .throws Exceptioname
C .catch Exceptionname
D .catches Exceptionname
E .implements Exceptionname
答案:B
解析:必须在某个地方捕获选中的异常,因此,如果在可能生成异常的方法中未捕获到异常,则必须将该异常抛出给任何调用该方法的对象。这是通过声明方法抛出exceptionname来实现的。 -
错题七:A processing stream is a data stream that
A .can manage both input streams and output streams at the same time
B .performs some manipulation or process on the data
C .can only manage input streams
D .operates on input and output devices but not files
E .can manage byte streams and character streams at the same time
答案:B
解析:数据流表示特定的源或目标流,用于输入或输出。一个处理流就像一个数据流,其中一些额外的过程被添加到输入或输出中。例如,处理字节流可以从文件中输入所有项,并删除任何不是数字的ascii字符,以便预期为数字的输入不会引发numberformatexception。 -
错题八:When a program terminates because a thrown exception is not handled, the program
A .starts up again automatically
B .opens a dialog box, which asks the user whether the program should start again, end, or enter a debugging mode
C .saves all output to a disk file called the "runStackTrace.txt"
D .opens a dialog box for the user to specify a disk file name, and all output is stored to that disk file
E .outputs a message indicating what and where the exception was thrown
答案:E
解析:如果在程序中的任何地方未捕获抛出的异常,程序将终止,并显示运行堆栈跟踪的内容。运行堆栈跟踪上的第一个项是抛出的异常及其抛出位置(引发异常的类的方法的行号)。
结对及互评
- 博客中值得学习的或问题
排版清晰简洁,但是这次相对缺乏一些自己的理解 - 基于评分标准,我给本博客打分:15分 得分情况如下:
1.正确使用Markdown语法(加1分)
2.模板中的要素齐全(加1分)
3.教材学习中的问题和解决过程(加2分)
4.代码调试中的问题和解决过程(加3分)
5.感想,体会不假大空(加1分)
6.排版精美(加1分)
7.进度条中记录学习时间与改进情况(加1分)
8.有动手写新代码(加1分)
9.错题学习深入(加1分)
10.点评认真,能指出博客和代码中的问题(加1分)
11.结对学习情况真实可信(加1分)
12.本周有效代码超过300分行(加2分)
点评过的同学博客和代码
- 本周结对学习情况
20182306 - 结对学习内容:
接口实现多态
通过继承实现多态
异常与异常处理
感悟
这一周学习感觉略显吃力,尤其是进行了一次期中测试,让我认识到自己还有更多的不足,尤其是对代码的理解,不够深入,不能够活学活用,要多多注意
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 171/171 | 2/2 | 20/20 | |
第二三周 | 415/586 | 3/5 | 42/62 | |
第四周 | 587/1173 | 2/7 | 22/84 | |
第五周 | 1706/2879 | 2/9 | 19/103 | |
第六周 | 547/3426 | 2/11 | 21/124 |