zoukankan      html  css  js  c++  java
  • 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

    • 运行成功!

    代码托管

    {{屏幕快照 2019-10-07 下午10.01.44.png(uploading...)}}

    上周考试错题总结

    • 错题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小时

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

    参考资料

  • 相关阅读:
    CF1450H2
    CF1379F2
    CF1217F
    CF1393E2
    CF1510H
    CF1514E
    CF1515G
    CF1516E
    在pycharm中导入PyMysql出错,解决方法
    搭建fastdfs文件服务器
  • 原文地址:https://www.cnblogs.com/weiii/p/11612837.html
Copyright © 2011-2022 走看看