20182314《程序设计与设计结构》第六周学习总结

juminghan juminghan     2023-05-07     175

关键词:

20182314《程序设计与设计结构》 第六周学习总结

教材学习内容总结

第九章 多态 :

1、后绑定:很多情形下,方法调用和方法定义的绑定是在编译的时候完,但多态的引用,绑定必须到运行时才能确定。需要由调用时所指向的对象的类型来确定下来,需要由调用时所指向的对象的类型来确定要用到那个方法定义,这个延迟的提交称为后绑定。

2、通过继承实现多态:当用一个类名声明一个引用变量时,可以用它指向这个类的任何对象。另外,它还可以指向声明继承于它的任意类的任何对象。

3、接口:

(1)抽象方法是一个没有实现的方法,即抽象方法中没有定义方法体,接口不能被实例化。

(2)当一个类给出了接口中定义的每一个抽象方法,就称类实现了接口。

(3)接口名可用来声明对象引用变量,同时接口引用可以指向实现这个接口的任意类的任何对象。

第十章:

1.java程序中出现的问题会产生异常或错误。一个异常是一个对象,它定义了并不经常出现的或是错误的情形。异常由程序或运行时环境抛出,并能被捕获,需要时可进行适当的处理。错误类似于异常,但错误一般表示一种不可被恢复的情况,而且不应该被捕获。

2.如果程序对异常不进行任何处理,那么程序就会非正常终止,并会产生一条消息,描述发生了什么异常,在哪里发生异常。

3.如果try块内发生了异常,则执行对应的catch子句中的代码。如果有finally子句,则不论如何退出try块,都执行其中的语句。(不论是正常退出try块,还是因抛出一个异常而退出,都要执行finally子句)

4.从Exception类或它的一个后继类派生一个新类,就可以新的异常。

5.有些异常是必检的,而其他一些是免检的。必检异常必须被一个方法捕获,或者必须列在抛出它或传播它的任一方法的throws子句。

6.java类库中包含了许多类,可用来定义具有不同属性的I/O流。

7.必须明确关闭输出文件流,否则可能不能正确保存写入的数据。

教材学习中的问题和解决过程

  • 问题1:字符流和字节流有什么区别?

  • 问题1解决方案字节流不会使用到缓冲区,而字符流会。另外,使用缓冲区的字符流更加适合进行中文数据的处理,所以在日常的开发中,如果要涉及到含有中文信息的输出一般都会采用字符流处理,但是从另外一方面来说,字节流和字符流的基本处理形式是相似的,IO很多情况下都是进行数据的传输使用(二进制)。

  • 问题2:错误和异常都会使程序终止运行,两者到底有什么区别?
  • 问题2解决办法:异常是面向对象系统中重要的组成部分。错误类似异常,但错误一般表示一种不可恢复的情况,而且不应该被捕获。同时异常是指程序中出现的问题或不常见的情形。

代码调试中的问题和解决过程

  • 问题1:
    在完成文件读写这个任务时,搞不懂怎么用键盘输入两个数,手写到文件。

  • 问题1解决方案:一开始只是刚刚略懂输入输出流的概念,不会从外部传入数据,所以当听到必须从外部传入两个复数的时候,心情极度崩溃,这意味我必须把之前的所有全部推倒。我参考了java基础io流——OutputStream和InputStream的故事(温故知新)OutputStream得知了Outputstream.write(byte a)为向文件中写入数据,同时理解到Outputstream.write后要加flush和close结束输出否则可能会抛出异常。

  • 问题2:文件读写任务时输入输出流之前传输的数据是byte类型,而我当前编写的计算器只支持字符串

  • 问题2解决方案:

    string转化为byte[]数组:

    String str = "abcd";

    byte[] bs = str.getBytes();

    byte[]数组转化为string字符串:

    byte[] bs1 = 97,98,100;

    String s = new String(bs1);

代码托管

