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

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

教材学习内容总结

第五周主要是在国庆中度过的,也主要学的是第八章的内容,更充实、更饱满。

第八章:

  • 继承:从一个已有的类派生一个新类的过程,目的是为了更快更节约的完成程序。继承会产生父类和子类,他们之间建立了is-a关系。保留字extends说明从已有类中派生一个新类。
  • 在封装和私有的两难境地中,出现了protected修饰符,既可以提供最恰当的封装机制,也保持了其在原来类中可见性修饰符规定的权限。在满足可引用的程度上:public > protected > private。
  • super引用:在一个类中指向父类。
  • 多重继承:在Java中不支持多重继承,出现了接口,提供了多重继承的特性。
  • 类层次:一个类可以是一个或多个其他类的父类。
  • Object类:所有类都是由Object类派生的,Object的所有方法都可被java的每个类继承。
  • 可见性:私有成员也被子类继承,但不能通过名字直接引用。不过可以间接引用。

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

  • 问题1:is-a,has-a,like-a是什么?
  • 问题1解决方案:is-a 是一种继承关系。假如 A is-a B
    ,那么B就是A的父类。
    has-a 代表从属关系。假如 A has-a ,那么B就是A的组成部分。
    like-a是一种组合关系。假如 A like-a B 那么B就是A的接口。
    参考Java is-a,has-a,like-a是什么 (abstract[is a],interface[like a]区别)

  • 问题2:不明白书上<派生于抽象父类的类必须重写父类中所有的抽象方法,否则派生的类仍为抽象类。
  • 问题2解决方案:看到一篇博客java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗
      1. 普通类继承,并非一定要重写父类方法。
      1. 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。
      1. 接口类继承。如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。

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

  • 问题1:有些数学公式用java不会表示,例如开根号。

  • 问题1解决办法:上网查找相关资料,得到的解答是


double n = Math.sqrt(m);


用sqrt来开根。

  • 问题2:在我敲作业时,发现了如下问题,总是显红:
    20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第1张图片

  • 问题2解决方案:看书上教材发现,私有成员不能够直接引用,这才恍然大悟我用的是private。

以下问题不经出现在实验,也出现在自己调试代码的过程中,所以同样粘在这里

  • 问题3:在实验一中,无论怎样都无法连接对方,很头疼。
    20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第2张图片

  • 问题3解决方案:利用cmd命令查找本机ip地址
    20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第3张图片

再用ipconfig命令查找ip
20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第4张图片

  • 问题4:按照问题一的方法找了ip地址,但输上去还是不管用,
    20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第5张图片

  • 问题4解决方案:仔细观察cmd命令发现自己找的是以太网的ip地址,但电脑没有连网线,而是连的WiFi,找到无线局域网的ip地址之后再连接就OK啦
    20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第6张图片
    20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第7张图片

  • 问题5:无法打出printl。

  • 问题5解决方案:一开始我以为是没有class文件,因为以前就遇到过这种问题,但我仔细看有class,于是和迷茫,询问结对伙伴才知道自己多打了个括号:

  • 问题6:在写第二个实验的时候总是出现以下问题:

很棘手,也不知如何解决。

  • 问题6解决方案:找助教学姐问了问,得到的回答是需要在命令行调试的地方输入值,这里引用个博客:IDEA如何输入命令行参数,完美的解决了我的问题

  • 问题7:不明白以下代码的含义:


outputStreamWriter.write(info1);
outputStreamWriter.flush();
outputStreamWriter.write(info2);
outputStreamWriter.flush();
outputStreamWriter.write(s);
outputStreamWriter.flush();
scoket.shutdownOutput();


  • 问题7解决方案:查看Java中OutputStreamWriter类的常用方法这篇博客。
    write是构造一个输出流对象,大致意思是向服务器推送一条信息。

  • 问题8:


info1 = bufferedReader.readLine();


其中的bufferedReader我不明白

  • 问题8解决方案:JavaIO BufferedReader和BufferedWriter介绍和实例查看了这个博客,发现了很多不一样的东西,也解决了很多在实验四和实验五遇到的问题。

其他(感悟、思考等)

这个实验颠覆了我对自学的看法,说起自学很简单,但操作起来,是真的要命,无论是遇到自己见都没见过的知识点,还是自己要动手敲一个很棘手的代码,都困难重重,这个实验我和结对伙伴打了将近3天,才基本处理完毕,还有很多不足没有改进,代码中的漏洞也还很多,在实验完成后还要继续修正,修复bug。自己要学的东西还有很多,自己面临的知识盲区也无穷无尽,每多打一部分代码,就会发现自己原来知道的是那么少,九牛一毛都觉得多。随着学习的深入,懂得越多,但又发现自己懂的是那么的少,产生矛盾。

代码托管

20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第8张图片

上周考试错题总结

上周无考试

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182321
    • 结对照片
      20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结_第9张图片

    • 结对学习内容
      • 共同完成实验四
      • 共同解决书上出现的问题。
      • 遇到计算器远程传输数据的问题,我们共同解决,分工明确。
  • 上周博客互评情况
    • 20182321

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

一周又飞快的过去了,这周在我看来,进步很大,在上周的学习过程中,不明白类和方法之间的关系,但在这一周的不懈努力下,知道了如何学习这方面的知识,虽然学习的过程中很不轻松,但在获得成就后会很开心。一个月过去了,自己也学到了很多东西,能明白自己的定位,也能清楚自己的水平,知道自己薄弱点在哪里,如何补充、加强,在下一周的学习生活中,我会加强代码的练习,增加代码量,争取敲到2500行。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 212/212 2/2 17/17
第二周 132/344 2/4 17/34
第三周 689/1033 1/5 23/67
第四周 664/1697 2/7 20/87
第五周 586/2283 2/9 20/107
  • 计划学习时间:20小时

  • 实际学习时间:20小时

  • 改进情况:心理承受能力越来越好,碰到难题不会怕,而是会慢慢啃他。

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导
  • ...

你可能感兴趣的:(20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结)