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

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

教材学习内容总结

  • 面向对象程序设计的核心是类的定义,它代表定义了状态和行为的对象

    • toString方法在将对象传递给print和println方法,以及将一个对象与一个字符串连接时,会自动调用对象的toString方法
public String toString()
{
    String result = Integer.toString(faceValue);
    return result;
}
  • 变量的作用域依赖变量声明的位置,作用域决定在哪里可以使用变量
  • 封装
    • 不允许对象的代码直接访问变量,只能调用
    • 可见性修饰符控制类中成员的访问权限。public,private和protected
    • 访问方法:getX;设置方法:setX;客户可以通过它管理数据
  • return
    • 方法头部指定的返回值类型可以是:基本类型、类名、保留字void
    • 方法的返回类型应该与方法头中规定的返回值类型一样
    • 方法应该只有一条return语句作为方法体的最后一行
  • 参数
    • 当调用方法时,将实参复制给形参
    • 方法中,形参和实参互为别名
  • 构造方法
    • 构造方法不能有任何的返回值,即使是void也不行
    • 用来初始化新创建的对象
  • 静态变量
    • eg:private static int count = 0;
    • 静态变量由类中的所有实例所共享
    • 方法内声明的局部变量不能是静态的
  • 静态方法
    • eg:Math类的所用方法都是静态方法
    • public static void main(String[] args)运用static,所以,main可以由解释程序运行,而不需要实例化。
    • 静态方法不会对具体的对象进行操作
    • 静态方法只能访问静态变量或局部变量
  • 聚合
    • 聚合对象由其他对象组成,形成has-a关系
    • 聚合是一类特殊的依赖关系
  • this引用
    • eg:if(this.positise==pieces.positise) result = fault;
    • this引用用来指明某个位置
    • 常用来区分构造方法中参数与对应的同名实例变量(见书p128)
  • 方法重载:让多个方法使用相同的方法名但有不同的参数列表
    • 当调用方法时,控制流将转用定义方法的代码
    • 重载方法的各个版本由参数个数、类型及次序来区分
    • eg:参数的类型、个数等不同
  • 测试
    • 审核:用来评价设计或代码的一项技术
    • 缺陷测试:可以发现错误,进行黑盒测试
    • 单元测试:每个测试创建一个测试用例
    • 集成测试:作为一个整体进行测试
    • 系统测试:观察需求
    • 测试驱动开发:先写测试用例,再进行源代码

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

  • 问题1:抽象类与接口有什么区别
  • 问题1解决方案:抽象方法不用具体书写。要不就抽象,要不就实例化
    • 抽象类中可以存在非抽象的方法 ; 接口中的方法被默认的变成抽象方法,只要是定义了接口,接口中的方法就全部变成了抽象类即使你不写abstract 它也是抽象的方法
    • 接口是抽象类的一种, 也可以说接口是抽象类的延伸
    • 抽象类可以有私有的成员变量和成员方法 ; 接口中的方法全都被默认的修饰为: public abstract 类型的方法
    • 一个类只能继承一个抽象类 一个类可以实现多个接口 ,接口可以实现多继承 举例:interface display extends aa ,bb,cc ...等等 ,然后让类去实现 display的接口 就可以实现 display aa bb cc接口
    • 抽象类中的非抽象的方法可以选择继承 ; 接口中的方法必须全部被重写 ,并且全部是公有的public 方法.
  • 问题2:新建变量有几种方法
  • 问题2解决方案:
    • 关键字 new。工厂模式是对这种方式的包装;
    • 类实现克隆接口,克隆一个实例。原型模式是一个应用实例;
    • 用该类的加载器,newinstance。java的反射,反射使用实例:Spring的依赖注入、切面编程中动态代理
    • sun.misc.Unsafe类,allocateInstance方法创建一个实例。(Java官方也不建议直接使用的Unsafe类,据说Oracle正在计划从Java9中去掉Unsafe类)
    • 实现序列化接口的类,通过IO流反序列化读取一个类,获得实例。
    • 如果是静态变量就直接用
  • 问题3:局部数据和实例数据有什么区别?
  • 问题3解决方案:(如图:)

  • 问题4:什么叫做交互?
  • 问题4解决方案:
    • 构造函数传递
    • 通过getX和setX方法
    • 接口

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

  • 问题1:Coin中(如下),为什么要有这个,既然有为什么不把isHead写进去?

  • 问题1解决方案:flip方法,将硬币设为初始的随机状态;
  • 问题2:Account中的free,为什么要使用?

  • 问题2解决方案:我初步认为这应该是信用额度,可提前支出

