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

目录

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

教材学习内容总结

关键摘要:

  • 1.继承是从已有类派生一个新类的过程。
  • 2.继承在父类和子类之间建立了is-a关系
  • 3.可以使用super引用来调用父类的构造方法。
  • 4.子类可以重写(重定义)继承自父类的方法。
  • 5.一个类的子类可以是一个或多个其他类的父亲,这样形成了类层次。
  • 6.Java 的所有类直接或间接派生于Object类。
  • 7.Java 程序中的每个类都继承了toString和equals方法。
  • 8.final修饰符可用来限制继承。

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

  • 问题1:is-a关系是什么关系啊?

  • 问题1解决方案:上网查找
    is-a( 是 "a" 小明是人类)表示的是属于得关系。比如兔子属于一种动物(继承关系)。

has-a( 有 "a" 汽车有轮胎) 表示组合,包含关系。比如兔子包含有腿,头等组件;就不能说兔子腿是属于一种兔子(不能说是继承关系)

7.1.2 "is a"关系和"has a"关系

假设有两个类:Computer和Employee。明显地,这两个类之间不存在"is a"的关系,即Employee不是计算机,它们之间没有继承关系的必要。因此不可能产生代码重用性。但这两个类之间是"has a"关系,即是支持的关系。例如,Employee"has a"Computer。明显地是一种支持关系。这种支持关系落实到代码中,就是在Employee中创建Computer的对象,调用其方法,到达完成某种运算和操作的目的。

Employee和Manager 类存在的则是"is a"关系,即Manager是Employee。它们之间存在共性,或者共同的属性。Manager是Employee的具体化;Employee是Manager的概括和抽象。概括性和抽象性的类,如Employee,在继承中则定义为超类。具体或代表对象特性的类,如Manager,则定义为子类。如果这是一个用来计算雇员工资的程序,那么在超类Employee中,我们应当包括所有子类都应该具有的、与计算工资有关的数据,例如name、employeeID、jobTitle、seniority、baseSalary以及用来计算基本工资部分的方法,如baseSalary()等。在Manager这个子类中,我们不仅继承Employee的所有数据和方法,还增加针对Manager的新的数据,如是否董事会成员boardMember、职务补贴merit等,因为除基本工资的计算之外,这些都影响到具有经理职务雇员的收入。

对两个类之间"is a"或是"has a"关系的分析,有助于我们确定它们之间是否存在继承关系,避免设计上的错误,因而达到提高代码重用性的目的

  • 问题2:public void与public int区别

  • 问题2解决方案:

public.是访问修饰,访问修饰有public ,protected,默认修饰符(也就是什么也不写),private四种,四种按照从前到后访问级别依次降低。

void.的不返回任何参数,它是方法返回类型中的一种,除了void 外,方法返回类型还可以是基本数据类型和引用数据类型,基本数据类型有byte,short,int,long,char ,float,double,boolean八种,引用数据类型有很多的,它是根本你想引用什么数据类型,想常见的有String 类型,还有你自己定义的类的类型。

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

没出现新的问题,出现的是以前的问题。

代码托管

上周考试错题总结

上周没有错题

结对及互评

点评模板:

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

    • 加入自己学习过程中的图片,给人印象深刻。
    • 对问题剖析到位,有深入学习。
  • 代码中值得学习的或问题:

    • 代码排版越来越规范,便于阅读
    • 代码中适当加入注释会更好
  • 基于评分标准,我给本博客打分:13分。得分情况如下:

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

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程(2分)

  4. 代码调试中的问题和解决过程(2分)

  5. 本周有效代码超过300分行的(加0分)

  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分

点评过的同学博客和代码

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

以前的学习,都是老师一味的灌输,老师教什么,我们就会什么,没有自己探索的过程,等到自己去实践的时候,就会遇见各种各样的问题;现在娄老师的教学就是让我们自己去学习,自己去发现问题,然后问自己所发现的问题,因为每个人的思维方式不同,所以碰到的困难也是多种多样的,解决属于自己的问题,这样成长才是最快的。

老师单方面的传输的知识,对于我们来说,是最习惯的一种学习方式,也是我们认为最简单的学习方式,但是,我认为自己发现问题然后再解决,这样的学习是高效的,虽然会很累,但是,这样才能学到更多的东西。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 77/77 2/2 15/15
第三周 424/501 3/5 30/30
第四周 393/894 2/7 30/30
第五周 320/1214 1/8 30/30
  • 计划学习时间:25小时

  • 实际学习时间:20小时

  • 改进情况:

参考资料

posted @ 2019-10-07 21:19  20182323曹骞  阅读(156)  评论(1编辑  收藏  举报