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

目录

学号20182323 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结

教材学习内容总结

  • 1.对象和类的关系;(类是对象的蓝图)
  • 2.理解对象的状态(属性)和行为(操作);
  • 3.理解类的分配职责和一些类的构造方法;
  • 4.了解UML类图(统一建模语言);
  • 5.公有和私有可见性修饰符(public、private);
  • 6.理解方法定义和方法声明;
  • 7.return语句的使用;
  • 8.静态方法的调用;
  • 9.类之间的关系(依赖、聚合、继承);(还未掌握)
  • 10.方法设计(方法分解、方法参数的传递);(还未掌握)
  • 11.方法重载(参数类型、个数不同);
  • 12.测试和调试(jdb、print语句)。

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

  • 问题1:对成员变量,局部变量,静态变量之间的区别理解不够。

  • 问题1解决方案:查阅网上资料得知:它们之间的区别可参考下表

  • 问题2:对于课本中的return语句的用法有些模糊。

  • 问题2解决方案:结合上周阅读的资料和课本内容,return语句的用法总结如下:

    1.由保留字return再加一个表达式组成,表达式代表要返回的值;

    2.return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行;

    3.return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致;

    4.return 后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。

  • 问题3:看了课本上的算法中的伪代码,想要加深理解伪代码。

  • 问题3解决方法:查找相关资料,总结如下:

    1.伪代码由中文和英文混合组成,能够更好地表达算法

    2.在伪代码中,每一条指令占一行(else if,例外)。指令后不跟任何符号(Pascal和C中语句要以分号结尾)。书写上的“缩进”表示程序中的分支程序结构;

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

  • 问题1:在Ubuntu终端对代码进行码云git时,显示更新被拒绝,因为远程仓库包含您本地尚不存在的提交。

  • 问题1解决方案:通过查阅资料得知,原来是我之前通过网页向仓库提交过文件。解决方法是输入命令git pull origin master --allow-unrelated-histories
    这样对本地仓库和远程仓库进行合并冲突后,就可以正常愉快的使用 git push命令啦~

代码托管