代码托管

上周考试错题总结

  • In order to preserve encapsulation(封装) of an object, we would do all of the following except for which one?

    • A .Make the instance data private
    • B .Define the methods in the class to access and manipulate the instance data(定义类中的方法来访问和操作实例数据)
    • C .Make the methods of the class public
    • D .Make the class final
    • E .All of the above preserve encapsulation
    • 正确:D
    • 原因:封装意味着类包含操作数据所需的数据和方法。为了正确地保留封装,实例数据不应该直接从类外部访问,因此实例数据被设为私有,并定义方法来访问和操作实例数据。此外,访问和操作实例数据的方法被公开,以便其他类可以使用该对象。保留字“最终”用于控制继承,与封装无关。
  • Consider a sequence of method invocations as follows: main calls m1, m1 calls m2, m2 calls m3 and then m2 calls m4, m3 calls m5. If m4 has just terminated, what method will resume execution?(考虑以下方法调用序列:主调用m1, m1调用m2, m2调用m3,然后m2调用m4, m3调用m5。如果m4刚刚终止,什么方法将恢复执行)
    • m2
  • A variable whose scope is restricted to the method where it was declared is known as a(n)(一个变量的作用域被限制在它声明的方法中,称为A (n))
    • A .parameter(参数,系数)
    • B .global variable(全局变量)
    • C .local variable(局部变量)
    • D .public instance data(公共实例数据)
    • E .private instance data(私人实例数据)
    • 正确:C
  • A class‘ constructor usually defines
    • A .how an object is initialized
    • B .how an object is interfaced
    • C .the number of instance data in the class
    • D .the number of methods in the class
    • E .if the instance data are accessible outside of the object directly
    • 正确:A
    • 原因:构造函数应该用于“构造”对象,即设置实例数据的初始值。这不是必需的,但通常是这样做的。对象的接口由实例数据和方法上使用的可见性修饰符决定。
  • The following method header definition will result in a syntax error: public void aMethod( );
    • 正确:true
    • 原因:语法错误的原因是它以“;”符号结束。相反,它需要在{}后面加上括号内的0或更多的指令。抽象方法将以“;”结束,但是这个头没有定义抽象方法。
  • While multiple objects of the same class can exist, in a given program there can be only one version of each class
    • 正确:true
    • 原因:类是一个抽象,也就是说,它作为一个定义而存在,而不是作为一个物理实例而存在。使用new实例化对象时创建物理实例。因此,可以有许多String类型的对象,但只有一个String类。
  • An object should be encapsulated in order to guard its data and methods from inappropriate access.
    • 正确:true
    • 原因:封装是这样一个概念:应该保护对象不受意外(或有目的)的误用。
  • Accessors and mutators provide mechanisms for controlled access to a well-encapsulated class.
    • 正确 :true
    • 原因:访问器提供对变量的读访问,否则这些变量是不可访问的。mutator提供对以其他方式不可访问的变量的写访问
  • Java does not support multiple inheritance, but some of the abilities of multiple inheritance are available by
    • 正确:
    • A .importing classes
    • B .implementing interfaces
    • C .overriding parent class methods
    • D .creating aliases
    • E .using public rather than protected or private modifiers
    • 正确:B
    • 原因:因为一个类可以实现任意数量的接口,所以这个类本质上使用接口类,就好像这些接口是在这个类中定义的一样。这个类继承了接口的方法和常量。此外,该类可以扩展另一个类,从而直接或间接地继承多个类。这与多重继承并不完全相同,但它与Java的概念非常接近

      结对及互评

  • 博客中值得学习的或问题:
    • 类和包究竟有什么关系?public类具体是修饰什么的,为什么当其存在时文件名与其所修饰的类要相同?(2330)
    • 枚举类型好像挺鸡肋的,到底有啥用?(2311)
  • 代码中值得学习的或问题:
    • Math里面的随机数方法是random不是Random,注意区分大小写。
    • 在输入字符时,使用nextChar方法(2303)
  • 基于评分标准,我给本博客打分:14分。得分情况如下:
    • 正确使用Markdown语法 1分
    • 模板中的要素齐全 1分
    • 教材学习中的问题和解决过程 4分
    • 代码调试中的问题和解决过程 2分
    • 感想,体会不假大空 1分
    • 排版精美的 1分
    • 进度条中记录学习时间与改进情况 1分
    • 点评认真,能指出博客和代码中的问题 1分
    • 错题学习深入 1分
    • 结对学习情况真实可信 1分

