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

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

教材学习内容总结

  • 1.本章我们学习了使用并编写我们自己的类:类中有与类同名的构造方法,也可以有set,get,toSring与自己定义的方法。实例化一个对象,可通过该对象使用类里的所有方法。实例数据是每次创造一个实例后自动生成新的内存空间的变量
  • 2.uml类图 :每个类可能包含三部分内容:类名、属性、操作(方法)。UML类图有属于自己的语法,变量的类型名在变量名的后面,它们之间用冒号作为分隔符,方法的+和-表明可见性。箭头指向,表明一个类知道并以某种方法使用另一个类(调用)。
  • 3.封装概念
  • 4.可见性修饰符 :public 可从类外直接访问(一般将常量设为公有,因为它不能被随意改变,安全性可以得到保障)
    private 强制封装,不能被类外调用 protected与继承关系相关,既可以被子类调用,也保证了封装
  • 5.类中的关系:依赖(has a)、继承、聚合,this引用
  • 6.接口的概念

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

  • 问题1:如何理解静态方法
  • 问题1解决方案:静态方法用static修饰,不用实例化类就可以调用。它不能引用类的实例中的实例变量,所以一般引用静态变量
  • 问题2:this引用有什么作用
  • 问题2解决方案:this引用能让一个对象指向自己,this引用常用来区分构造方法中的参数与对应的同名实例变量。在需要给类中的数据传参时,可以取相同的名字,只要左边加上this.引用
  • 问题3:封装的概念是什么,为什么要提倡封装
  • 问题3解决方案:对象应该是封装的,封装就是将数据与相关行为包装在一起以实现信息隐藏,既可以隐藏类的实现细节,又可以避免对类中属性的直接操作。封装实际上控制用户对类的修改和访问数据的程度,只能够通过对象提供服务的那些方法与程序其它部分进行交互,接口是封装的准确描述手段。一个类内的声明变量,应该仅由类内访问并修改,类外不应该也不能修改变量的值。

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

  • 问题1:误在get方法中传参导致程序错误
  • 问题1解决方案:通过同学的帮助,了解到get方法中不能传入参数,只能返回数据。传参应该在其它方法如set中完成
  • 问题2:在敲书上的Coin类时,一行代码count1 = (coin1.isHeads()) ? count1+1 : 0;我将count1+1敲成了count++,本来以为区别不大,程序运行时却造成了死循环

  • 问题2解决方案:count++count=count+1等价,count本身被该变了。因为上式中等式左边有count=,所以造成了死循环。而count+1不改变count的值,所以在赋值语句中可以正常使用
  • 问题3:git配置好后无法正常上传
  • 问题3解决方案:没有看清 push 后再提交,默认的是commit,需要自己手动设置一下

代码托管

