java第二阶段总结
0.前言
转眼间java的学习已经又过了一个月了,这一个月以来关于java的学习主要是在java的单一职责原则和“开-闭”原则和多态上,以及对于java的正则表达式的学习和StringBuilder相关的学习。比较于第一阶段的学习,难度无疑是加大了许多,下文总结一下关于这个月的收获。
1.作业过程总结
①三次作业之间的知识迭代关系:
第二阶段的作业主要由两个大的方向组成,一个方向是由java正则表达式和List组成,另一个方向是单一职责原则和“开-闭”原则的训练与认识。
第一次作业,正则表达式的训练是由(7-1)水文数据校验及处理为题,单一职责原则和“开-闭”原则的训练是由(7-2)蒙特卡罗方法求圆周率和(7-3)图形继承组成。
第二次作业,正则表达式的训练是由(7-2 )一元多项式求导,单一职责原则和多态是由(7-1)图形继承与多态为题。不论是在代码的长度与复杂性上,与第一题都有所增加。
第三次作业,通过(7-1)图形卡片排序游戏和(7-2)图形卡片分组游戏训练单一职责原则和“开-闭”原则的理解,最后一题通过对求素数的个数完善算法锻炼算法能力。其中对于java的单一职责原则和“开-闭”原则上的训练主要是在前面两次作业的基础下进行的。
②通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:
我通过图形的继承与多态题型,从第一次作业了解继承,继承是不同的对象有着相同的的属性时,即可对它的父类实现继承关系,再从第二次作业上的图形题在第一次作业继承的基础上增加了多态的用法,通过定义父类的形式实现对不同对象的相同调用得到与之对应的方法。
③作业过程中遇到的问题及解决方法
这个阶段遇到的主要问题还是在正则表达式的数据校验方面:
(1)对List的语法的不了解使很多问题无法在短时间内解决,如第二次作业的(7-2)一元多项式求导对于表达式中空格的处理,由于没有想到采用replaceAll的方法去解决,导致这道题一直无法想到合适的方案去解决,直到得到了老师的提醒才得以解决。
(2)在第一次作业的(7-1)水文数据校验及处理中关于日期校验的正则表达式的编写无法得到正确的表达式,在2月份的日期校验的错误和正则表达式中括号的繁多导致每一次的修改都花费了巨大的时间。最终也是导致这道题没有写出来。
④每次作业花费的时间比例

⑤对编程过程的严谨性的认识及教训
(1)在书写正则表达式过程时对目的不够明确,没有严谨的逻辑规律导致正则表达式的编写屡屡出错。
(2)审题不清,在完成第二次作业后,在阅读第三次作业的第二题时马虎大意,没有意识到需求发生了变化,导致测试没有通过。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解
简单来说,面向对象的三大技术,封装性是为了将一些敏感的数据隐藏起来,仅通过getter,setter方法来对其调用和赋值,提高了程序的健壮性和安全性。而继承性和多态性都是产生一种“从相同到特殊”的用法,而我现在所学习的就是Override,通过对父类方法的重写使“特殊”的意义体现出来。其实三者都提高了程序可维护性。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
面向对象设计的基本原则共有八个,现阶段主要学习了单一职责原则和“开-闭”原则,其中单一职责原则在第一阶段就已经开始接触了,单一职责原则可以降低类的复杂度,一个类只负责一项职责,提高类的可读性,提高系统的可维护性,降低由变更引起的风险。我觉得如果一个程序的单一职责原则写的好它的“开-闭”原则就应该可以很好的体现出来。“开-闭”原则主要体现在对扩展开放、对修改封闭,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。还是一个目的——提高程序可维护性。
③OO编程思维的理解
对于OO编写思维我最大的理解就是在代码的运行速度的可接受范围内,尽最大能力减少对一个代码的修改的复杂性。
④类设计心得
类与类之间的尽量做到不相关,即低耦合,而本身要做到高内聚。
3.测试的理解与实践
①测试对于编码质量的重要性
测试不仅是对一个程序能否得到预期的结果的判断,更是对一个程序的运行时间的消耗的内存的判断。
②查阅资料,假设使用Junit进行程序的测试是否可行
是可行的。Junit是对程序的单元化测试程序员在编码的时候面对一个庞大的程序,一个小小的问题,如果是通过设置输出来验证代码是否通过,那要消耗的时间将是巨大的。所以将程序单元化在进行测试十分重要。
4.课程收获
第二阶段以来对于java课程的收获与第一阶段相比,不再只是简单的语法的了解,更多的是对OO的三大技术和两大原则的理解上。知道了多态性和继承性以及单一职责原则和开闭原则对于OO的重要所在。
5.对课程的建议
通过这个阶段的作业我发现自己在程序的构思上还有很大的不足,上一阶段Main函数和类图是十分详细的给出的,我们相当于翻译。而在第二阶段的作业Main函数基本没有给和类图不全的情况下,我的代码开头所要花的时间就大幅度提高。可见编码思维有较大短板。我建议老师在接下来的课程中对我们编码思维多加以指导。

浙公网安备 33010602011771号