点评过的同学博客和代码

  • 本周结对学习情况

    • 20182326
    • 结对照片
    • 结对学习内容
      • idea插件运用
      • 码云链接上传
  • 上周博客互评情况

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

现在的学习难度逐渐加大,我认为我需要去自己学习,自己感悟,自己理解,不断进步。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 69/69 2/2 30/30
第二、三周 529/598 3/5 25/55
第四周 443/1041 2/7 25/80

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

原文地址:https://www.cnblogs.com/zhaopeining/p/11614558.html

时间: 2024-08-23 04:58:24

20182301 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结的相关文章

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

20182304 2019-2020-1 <数据结构与面向对象程序设计>第四周学习总结 教材学习内容总结 1.本章我们学习了使用并编写我们自己的类:类中有与类同名的构造方法,也可以有set,get,toSring与自己定义的方法.实例化一个对象,可通过该对象使用类里的所有方法.实例数据是每次创造一个实例后自动生成新的内存空间的变量 2.uml类图 :每个类可能包含三部分内容:类名.属性.操作(方法).UML类图有属于自己的语法,变量的类型名在变量名的后面,它们之间用冒号作为分隔符,方法的+和-

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

20182306 2019-2020-1 <数据结构与面向对象程序设计>第五学习总结 教材学习内容总结 尽量简单的总结一下本周学习内容 尽量不要抄书,浪费时间 看懂就过,看不懂,学习有心得的记一下 教材学习中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码调试中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码托管 (stat

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

教材学习内容总结 1.编写类与方法(构造方法的结构和用途) 2.实际参数与形式参数.public与private.return与void的区别与含义. 3.UML类图的含义与形式 4.静态类(Math类)静态变量.静态方法 5.类间关系(依赖关系.聚合关系.继承关系) 6.接口的使用,能够在某个类中实现接口的方法(Comparable.Iterator) 7.软件活动开发.方法设计.方法重载.测试(黑盒测试.白盒测试) 教材学习中的问题和解决过程 问题1:toString与return返回的值的

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

教材学习内容总结 1.继承的基本语法与用法. 2.利用UML类图表示继承关系. 3.在具体编写类的时候,先是数据声明再是方法声明. 4.toString方法用println或print或字符串连接会自动调用. 5.每创建一个对象.都会为类中声明的变量建立新的内存空间. 6.UML图一些基础使用方法. 7.对象应该是自管理的,既对象的实例数据应该仅由该对象来修改,这就构成了封装. 代码调试中的问题和解决过程 问题1:测试代码出现错误 问题1解决方案:junit的方法名必须是textxxx或xxxt

20182301 2019-2020-1 《数据结构与面向对象程序设计》实验3报告

20182301 2019-2020-1 <数据结构与面向对象程序设计>实验3报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 赵沛凝 学号:20182301 实验教师:王志强 实验日期:2019年9月23日 必修/选修: 必修 1.实验内容 下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html). 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态(自己去学!) 初步掌握UM

20182301 2019-2020-1 《数据结构与面向对象程序设计》实验6报告

20182301 2019-2020-1 <数据结构与面向对象程序设计>实验6报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 赵沛凝 学号:20182301 实验教师:王志强 实验日期:2019年10月23日 必修/选修: 必修 1.实验内容 链表练习,要求实现下列功能: 通过键盘输入一些整数,建立一个链表:这些数是你学号中依次取出的两位数,再加上今天的时间.例如你的学号是 20172301,今天时间是 2018/10/1, 16:23:49.数字就是:20, 17,

20182301 2019-2020-1 《数据结构与面向对象程序设计》实验9报告

20182301 2019-2020-1 <数据结构与面向对象程序设计>实验9报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 赵沛凝 学号:20182301 实验教师:王志强 实验日期:2019年12月2日 必修/选修: 必修 1.实验内容 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数.边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分) 图的遍历:完成有向图和无向图

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

20182301 2019-2020-1 <数据结构与面向对象程序设计>第7周学习总结 教材学习内容总结 第十二章 算法效率:用更少的时间去做同等质量的事情 好算法的要求:正确性.可读性.健壮性.通用性.效率与储存空间需求 算法效率可以用问题大小(n)和及处理步骤来定义.增长函数表示问题大小与希望优化的值之间的关系,该函数表示算法的时间或空间利用率 复杂度(时间.空间) 图: 注意:若计算一个算法的阶,其中涉及函数调用时,要把函数里面的调用也算上. 第十四章 集合 集合是收集并组织其他对象的对

20182327 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182327 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名:赵天昊 学号:20182327 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证. 2. 实验过程及结果 不多说,上