上周考试错题总结

  • 错题1:

    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 你的答案: A

  • 解析:在选择排序的每个连续过程中,都会找到未排序的最小值,并与当前数组索引交换(当前索引从0开始,一直到数组中最后一个位置)。在第一个过程中,最小的元素2与索引0交换,所以2和9交换位置。

  • 错题2:

    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

    正确答案: E 你的答案: C

  • 解析:

    两种排序算法都使用两个嵌套循环,每个循环都执行大约n次,这给两者都带来了N*N或N ^ 2的复杂性。

  • 错题3:

    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 你的答案: B

  • 解析:

    选择排序和插入排序都可以“就地”实现。这意味着不需要额外的内存,只要在两种排序过程中在数据数组中重新排列要排序的数 据。

  • 错题4:

    Which of the following statements is completely true?

    A .If a class is declared to be abstract then every method in the class is abstract and must be overridden

    B .If a class is declared to be abstract then some methods in the class may have their bodies omitted

    C .If a class is declared to be abstract then all methods in the class must have their bodies omitted

    D .If a class is declared to be abstract then all the instance variables must be overridden when a concrete class is derived from the abstract base class

    正确答案: B 你的答案: D

  • 解析:

    创建抽象类的唯一方法是在类中创建一些抽象方法。所以,答案B是真的。当然,抽象类中的所有方法都不必是抽象的。

  • 错题5:

    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 你的答案:B

  • 解析:

    虽然继承和接口支持多态性,但它们只在具有后期绑定的情况下才支持多态性。但是,重载是多态性的一种形式,一个(方法)名,多个体只要程序使用重载,多态性就在使用中。
  • 错题6:

    A reference variable can refer to any object created from any class related to it by inheritance.

    A .true

    B .false

    正确答案: B 你的答案: A

  • 解析:

    这是一种用来实现多态引用的技术,多态引用的精确解释将在执行期间发生变化,具体取决于遇到变量时引用的精确对象。

  • 错题7:

    The fact that the System.out.println( ) method is able to handle such a wide variety of objects, and print them correctly, is an example of the polymorphic nature of the println( ) method.

    A .true

    B .false

    正确答案:A 你的答案:B

  • 解析:
    由于println()本质上是高度多态的,所以它能够正确地打印各种预定义(库)和内置(原语)数据。

  • 错题8:
    A class reference can refer to any object of any class that descends from the class.

    A .true

    B .false

    正确答案:A 我的答案:B

  • 解析:这是使用类名声明引用变量的多态函数之一。

结对及互评

  • 本周结对学习情况

20182330

点评:

  • 代码练习较多,问题较为深邃(至少我看不懂)

  • 基于评分标准我给本博客打分:16分。得分情况如下:
    1.正确使用Markdown语法(加1分)

2.模板中的要素齐全(加1分)

3.教材学习中的问题和解决过程(加3分)

4.代码调试中的问题和解决过程(加4分)

5.其他加分(加7分)

6.进度条中记录学习时间与改进情况(1)

7.感想,体会不假大空(1)

8.有动手写新代码(1)

9.排版精美(1)

10.错题学习深入(1)

11.点评认真,能指出博客和代码中的问题(1)

12.结对学习情况真实可信(1)

其他(感悟、思考等,可选)

最近java水平感觉有所提升,但还是不太想写书上的代码。最近又要学安卓了,安卓确实有点难,一开始都没找到敲代码的位置,确实有点心态爆炸,希望能在跟上的同时尽量往前面撵一撵。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第2、3周 387/400 2/2 20/20

参考资料

201723142017-2018-2《程序设计与数据结构》第六周学习总结

201723142017-2018-2《程序设计与数据结构》第六周学习总结教材学习内容总结数组是一个含有多个值的列表,每个值存在于数组中特定的,具有编号的位置。数组的声明:(1)int[]xxx=newint[3];表示实例化数组xxx后,为其预留了存放三... 查看详情

201723272017-2018-2《程序设计与数据结构》第六周学习总结

学号2017-2018-2《程序设计与数据结构》第X周学习总结教材学习内容总结-数组元素:1.具有N个值的数组索引为0~(N-1).-声明和使用数组:1.可以用new运算符实例化数组,为数组分配保存值的内存空间。在Java中,数组是必须实例化的... 查看详情

20172301《程序设计与数据结构》第六周学习总结(代码片段)

20172301《程序设计与数据结构》第六周学习总结教材学习内容总结树的概述树由一个包含结点和边的集构成。树(一种非线性结构,其中的元素被组织成一个层次结构)结点:树中的一个位置。边:树中两个结点的连接。根结点:... 查看详情

201723302018-2019-1《程序设计与数据结构》第六周学习总结

201723302018-2019-1《程序设计与数据结构》第六周学习总结教材学习内容总结树1、树是非线性结构,其元素组织为一个层次结构2、树的度表示树中的任意结点的最大子结点数3、有m个元素的平衡n叉树的高度是lognm4、树的遍历有4种... 查看详情

20172304《程序设计与数据结构》第六周学习总结(代码片段)