上周考试错题总结

  • 问题1: If a programmer writes a class wanting it to be extended by another programmer, then this programmer must(如果一个程序员写了一个类,这个类想要被其他程序员拓展,那么这个程序员应该?)

    A . change private methods and instance data to be protected(将私有方法和示例数据改为protected型)

    B . change public methods and instance data to be protected(把公有方法示例数据改为protected型)

    C . change all methods to be protected(改变所有的方法为protected型)

    D . change the class to be protected(将类改变为protected型)

    E . none of the above, the programmer does not have to change anything(上述没有正确答案,这个程序员不需要改变任何)

  • 问题1解析和理解:正确答案A。我当时选择E。声明为protected的部分可以由定义它们的类的任何子类访问,而声明为private的部分不能被任何其他类访问。因此,以前定义的private项必须受到保护。以前定义的public项应该保持,以便所有其他类仍然可以访问这些public项。以前定义的private不应该公开,因为这将允许所有类访问它们,而不仅仅是子类。

  • 问题2:Which of the following is true regarding Java classes?(关于java类,下面哪一个是正确的?)

    A . All classes must have 1 parent but may have any number of children (derived or extended)
    classes(所有的类都必须有一个父类但是可以有无限的子类)

    B . All classes must have 1 child (derived or extended) class but may have any number of parent classes(所有的类都必须有一个子类,但可以有无限的父类)

    C . All classes must have 1 parent class and may have a single child (derived or extended) class(所有的类都必须有一个父类和一个子类)

    D . All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes(所有的类可以有任何数量的父类和子类)

    E . All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes(所有类都有1个或者0个父类和无限多的子类)

  • 问题2解析和理解:正确答案选A,我当时选择E。老师在课堂上强调的时候才对这个问题有了更深刻的了解。object类是所有类的祖先,也就是说,所有的类都是object类派生出来的。因此答案选A。

  • 问题3:A variable declared to be of one class can later reference an extended class of that class. This variable is known as(一个被声明为一个可变类的变量可以引用该类的扩展类。这个变量被称为)

    A . protected

    B . derivable

    C . cloneable

    D . polymorphic

    E . none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class

  • 问题3解析和理解:正确答案选D,我当时选择的是A。,当时还没学到多态,看到继承一章的关键词protected就果断下手了。其实多态表示变量可以有多种形式存在。在一般情况下,Java被强制定义为,一个变量,一旦声明为某种类型,就永远不能改变其为不同的类型。唯一的例外是多态变量可以是任何类型的派生类(尽管不是在同一时间,变量也可以从一种类型转换为另一种类型)。

  • 问题4: Using the reserved word, super, one can(用保留字super,能够)

    A . access a parent class'constructor(s)(访问父类构造函数)

    B . access a parent class'methods and instance data(访问父类方法和实例数据)

    C . access a child class'constructor(s)(访问子类构造函数)

    D . access a child class'methods and instance data(访问子类方法和实例数据)

    E . none of the above(没有正确选项)

  • 问题4解析和理解:正确答案选择E。我当时选择A。本题关键点在于A 和B答案都是对的,所以应该将两个答案结合起来才行,当时只看了一个答案草草完事,非常的不细心,以后要注意。

  • 问题5: Why shouldn't an abstract method be declared final?(为什么不应该把一个抽象的方法声明为final呢?)

    A . There's nothing wrong with doing so(这样做没错)

    B . Abstract methods cannot be overridden and they must be if a concrete class ever is to be instantiated(抽象方法不能被覆盖,它们必须是要实例化的具体类)

    C . So long as the Abstract method never actually is used in by any other method, there's no problem with doing this(只要抽象方法从来没有被任何其他方法使用过,那么做这个就没有问题了)

    D . So long as the Abstract method is declared in a Class (not an Interface), there's nothing wrong with doing this(只要抽象方法在类中声明(而不是接口),那么做这件事就没有什么错)

    E . None of the above(没有正确选项)

  • 问题5解析和理解:正确答案B,我当时的选项E,我也不知道我为什么要选E。要使抽象方法成为具体的方法,它必须被覆盖。声明一个方法是final的,就让其不可能被覆盖。因此不能。

  • 问题6: Interface classes cannot be extended but classes that implement interfaces can be extended.(接口类不能被扩展,但是实现接口的类可以被扩展)

    A . true

    B . false

  • 问题6解析和理解: 正确答案选B,当时我选的是A,属于对概念不清楚。任何类都可以被扩展,无论它是一个接口,还是实现一个接口,或者两者都没有。唯一的例外是,如果该类被显式地用“final”这个词进行修饰,在这种情况下,它不能被扩展

结对及互评

点评模板:

  • 博客中值得学习的或问题:

    • 加入自己学习过程中的图片,给人印象深刻。
    • 对问题剖析到位,有深入学习。
  • 代码中值得学习的或问题:

    • 代码排版越来越规范,便于阅读
    • 代码中适当加入注释会更好
  • 基于评分标准,我给本博客打分:13分。得分情况如下:

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程(2分)

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

  5. 本周有效代码超过300分行的(加0分)

  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分

点评过的同学博客和代码

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

通过自学深入了解Java的知识,结合教材内容,真正明白了以前没明白、死记硬背的东西。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 77/77 2/2 15/15
第三周 424/501 3/5 30/30
第四周 393/894 2/7 30/30
  • 计划学习时间:25小时

  • 实际学习时间:20小时

  • 改进情况:国庆抓紧弥补缺漏

参考资料

成员变量、类变量、局部变量的区别

Java 对象和类

posted @ 2019-09-30 23:08  20182323曹骞  阅读(202)  评论(1编辑  收藏  举报