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

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

教材学习内容总结

  1. UML类图有助于呈现程序中类的内容和类之间的关系
  2. 类与对象:类是对象的蓝图。它定义的变量和方法,是由类实例化时得到的每个对象的组成部分。但是类不会为变量保留内存空间。每个对象有自己的数据空间,所以有自己的状态。
  3. 修饰符:是java的保留字,用在变量或方法的定义中,指定他们的具体使用特性。如private来声明,则不能从其定义所在的范围外访问该变量。
  4. 接口:对象的接口是定义在对象上的一组公用操作,即接口建立了对象为其他系统执行的一组服务。
  5. this:通常指向当前正在运行的对象。类的非静态方法一般为类的所有对象所共有,但它通过一个具体对象来调用。所以this引用指向的对象,正是执行的方法所依赖的对象。
  6. 聚合对象由其他对象组成,形成has-a关系
  7. 尝试编写不在java类库中的预定义类,定义对象可以实现的方法函数。
  8. 了解UML这种统一建模语言,学习类名、属性(数据)、操作(方法)之间的关系。
  9. 学习封装以及实现封装的修饰符(介绍了可见性修饰符中的public和private。在UML中+表示public可见性,-表示private可见性)
  10. 学习了访问器和修改器方法,访问器为getX,修改器为setX。这里的方法命名习惯将实例变量名的第一个字母大写。
  11. 了解方法的分析,类由数据声明和方法声明组成,方法是一组编程语句。java程序中的方法是一个类的组成部分。方法声明首部包括返回值类型、方法名及该方法所接受的参数的列表,构成方法体的语句则定义在由花括号定界的范围内。
  12. 方法的返回值类型必须与方法声明首部规定的返回值类型一致。定义类时,通常要定义一个构造方法以辅助创建类的实例,这个构造方法常用于初始化与每个对象有关的变量。构造方法没有任何返回类型,甚至也没有void类型。调用方法时,将把实参复制给被调方法的形参。

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

  • 问题1:什么叫交互?接口是如何与对象交互的?
  • 问题1解决方案:接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,接口就是java提供的一个面向对象的机制(就好比抽象方法和常量值的定义的集合,申明方法和类的申明方法差不多.
    作用:
    (1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。
    (2)通过接口可以指明多个类需要实现的方法。
    (3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

  • 问题2:return语句怎么使用?为什么不能一次返回多个实际参数?
  • 问题2解决方案:方法的返回值类型必须与方法声明首部中规定的返回值类型一致。当方法不返回任何值时,用void作为返回值类型。一条return语句由保留字return和后续的可选表达式组成。执行return语句时,控制立即返回到调用方法,并返回表达定义式的返回值。
  • 问题3:静态变量和静态方法有什么区别?
  • 问题三解决方案:静态变量
    可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象。
    静态变量有两种情况:
    静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用
    静态变量是一个引用。这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它。因此如果要把一个引用定义成static的,就必须在定义的时候就对其对象进行初始化。
    静态方法
    与类变量不同,方法(静态方法与实例方法)在内存中只有一份,无论该类有多少个实例,都共用一个方法。

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

  • 问题1:书上代码。implements Complexity是什么意思
  • 问题1解决方案:删去implements Complexity就可以了。extends与implements的不同:
    extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。

JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。

  • 问题2:还是书上的代码,在vim里运行疯狂出错
    -

  • 问题2解决方案:在idea中运行,发现int写成了void
  • 运行成功!

代码托管

(statistics.sh脚本的运行结果截图:因为暑假下载的idea不是完整版,好多插件都没有,代码量也与其他人设置方法不同,打算之后下载一个完整版,截图后补)

上周考试错题总结

  • 错题1

  • 分析:对象是类的实例。程序代码直接与对象交互,而不是类。理解有误!
  • 错题2

  • 分析:手滑点错了,一个变量的作用域被限制在它声明的方法中当然是局部变量啦。
  • 错题3

  • 分析:实例数据是组成类的实体,可以是任何可用的类型(无论是基元类型还是对象类型),也可以是公共类型或私有类型。通过使用对象作为实例数据,它允许在其他类的基础上构建类。如果一个类拥有其他类的实例数据,则这种关系称为has-a关系。这在这周总结中有,当时做题的时候没有思考。
  • 错题4

  • 分析:A、D没有参数,equals可以传递字符串进行比较。
  • 错题5

  • 分析:声明任何类型的构造函数(甚至是void)都是违反语法的。
  • 错题6

  • 分析:题目搞反了,形式参数是出现在方法头中的参数,实际参数是方法调用中的参数(传递给方法的参数)。
  • 错题7

  • 分析:所有Java方法都返回单个项,无论是对象的基本数据类型还是void。保留字continue用于退出循环的其余部分并再次测试条件。
  • 错题8
  • 分析:不应该以分号结束,应该在{}后加入更多指令。
  • 错题9

  • 分析:实例数据对所有类的方法都是全局可用的,因此这些方法不需要声明
  • 错题10

  • 分析:接口是外部代理如何与对象交互的。交互只能通过类定义中声明为公共的那些项来实现。
  • 错题11

  • 分析:Java允许在没有构造函数的情况下定义类。
  • 错题12
  • 分析:构造函数可能包含非值返回的返回语句。当时做的时候没有理解过来。

结对及互评

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

  • 关于接口的细小的问题提出的很好,说明看书看的很仔细,我要向他学习。
  • 问题:问题阐述较为简单,可以更加深入剖析一下

代码中值得学习的或问题:

  • 代码练习较少,希望多加练习
    基于评分标准,我给本博客打分:13分。得分情况如下:
  1. 正确使用Markdown语法(加1分)
  2. 模板中的要素齐全(加1分)
  3. 教材学习中的问题和解决过程(加3分)
  4. 代码调试中的问题和解决过程(加3分)
  5. 其他加分(加5分)
  6. 进度条中记录学习时间与改进情况(1)
  7. 感想,体会不假大空(1)
  8. 有动手写新代码(1)
  9. 排版精美(1)
  10. 错题学习深入(1)
  11. 点评认真,能指出博客和代码中的问题(1)
  12. 结对学习情况真实可信(1)

点评过的同学博客和代码

  • 本周结对学习情况
    20182314
  • 结对照片
    -

  • 结对学习内容
  1. idea代码量统计问题
  2. idea使用问题
  3. 接口问题探讨

其他

  1. 这周各种事情繁多,在编程上有所懈怠。国庆期间希望能够及时复习,查漏补缺。
  2. 暑假下载的idea好像有点问题,好多功能缺失,得好好研究研究。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 42/42 2/2 20/20
第三周 394/471 2/4 25/45
第四周 394/471 2/6 20/65
  • 计划学习时间:20小时

  • 实际学习时间:20小时

  • 改进情况:学习时间缩短,需要加把劲了

参考资料

猜你喜欢

转载自www.cnblogs.com/weiii/p/11612837.html