20172304《程序设计与数据结构》第六周学习总结教材学习内容总结本周主要学习的是树的内容,树由结点和边组成,位于树中较低层的结点是上一层结点的孩子。一个结点只有一个双亲,统一双亲的两个节点称为兄弟。没有任何... 查看详情

201723232018-2019-1《程序设计与数据结构》第六周学习总结(代码片段)

201723232018-2019-1《程序设计与数据结构》第六周学习总结教材学习内容总结本周学习了第10章树10.1概述树是一种非线性结构,有一个包含结点和边的集构成。元素保存在结点中,边则将结点连接起来。一些术语根结点是位于树顶... 查看详情

201823182019-2020-1《数据结构与面向对象程序设计》第六周学习总结

201823182019-2020-1《数据结构与面向对象程序设计》第六周学习总结教材学习内容总结第九章多态后绑定。效率低于编译阶段的绑定效率。学习练习如何利用继承方式来实现多态性。学习练习如何利用接口来实现多态性。多态性设... 查看详情

《数据结构与面向对象程序设计》第六周学习总结

学号2019-2020-1《数据结构与面向对象程序设计》第六周学习总结教材学习内容总结多态引用可以在不同时间指向不同类型对象,即运行一致性的方法出现不一致的行为。使用父类声明的引用变量可以指向子类的对象,接口也可以... 查看详情

李晓菁201771010114《面向对象程序设计(java)》第六周学习总结(代码片段)

理论部分:第五章:继承1.继承用已有类来构建新类的一种机制。2..继承的特点:具有层次结构,子类继承了父类的域和方法。3.继承的优点:代码可重用性,父类的域和方法可用于子类,可以轻松定义子类,设计应用程序变得... 查看详情

20182310第六周学习总结

201823102019-2020-1《数据结构与面向对象程序设计》第六周学习总结教材学习内容总结1.利用继承实现多态性:当用类名声明了一个引用变量时,这个变量可以指向该类的任何一个对象,也可以引用通过继承与它所声明的类型有关的... 查看详情

王艳201771010127《面向对象程序设计(java)》第六周学习总结(代码片段)

  实验六继承定义与使用一:理论部分:第五章:继承类。1.继承:已有类来构建新类的一种机制。档定义了一个新类继承另一个类时,这个新类就继承了这个类的方法和域,同时在新类中添加新的方法和域以适应新的情... 查看详情

201723282018-2019《java软件结构与数据结构》第六周学习总结(代码片段)

201723282018-2019《Java软件结构与数据结构》第六周学习总结概述Generalization本周学习了第十章:非线性集合与数据结构--树。主要讨论了树的使用和实现,以及考察实现和使用树的实例。教材学习内容总结Asummaryoftextbook树(tree):... 查看详情

2016710101052016-2017-2《java程序设计》第六周学习心得

这周我们主要学习的是第六章的接口,lambda表达式和内部类,而这周我们主要学习的是接口,由于java不支持多继承,一个类只能有一个超类,为了克服单继承的缺点,我们使用了接口,接口名的命名规则与标识符的命名规则一... 查看详情

刘志梅201771010115.《面向对象程序设计(java)》第六周学习总结

...的情况。        继承是java程序设计中的一项核心技术,也是面向对象特征之一。 &nbs 查看详情

第六周作业(代码片段)

201652272018-4《Java程序设计》第六周学习总结教材学习内容总结第八章String类是Java学习中需要掌握的一种基础类StringTokenizer类:构造一个分析器Scanner类:用于解析出字符序列中所需要的数据StringBuffer类:与String类不同的是其对象... 查看详情

201771010135杨蓉庆《面向对象程序设计(java)》第六周学习总结(代码片段)

实验六 继承定义与使用1、实验目的与要求(1) 理解继承的定义;(2) 掌握子类的定义要求(3) 掌握多态性的概念及用法;(4) 掌握抽象类的定义及用途;(5) 掌握类中4个成员访问权限修饰符的用途;(6) 掌握... 查看详情

20175317《java程序设计》第六周学习总结

20175317《Java程序设计》第六周学习总结教材学习内容总结第六周我学习了教材第七章与第十章的内容,了解了内部类、异常类与输入输出流的知识,学到了以下内容:什么是内部类如何编写与运行内部类了解了和子类有关的匿名... 查看详情

201771010126.王燕《面向对象程序设计(java)》第六周学习总结(代码片段)

实验六 继承定义与使用实验时间 2018-9-281、实验目的与要求(1) 理解继承的定义;继承就是用已有类来构建新类的一种机制,当你继承了一个类时,就继承了这个类的方法和字段,同时你也可以在新类中添加新的方法和... 查看详情