20182327 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结
2019-10-15 17:28 BBIowa 阅读(218) 评论(1) 编辑 收藏 举报20182327 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结
教材学习内容总结
-
1、多态与后绑定:多态是指一个引用变量在不同时刻指向不同对象。多态实现的基础是后绑定(late/dynamic binding)
多态存在的三个必要条件
继承
重写:是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都无法改变。 -
2、.接口:一组抽象方法。接口可以多重继承。
-
3、接口实现多态:接口名可用来声明引用变量。调用接口变量时只能调用接口中定义的方法,因为编译器只能判定对象是接口类的,子类自定义的方法无法响应。
-
4、异常与异常处理:
- 异常是一个对象,与错误类似。异常能被抛出、捕获,必要时进行处理。
- 异常处理三种方式:
不处理:程序非正常终止,打印错误信息和调用栈跟踪
在异常产生的地方处理:捕捉异常-try catch
在程序的其他地方处理:抛出异常-throws throw
-
5、I/O异常(其中还有老师上课讲的把数据写入文本,和从文本中读取数据内容)
三种标准I/O流(in、out、err)
可检测的IOExceptions异常
教材学习中的问题和解决过程
-
问题1:throws和throw关键字有什么区别?
-
解答:
1、使用throws声明的方法表示此方法不处理异常,而由系统自动将所捕获的异常信息“抛给”上级调用方法。使用throws声明能实例化异常类对象,人为抛出异常。- throw 在方法体内使用,throws 函数名后或者参数列表后方法体前。
- throw 强调动作,而throws 表示一种倾向、可能但不一定实际发生。
-
问题2:接口可以实现接口吗?
-
问题2解决方案:不能实现接口,因接口的成员方法都具有抽象属性,不具有方法体,无法实现继承的接口。
- 具体如何实现没有研究。
代码调试中的问题和解决过程
-
问题一:如何达到题目要求“直到输入“DONE”为止”?
-
问题一解决方法:这个问题出现是因为我理解题目出现了问题,检测到输入得单词为“DONE”就停止,然后判断总输入字符串是否超过长度20个,如果是,就抛出异常。无异常的话可以再次输入。
-
问题二:IO操作及异常处理
-
问题二解决方法:刚听完IO的问题要尝试去编写IO的代码,对应的writer和reader什么的不了解,不过可以参考参考学长学姐的代码。代码中有BufferedOutputStream和BufferedInputStream两种可供理解,两种字节流可以使用,进行往文件里面写入读出。
-
问题三:读取文件时遇到了空格,在I/O异常练习时,遇到了读文件的操作,但读取时遇到空格。
-
问题三解决办法:最后找到string.split方法,以某一特殊符为界,分割字符串后将每一部分存入数组。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
-
错题1:A Java program can handle an exception in several different ways. Which of the following is not a way that a Java program could handle an exception?
A . ignore the exception
B . handle the exception where it arose using try and catch statements
C . propagate the exception to another method where it can be handled
D . throw the exception to a pre-defined Exception class to be handled
E . all of the above are ways that a Java program could handle an exception
错误:D 正确:E
解析:java处理异常的三种方式:1.根本不处理异常。2.当异常发生时处理异常。3.在程序的某个位置集中处理异常。 -
错题2:An exception can produce a "call stack trace" which lists:
A . the active methods in the order that they were invoked
B . the active methods in the opposite order that they were invoked
C . the values of all instance data of the object where the exception was raised
D . the values of all instance data of the object where the exception was raised and all local variables and parameters of the method where the exception was raised
E . the name of the exception thrown
错误:D 正确:B
解析:调用 -
错题3:An exception that could also arise in the try statement that does not have an associated catch statement is:
A . ClassNotFoundException
B . IllegalArgumentException
C . NegativeArraySizeException
D . NullPointException
E . OutOfMemoryException
错误:A 正确:D
解析:try语句后没有catch语句会出现NullPointException -
错题4:We compare sorting algorithms by examining
A the number of instructions executed by the sorting algorithm
B the number of instructions in the algorithm itself (its length)
C the types of loops used in the sorting algorithm
D the amount of memory space required by the algorithm
E whether the resulting array is completely sorted or only partially sorted
分析:这道题考到的知识点为:不同的排序算法在执行时需要不同数量的指令。所以我们通过检查排序算法执行的指令数,来比较排序算法。所以应该选a。 -
错题5:Polymorphism is achieved by
A . overloading(重载)
B . overriding(重写)
C . embedding(嵌入)
D . abstraction(抽象)
E . encapsulation(封装)
分析:这道题考查的是多态性是通过什么实现,我选择的是的抽象,而答案是b重写:重写提供了多态性,因为适当的方法是根据当前被引用的对象而调用的,所以应该是重写实现多态性。 -
错题6: All run-time Errors throw Exceptions.
正确答案:B.false
原因:结果显而易见,如果我们用try-catch语句就可以不抛出了。 -
错题7:A try statement must have at least one catch statement, but could have many catch statements, and may or may not have a finally clause.
正确答案:A.true
原因:点错了,使用try之后必须要有至少一个catch,至少在IDEA中如果没有接下来的catch就会出现红线提示,finally是可有可无的,有需求就可以用。
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
-
博客中值得学习的或问题:
- 同学们已经有意识的遇见错误就截图,给后面写博客的各种方便很多,我一直忘记只能重新敲一遍。
-
代码中值得学习的或问题:
- 条条大路通罗马,好多同学可以曲线思维弄出代码,听他们讲解后真的很佩服。
-
基于评分标准,我给本博客打分:11分。得分情况如下:正确使用Markdown语法+1.教材学习中的问题和解决过程+2.代码调试中的问题和解决过程+2.感想,体会不假大空+1.错题学习深入+1.点评认真,能指出博客和代码中的问题+1.结对学习情况真实可信+1.课后题有验证+1,进度条有记录+1.
点评过的同学博客和代码
其他(感悟、思考等,可选)
- 每节课的考试让我十分吃不消,不只是英语单方面的问题,Java也有许多问题亟待解决,因为课本版本不同,找起知识点来比较麻烦。
- 好多同学好牛,自己好菜,各种把打好的代码推翻重来,参考别人代码改来改去把自己的程序变成了四不像,运行不了,本周更加熟悉了运行一个目的堆了四五个程序的Java常态,继续虚心学习吧。
- 实验作业越来越难,我越来越菜,随时gk。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 350/500 | 2/4 | 24/38 | |
第三周 | 512/1000 | 3/7 | 22/60 | |
第四周 | 1158/1300 | 4/9 | 35/90 | |
第五周 | 2905/3000 | 6/5 | 24/24 | |
第六周 | 3927/4000 | 2/2 | 26/30 |