作业六
20182302 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结
教材学习内容总结
- SOLID原则:SRP单一职责原则,OCP开放封闭原则,LSP likov替代原则,ISP接口分离原则,DIP依赖导致原则。(仍未完全理解掌握)
- 继承封装多态的相关含义。
- 如何通过接口实现多态,如何利用继承实现多态(实际操作不能完全自己打出)后绑定相关概念
教材学习中的问题和解决过程
- 问题1: 对四种输出方法无法分离
- 问题1解决方案:通过仔细阅读理解老师所给代码为两种输入,其下又各有两种shuc
- 问题2:对字符流,字节流理解存在困难
- 问题2解决方案:通过交流询问和查阅课本找到相关概念区别。:字符流使用了缓冲区,而字节流没有使用缓冲区。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类)。
代码调试中的问题和解决过程
- 问题1:try-catch不理解如何使用
- 问题1解决方案:查阅后得知try与catch的不同作用。
- 问题2: 在java中输入字符遇到吃回车问题
- 问题2解决方案:百度后得知通过将nextline改为next可以解决,nextline常发生吃回车问题
- 问题3:append的作用不知.
- 问题3解决方案:write每次写入前都会把文件原有内容格式化,append只是单纯的添加,不对原内容做改动,append会把文件内指针指向结尾。
[https://gitee.com/besti1823/20182302shiyanyi00/tree/master/20191015]
上周考试错题总结
- Polymorphism is achieved by
A .overloading
B .overriding
C .embedding
D .abstraction
E .encapsulation - 重载只是为具有不同参数列表的方法提供了替代方法。重写提供了多态性,因为根据当前被引用的对象调用相应的方法。嵌入是类中类的封闭。抽象与多态性无关。使用可见性修饰符(public、private、protected)实现封装。
- Which statement is completely true?
A .Java upcasts automatically, but you must explicitly downcast
B .Java downcasts automatically, but you must explicitly upcast
C .Java expects the user to explicitly upcast and downcast
D .Java will both upcast and downcast automatically
E .The rules for upcasting and downcasting depend upon whether classes are declared public, protected, or private - upcasting是完全安全的,它是java支持的单一继承结构的产物。相比之下,向下转换必须由程序员显式地完成。Java只在一个方向上自动进行强制转换。上下投射的规则不依赖于使用中的可见性修改器。
- What is the efficiency of binary search?
A .n^2
B .n
C .log2 n
D .n/2
E .none of the above - 使用每个比较,二进制搜索消除了剩下的数据的大约一半。此过程将继续,直到找到所需的元素或消除所有可能的数据。由于有n个数据元素,在数据量小于1个元素之前,可以将数据减半的次数为log2n。
- A polymorphic reference can refer to different types of objects over time.随着时间的推移,多态引用可以引用不同类型的对象。这就是多态性的意义所在:后期绑定。这意味着在程序执行时,相同的名称将与不同的语义相关联。
- A reference variable can refer to any object created from any class related to it by inheritance.这是一种用来完成多态引用的技术,它的精确解释将在执行期间发生变化,这取决于遇到变量时引用的精确对象。
- An interface reference can refer to any object of any class that implements the interface.
- 接口引用可以引用实现接口的任何类的任何对象。这是使用接口名称声明引用变量的多态函数之一。
- A method's parameter can be polymorphic, giving the method flexible control of its arguments.
- 方法的参数可以是多态的,使方法灵活地控制其参数。为了实现这一点,仅使用接口名或基类名来声明变量。然后参数是多态的,在执行期间引用类的正确实例,在执行期间访问正确的语义。
- If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but can not redefine x to be a different type.
- 派生类可以重新定义父类的任何实例数据或方法。父类的版本现在是隐藏的,但是可以通过使用super来访问,如在super.x中一样。
- Although classes can be inherited from one-another, even Abstract classes, interfaces cannot be inherited.
A .true
B .false - 接口具有普通类所具有的所有继承属性。因此,您可以创建接口继承层次结构,就像创建类继承层次结构一样。但是,您不能做的是实例化一个必须实现的接口。
- 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 - 如果代码包含在try语句中并实现了相应的catch语句,则抛出的异常要么被当前代码捕获,要么被传播到调用导致异常的方法并在相应的catch语句中捕获的方法,或者它继续通过方法传播,传播顺序与调用这些方法的顺序相反。但是,一旦达到主方法,此过程就会停止。如果没有在那里捕获,异常将导致程序终止(这将是答案A,异常被忽略)。但是,不会向异常类抛出异常。
结对及互评
点评:
- 博客中值得学习的或问题:
- 问题:排版能力仍需提高
- 错误总结缺少,做题时缺少仔细思考
- 代码中值得学习的或问题:
- 本周代码总量较上多
- 代码编写时规范性有待提高
- 基于评分标准,我给本博客打分:13分。得分情况如下:正确使用Markdown语法(加1分)模板中的要素齐全(加1分)教材学习中的问题和解决过程(加2分)代码调试中的问题和解决过程(加2分)本周有效代码超过300分行(加2分)感想,体会不假大空(加1分)进度条中记录学习时间与改进情况(加1分)结对学习情况真实可信(加1分)有动手写新代码(加1分)点评认真,能指出博客和代码中的问题的(加1分)
点评过的同学博客和代码
其他(感悟、思考等,可选)
对封装分类包装具体概念有待复习,目前做题有困难,应该提前预习,抽时间复习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 6000行 | 25篇 | 300小时 | |
第一周 | 143/143 | 2/2 | 7/7 | 学会对虚拟机进行基础设置,学会git程序简单使用 |
第二周 | 388/531 | 3/5 | 10 /17 | 学会部分基础编码,掌握循环格式话输出等内容 |
第四周 | 807/1338 | 1/6 | 17/34 | 学会运用IDEA编写和测试代码 |
第五周 | 1289/2096 | 2/8 | 17/51 | 学会运用IDEA编写和测试代码 |
第六周 | 1005/3101 | 2/10 | 19/70 | 学会继承封装多态 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:18 小时
-
改进情况:提高了代码总量,对所留作业进行相应知识尽心一定学习,对端口仍不熟却有一定了解。