Java学习到第二阶段_JAVA学习第二阶段总结

前言:

第二阶段的作业的难度较第一阶段的作业难度有很大的提升。几次作业的代码量都很大,对同学的要求很高。多态、继承、封装、正则表达式等知识点都有考量。相比于第一阶段作业,第二阶段的作业更需要我们将知识融会贯通,完成设置的测试点。不但于此,第三次作业也鼓励我们理解使用开闭原则,为后续的学习打下基础。

作业总结过程:

三次作业之间的知识迭代关系

第一次作业无疑是一枚重磅炸弹,第一题不但需要我们将需求模块化,还需要对进入的数据进行分割和校验,它要求我们熟练运用split方法和正则表达式的书写,第二题则是关于多态的认识和基本运用,难度不大,可是对于刚刚接触多态的我们会在许多地方犯一些小错误。第三题也是如此,shape作为父类,其他图形类继承shape,重写shape的方法,完成指定的任务。

第二次作业的第一题,巩固了继承的知识要点,还引入了ArrayList的知识点。重点难点在排序,在于对象的排序,算是比较容易就能够完成。到了第二题,难度一下陡增,它不单单考核正则表达式,还考验了对find()方法的应用,同时还引入了对于每个对像设立一个Term类,用List来储存Term,这是之前ArrayList考点的延申,我在做这题时煞费苦心。

到了第三次作业,有了前面两次作业铺垫,这一次没有太大的难度,在第二次作业的基础上,将图形相对应的放入了Card类中一一对应。这次的作业引入了接口的概念,想要解决这道题,还需要实现Comparable的接口,重写Compareto方法,便可以解决这道题。第二题也是如此,不过在输出时需要重新对不同的图形进行排序,运用其多态的性质即可。第三题是鼓励我们对算法进行优化,欧拉筛法的运用可以解决。

作业中遇到的问题以及解决方法

fe76ae3c62ec18743c4d1cf0c99b3c20.png

第三次作业第一题的compareTo方法,第一次使用它,我并不清楚它的原方法究竟和Collection.sort的关联,在网站上查找jdk中文包的注解后才理解它的使用方法。

adcaeb0ae32c6b5386e3d4f62488c6ee.png

第二次作业的第二题,将每一项作为一个Term对象分出放入list时,我不清楚list改如何运用,仔细查阅了List的方法后解决

0b042d07901de41fe5fb1f4bea0232d5.png

这里正则表达式漏去了开头的正负号,导致总是得到一个空项,使得测试点过不去,加入[+-]解决。

834e3325772a95579fa5205dfee0e272.png

卡片排序的题目中DealCardList含参构造时传入的是ArrayList list。当时我没有仔细的辨别,直接写出了this.list=list的赋值语句结果程序报错。后来发现两者的list类型不同,最后用了switch语句遍历每一个Integer list的值给CardList 赋值一个新的对象解决。

每次作业花费的时间以及比例

第二阶段的作业确确实实的比第一阶段的作业难太多了,第一次作业的第二题第三题,我花了一个下午就做了出来,可是那第一题,我在最开始花了两天也不见成效,按照类图创建了类,可是就那两个关键的方法却想不出来,各种方法都尝试后,共花了四天,也没有全对。

第二次作业也是如此,第一题可以较为轻松的做出,可到了第二题,正则表达式缺难住了我,写了不下20条正则表达式题目还是没有做出来,加上之前的自学find方法的时间,共花了我四天。

第三次作业较为简单,因为有了前两次作业的积累,再加上上课讲的关于接口的知识,共花费了一天时间。

编程过程的严谨性的认识以及教训

经过了这一段时间的学习,我很明显能够感觉到自己编程严谨性的提高,从最开始的代码格式小错误频发,到现在能够基本书写出自己想表达的逻辑,确立好所需要的方法,帮助自己完成作业。教训也很多,当我根据类图写自己的方法是,很难关联前后,只是着眼于当前书写的内容,很多时候发生错误时不能大致判断错误的位置。

OO设计心得

面向对象的封装性、继承性与多态性三大技术特点

在学习OO设计之前,我对于这三大特点的认知很少,在学习之后,理解了OO设计所强调的整体性和在JAVA这门语言下的灵活性。

对于其封装性,可以使得一个对象整体化,其内部的属性可以紧随其对象。对其封装可以大大的提高其信息安全使用,避免对其属性被恶意更改。

对于其继承性和多态性我想发在一起讲,它们使得我们的程序能够更为灵活的应用,例如使用一个抽象类Shape,使其他具体的图像继承它,就可以使得我们的程序可以用一套代码实现多种功能,而不用针对确定的对象设定确定的方法。它们可以使得我们的程序更加符合开闭原则,对扩展进行开放。

对面向对象设计的基本原则理解

第一阶段的重点是单一职责原则,而这次的重点主要是开闭原则,积极运用多态继承的性质和抽象类的定义,使得我们的代码更加的简洁和多样。多态、继承的应用也使得我们的程序不单单特指某一种类,而是变为指向了一个抽象的类,使得我们在拓展内容时能够更加方便,不需要修改全部的代码

OO编程思维的理解

从最开始的对确定的类的理解,到现在对于抽象的类的理解。我在这个月学到了很多,通过对多态、继承的学习,我对于OO编程思维的理解愈发的从具体到抽象,也越来越能理解OO编程的灵活所在。用抽象的类和接口来定义,用具体的类来实现,这是我在这一个月所学到的。

测试的理解与实践

测试对于编码质量的重要性

这几次的作业中,测试变得更为重要,尤其是正则表达式的书写,很容易就出现纰漏,没有及时测试,最终导致的就是程序出现Bug,我在这几次作业中就犯过很多次这个错误,在后来,我每次书写正则表达式都会去相关的网站检验自己的正则表达式是否出现错误。测试毫无疑问的可以提升编码质量,十分重要。

Junit进行程序的测试是否可行

查阅资料后,我认为使用Junit对程序进行测试是可行的,尤其是对于单个方法的测试,使用Eclipse自带的Debug模式,在对于输入和步骤较多的程序时,测试单个方法很浪费时间,此时使用Junit可以很方便的进行测试。

对课程的建议:

对题量及难度的建议

我认为第三阶段作业的难度可以维持第二阶段作业的难度,前提是我们讲学的进度得超出题目的范围,前几次作业有很多还没学的知识点先出出来,让我们自己自学,难度很高,而且需要花费大量的时间,有老师的指引可以节约这部分时间。

对内容讲解的建议

我希望老师能够在课堂上讲的更为深入一些,对于一些方法和定义,我希望老师能够从JDK中进行详细的讲解,而不是从单一从例子出发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值