上周考试错题总结

  • What is the function of the dot operator?

    • A .It serves to separate the integer portion from the fractional portion of a floating point number
    • B .It allows one to access the data within an object when given a reference to the object
    • C .It allows one to invoke a method within an object when given a reference to the object
    • D .It is used to terminate commands (much as a period terminates a sentence in English)
    • E .Both B and C are correct
    • The dot operator is appended directly after the object reference, followed by the data or method to which access is desired. In the case of data, the access may be for reading or writing. In the case of a method, the access is to allow one to invoke the method. The dot within a floating point number is a decimal point not a dot operator.
    • 理解:点运算符可以直接加在对象引用之后,然后加上要调用的方法名,也可以在给定对象的引用时访问对象中的数据。。
  • The String class‘ compareTo method
    • A .compares two string in a case-independent manner
    • B .yields true or false
    • C .yields 0 if the two strings are identical
    • D .returns 1 if the first string comes lexically before the second string
    • E .none of the above
    • 理解:identical为相等,没有理解英文含义导致错误。compareTo与C中的用法相似
  • The names of the wrapper classes are just the names of the primitive data types, but with an initial capital letter.
    • A .true
    • B .false
    • This is true for most of the wrapper classes, but it is false for int (Integer) and char (Character).
    • 理解:翻阅图书,可查到int的包装类为Integer,char的包装类是Character,其它类型包装类为首字母大写
  • The advantage(s) of the Random class‘ pseudo-random number generators, compared to the Math.random method, is that
    • A .you may create several random number generators
    • B .the generators in Random are more efficient than the one in Math.random
    • C .you can generate random ints, floats, and ints within a range
    • D .you can initialize and reinitialize Random generators
    • E .all but answer B
    • The efficiency of all the random number generators are the same. The advantages of Random generators over Math.random include all the other properties.
    • 理解:效率是一样的
  • These two ways of setting up a String yield identical results:
  • a) String string = new String("123.45"); b) String string = "" + 123.45;
    • A .true
    • B .false
    • 理解:""也是字符串,+可以自动连接字符串,这样后面的数字也以字符串的形式被赋给了string,两者等价
  • 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
    • Encapsulation means that the class contains both the data and the methods needed to manipulate the data. In order to preserve encapsulation properly, the instance data should not be directly accessible from outside of the classes, so the instance data are made private and methods are defined to access and manipulate the instance data. Further, the methods to access and manipulate the instance data are made public so that other classes can use the object. The reserved word "final" is used to control inheritance and has nothing to do with encapsulation.
    • 理解 :D一定是错误的,如果把类设置成final,它就不能被重写,子类一直都会是抽象类,不能实例化
  • Having multiple class methods of the same name where each method has a different number of or type of parameters is known as
    • A .encapsulation
    • B .information hiding
    • C .tokenizing
    • D .importing
    • E .method overloading
    • When methods share the same name, they are said to be overloaded. The number and type of parameters passed in the message provides the information by which the proper method is called.
    • 理解:错误原因是因为对书中类型知识点理解不足
  • Visibility modifiers include
    • Public, private, protected control the visibility of variables and methods. Final controls whether a variable, method, or class can be further changed or overridden not visibility. Static controls whether a variable or method is associated with instances of a class or the class itself.
  • The following method header definition will result in a syntax error: public void aMethod( );
    • A .true
    • B .false
    • The reason for the syntax error is because it ends with a ";" symbol. It instead needs to be followed by { } with 0 or more instructions inside of the brackets. An abstract method will end with a ";" but this header does not define an abstract method.
    • 理解:首先,方法后不能有冒号。其次,它后面应该有一个大括号
  • Every class definition must include a constructor.
    • A .true
    • B .false
    • Java allows classes to be defined without constructors, however, there is a default constructor that is used in such a case.
    • 理解:可以不定义,它会默认生成一个构造方法

结对及互评

评分标准

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

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)
    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分
  4. 代码调试中的问题和解决过程, 一个问题加1分
  5. 本周有效代码超过300分行的(加2分)
    • 一周提交次数少于20次的不加分
  6. 其他加分:
    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:
    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

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

    • 错题分析总结较为全面
    • 教材内容总结齐全
    • 问题总结不够深刻
  • 代码中值得学习的或问题:
    • 本周代码行数相对下降
  • 基于评分标准,我给本博客打分:17分。得分情况如下:
  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况

    • 20182302

      • 结对学习内容
      • 学习接口的概念与具体操作
      • 理解类的定义与封装
      • 调试实验程序中的编译错误
  • 上周博客互评情况

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

  • 在测试后,我发现自己只对教材有大概理解,很多知识点细节还是陌生的,存在着很大的提升空间
  • 从第五章开始,Java的学习难度是比较大的,需要花费更多时间精力学习

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 35/100

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

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

  • 计划学习时间:40小时
  • 实际学习时间:35小时
  • 改进情况:我会努力提高一些学习效率

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/acgacg/p/11614371.html

时间: 2024-10-12 21:16:34

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

20165115 2017-2018-2 《Java程序设计》第四周学习总结

20165115 2017-2018-2 <Java程序设计>第四周学习总结 教材学习内容总结 第五章主要是围绕子类的继承展开,并在此基础上介绍了一系列的方法与关键字.第六章主要讲述的内容是接口的实现. 代码托管 上周考试错题总结 完成后补充 参考资料 Java学习笔记(第8版) <Java学习笔记(第8版)>学习指导 ... 原文地址:https://www.cnblogs.com/zcy20165115/p/8643294.html

20165318 2017-2018-2 《Java程序设计》第四周学习总结

20165318 2017-2018-2 <Java程序设计>第四周学习总结 IDEA安装 按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法申请免费使用,我在网上找到了IntelliJ Idea 2017 注册码 免费激活方法顺利安装并运行了IDEA. 教材学习总结 第五章 子类与继承 每个子类只能有一个父类,而一个父类可以有多个子类.可以使用关键字extends来定义一个类的子类: class 子类名 extends 类在不加extends关键

