JAVA第三次blog总结

JAVA第三次blog总结

0.前言  

这是我们在博客园上第三次写博客,也是本学期最后一次的JAVA学习大总结。现在我们的JAVA已经接近尾声了,对于编程思想和方法的改变依旧是难点,但是经过这一段时间的学习还是让我在OOP思想的理解上有了很大的进步。特别是经过C语言的补考之后我也更加体会到了面向过程程序设计和面向对象程序设计的不同,也就是OPPOOP的不同。在最后这篇blog中将针对最近的作业和JAVA的整体学习进行总结。

 

1.作业过程总结

刚刚接触JAVA却还是以c语言的方式在编程,现在整体回看这几次作业,发现最开始的时候我写的程序里虽然是使用的JAVA编程的用法,但是丝毫看不到对象,方法,属性,类的痕迹,甚至我的脑子里都根本没用那个概念。只是一味的输入输出,程序可读性很差,也根本没有复用性。只要稍微改了改题里的要求,这程序里的东西全都要彻底改动,很繁琐。但是再看后面几次的PTA作业,已经能够看到完整的对象,方法,属性,类,甚至对于面向对象程序设计的三大技术特性也有了很深的理解即为封装性、继承性与多态性。对于程序的可读性也有了不错的改善。而且对于类的学习和认识也让我程序的复用性大大提高。

最后的三次作业也是难度最大的三次作业,这三次作业分别是雨刷程序功能扩展设计,统计Java程序中关键词的出现次数,表达式求值,考察了List、Set和Map的接口应用,正则表达式的应用,以及算符栈,操作数栈的知识。

这几次作业都做的不好,特别的最后两次,也因为之前学的不扎实,又是因为正则表达式不正确,不能得出正确的输出样式,而丢掉几十分。对于雨刷程序功能扩展设计这道题在程序重构之后就因为循环和正则表达式不正确而不能正确控制升档和降档,在经过大量时间的改正之后勉强实现了基本的功能,但是并没有满分,第二行无效输入的测试点还是没有通过。对于List、Set和Map的接口应用和算符栈,操作数栈的知识我学的不是很好,上课就听得一头雾水,在CSDN里找帖子也看不懂,所以后两道题也只完成了基本的非法输入判断,因为检查不出来错所以主要的功能没有实现。

这几次作业在编写程序上花费的时间不是特别多,主要是学习新知识比较占时间,但是因为没有学懂总是感觉无从下手。想要通过作业逐步理解面向对象的特点就要体会各个题目要求之间的相同与不同,在此基础上对框架进行修改,不能因为麻烦或者不理解就推倒重做,才能得到最大的收获。

至于编程的严谨性也是不可忽略的问题我就在在统计Java程序中关键词的出现次数这道题里吃了亏,在关键字字符串的输入中因为我多加了几个空白符而导致的错误令我很困扰,也耽误了我很多时间。

 

2.OOP设计心得

首先是面向过程程序设计和面向对象程序设计差异性的理解。面向过程程序设计是指利用函数的定义和调用去编写程序执行操作,好处是突出的是从上到下整体运行的过程。面向对象程序设计是利用类的定义和使用,对象的属性和方法,互相联系和发送“命令”和“消息”,好处是复用性高,便于更改。

面向对象程序设计有封装性、继承性与多态性三大技术特性这三个技术特性的关系密切,封装可以使代码模块化,继承可以实现父类子类之间模块的联系再赋予多态用于接口,使接口重用。这样相互配合就可以提高代码的逻辑性和复用性。总结起来就是一句话OOP=对象++继承+多态+消息。

其次就是面向对象设计有两个基本原则单一职责原则和开闭原则。单一职责原则是一个类只负责一项职责。而开闭原则是指应该对扩展开放,对修改关闭。换句话说,如果修改或者添加一个功能,应该是通过扩展原来的代码,而不是通过修改原来的代码。

最后要说的是UML图的应用。在平时的作业里我发现给了UML图程序实现起来就很轻松,而没有UML的程序就需要你自己去设计。“类”顾名思义起到了分类的作用,让你的程序更有逻辑性和可读性,成为你解决问题的框架。同时也提升了复用性。再结合封装性、继承性与多态性三大技术特性也就完成了OOP

 

 3.测试的理解与实践

对于PTA里的测试点,我觉得测试用例应该主要从边界值,特殊值,错误输入值这三方面来检验。同时也要注意内存超限和死循环的情况。之前的总结里提到了白盒测试和Junit的应用。这两个是很常用的,这次还要说一个更加必不可缺的功能,那就是debugDebug可以在每一步中检查每一个值,表达式的变化,找到异常的数值,从而找出错误,这样会让测试更加简便。

 

 4.课程收获

之前上面谈了很多,在这里简要总结一下

理解面向过程程序设计和面向对象程序设计的区别

理解了面向对象程序设计封装性、继承性与多态性三大技术特性

利用UML和“类”去编写程序以及思考问题

利用debug功能去检验程序里的值和表达式

利用Junit单元测试(白盒测试)去提高我们编写程序的效率并避免错误

需要继续理解和巩固List、Set和Map的接口应用,正则表达式的应用,以及算符栈,操作数栈的知识

 

 5.对课程的建议

经过本学期对JAVA的学习,我们对OOP也有所理解和感悟。因为疫情的原因本学期的JAVA课程都是在线上进行的,虽然是第一次经历这种情况,但是我感觉对于学习效果还是没有什么区别的,毕竟这是一门计算机学科。在家写PTA的这段时间,让人更加专心,注意力更加集中。特别是知道这门专业课取消最后的考试,采用平时PTA和实验的分数已经平时分作为最后的分数,我们对待PTA更加认真了,而且返校之后也不能大范围集中,不管是笔试还是机考都不合适,这样的学习经历很特殊收获也很大。