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分。得分情况如下:
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程(2分)
-
代码调试中的问题和解决过程(2分)
-
本周有效代码超过300分行的(加0分)
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
点评过的同学博客和代码
- 本周结对学习情况
- 结对同学学号20182315
- 结对照片
- 结对学习内容
- 封装
其他(感悟、思考等,可选)
通过自学深入了解Java的知识,结合教材内容,真正明白了以前没明白、死记硬背的东西。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 77/77 | 2/2 | 15/15 | |
第三周 | 424/501 | 3/5 | 30/30 | |
第四周 | 393/894 | 2/7 | 30/30 |
-
计划学习时间:25小时
-
实际学习时间:20小时
-
改进情况:国庆抓紧弥补缺漏