20172330 2017-2018-1 《Java程序设计》第四周学习总结

20172330 2017-2018-1 <Java程序设计>第四周学习总结 教材学习内容总结 这一周的内容还是比较多的,而且很复杂,包含第四和第七章. 第四章向我们介绍了类结构的定义与概念,同时举出了好多个例题向我们展示自定义类的方法与应用,对于方法定义的结构与用途进行了讨论:包括return语句,参数,局部数据等方面. 第七章的主要内容则是面向对象设计.通过书本的介绍了,我们探讨了面向对象软件设计的主要问题,了解了确定程序所需要的类和对象的技术,对类之间的关系进行了探讨,详细的学习了sta

20172325 2016-2017-2 《Java程序设计》第四周学习总结

20172325 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 1.对类.对象.声明变量的定义和属性有了进一步的了解 2.学会如何编写一个类并运用到需要的程序中 3.学习了形参和实参的概念和区别 4.修饰符的作用和运用,例如public和private 5.学习了静态类,例如静态方法和静态变量 6.关于封装的作用和运用 7.在面向对象的程序设计时需要做的必要步骤,包括需求.设计.实现和测试 8.对枚举类的进一步了解 9.学习了调用方法中的方法重载 10.UML类

张季跃 201771010139《面向对象程序设计(java)》第十四周学习总结

张季跃 201771010139<面向对象程序设计(java)>第十四周学习总结 第二部分:实验部分 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程序1 l 在elipse IDE中运行教材479页程序12-1,结合运行结果理解程序: l 掌握各种布局管理器的用法: l 理解GUI界面中事件处理技术的用途. l 在布局管理应用代码处添加注释: 测试结果:   测

# 20175227张雪莹 2018-2019-2 《Java程序设计》第四周学习总结

20175227张雪莹 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 一.子类和父类. 1.子类只继承父类中的protected和public访问权限的成员变量(方法)作为子类的成员变量(方法). 2.若A->B->C->D, 在Other类中用D类中protected的成员变量和方法创建对象object,则两个类需处于同一个包中: 在Other类中用D类继承A类中protected的成员变量和方法创建对象object,则A类和Other类需处

20175226 2018-2019-2 《Java程序设计》第四周学习总结

20175226 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 子类与父类 格式class 子类名 extends 父类名 Object类是所有类的祖先类 子类的继承性 在同一包中子类会继承非private的成员和方法 不在同一包中只会继承protected和public的成员和方法 成员变量的隐藏 子类可会将同自身变量名字相同的继承变量隐藏 子类继承方法只能操作子类继承或隐藏的变量 子类新定义的方法不能操作隐藏的成员变量 方法重写 子类中定义一个与父类方法完全

20175314 《Java程序设计》第四周学习总结

20175314 <Java程序设计>第四周学习总结 教材学习内容总结 每个子类只能有一个父类,而一个父类可以有多个子类.可以使用关键字extends来定义一个类的子类:class 子类名 extends 父类名.不加extends关键字时,默认为Object类,Object类是任何类(除了本身)的祖先类.简单的说,子类拥有父类的所有(除了private类及不同包的友好类),同时可以拥有自己新的东西.子类可以通过继承的方法来操作未继承的变量.父类的方法被子类重写时,可以各自产生自己的功能行为.

《Java程序设计》第四周学习总结

学号 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 1.子类与父类:由继承得到的类称为子类,被继承的类称为父类 2.在类的声明过程中,通常用关键字extend来定义一个类的子类 ,如 class 子类名 extend 父类名 3.如果子类和父类在同一个包中,子类继承了其父类中不是private的成员变量作为自己的成员变量,也继承了其父类中不是private的方法作为自己 的方法,继承的成员变量和方法的访问权限保持不变 4.子类对象的特点:如果子类和父类不在同一个

201671010130 2016-2017-2 《Java程序设计》第四周学习小结

第四周学习小结 本次实验巩固了上次实验分隔数并求和的题,目前这个题有两种做法,一种是不断对数10求余,余数保存在sum中,然后左移一位,直到余数为零.另一种就是将数字强制转换成一个字符串数组String s=String.valueOf(num),根据方法s.toCharArray()将字符分离出来,据"x"-"0"=x,unicode码值相减即可得x的值. 父类和子类能够看两个交集,super关键字是否能够看做一个子类和超类的接口呢? 在子类中可以增加域.增加方法