*前言
经过一个学期的学习,我对Java也有了相当的了解,这篇文章主要是对我的第三周期作业以及整个学期的Java学习的总结。
本次作业总结主要包括以下方面:作业的过程总结,对OO设计的心得,对测试的理解以及对课程收获的阐述。
*作业过程总结
第三周期作业的难度总体来说相对前两个周期有一定幅度的提升;第一次的雨刷系统主要是对课堂上老师讲述的雨刷程序进行功能扩展,主要运用的是抽象类及其实现;第二次的作业是统计一段Java程序中所出现的关键字的次数,需要运用Hash表和相关接口解题,个人在此次作业遇到的难点是对输出关键字的排序,由于排序出现问题,未能完成第二次作业;第三次作业是本学期课程中最后一次大作业,主要考察的依然是正则表达式对字符的匹配以及对非法格式的排查,未通过的点主要是对0开头的数据以及除0数据的测试。此外,每周都有一次实验;第二次实验主要考察类和对象的基本概念以及变量与对象实例之间的关系等基本知识;第三次实验依然比较基础,涉及到类的继承和多态的基本概念以及super关键字和toString()、equals()等常用方法的使用;第四次实验难度稍稍加大,主要考察Java中的数据结构、接口、异常处理和各种类,要求我们掌握Java语言中这些相关类的使用方法和接口的基本概念及使用方法;第五次实验主要内容是最近新学的JavaFX,感觉比较复杂,考察的点主要是JavaFX的基本原理和基本组件,要求我们熟练应用JavaFX组件进行界面设计及一些图形的创建。
三次PTA大作业花费的时间分别是4小时,2天(未完成),3天(实现了部分功能),比例为1:12:18。第一次作业的总体难度不大,主要的函数是换挡位和换模式;
第二次作业中对输出关键字的排序问题:
第三次作业的主要点在于对输入表达式的格式正确性进行判断;
第二、三次实验都是比较基础的东西,这两次实验主要是巩固、补充一些基础的知识;
第四次实验中有几个可能经常使用且能提升效率的点值得注意:
上转型对象的使用及数组的遍历输出;
Hash表遍历输出。
第五次实验中的JavaFX类的相关知识对作界面有很大用处;
例如利用JavaFX类和shape形状类实现绘图小程序,其中包含lambda式子的使用、各种图形的设定等都有简洁的方法可以缩短编程的时间,提高效率。
*OO设计心得
对面向对象三大技术特性之间关系的理解:继承是指从已有的类中衍生出新类,一般为单继承,运用接口可实现多继承,若子类想要更改继承的方法则需要重写;而运行时多态则是通过继承及方法重写来实现。单一职责指的是每个类型的对象用一个抽象类概括,每个类有单一的功能,只有一种原因能够引起它变化。单一职责使得程序的稳定性大大提高。开闭原则则是面向对象设计中可复用设计的基石;它使得对模块行为的拓展是可行的,当运用需求改变时,便对模块进行扩展,使它具有新的要求的行为,即改变模块的功能。
我们在设计程序时需要先做好构思,可以依靠花UML图来确定程序大概的类结构、各个类中所包含的属性和方法以及各个类之间的关联关系。而在设计具体类时需要充分考虑到类的复用性和封装;不同的方法各自封装,程序执行时便可以随意使用需要的方法;在创建类时也要依照单一职责的原则,使得我们以后写新程序需要沿用代码时能够复用更多的代码。
*测试的理解和实战
程序运行的结果需要考虑的情况往往有多种,而我们考虑的情况往往不是很全,所以需要设置测试点来检验代码的正确性。通过测试可以提高程序员的编码的质量,测试得越全面,发现的漏洞可能就越多,通过不断的改进,可以提高我们的编程水平,在编码质量上也会有巨大的提升。
我在第三周期的作业Hash表部分的内容中进行了测试,通过设置测试点校验了Hash表的遍历输出是否符合标准。
*课程收获
通过本周期课程的学习,我对抽象类有了更深的理解,很多时候它能够给我们非常大的帮助,抽象类的存在可以很大程度地提高我们的编程效率,降低了程序的复杂度,提高可读性,并且提升程序的稳定性,让代码便于修改和扩展,是对面向对象很好的诠释;对了解和熟悉Hash表的构造及各种相关方法的使用有一定程度的帮助,尤其是Hash表的遍历输出以及对表内数据的按键排序及按值排序,需要我花费更多的时间去学习和练习;对正则表达式的应用及高难度的判断,一直是比较让人头疼的东西,这次也不例外,不过相较于之前也有一定程度的提高;对Java的接口和异常处理是我之前课程留下的知识盲点,通过实验补习了一下相关的知识,让我对程序中异常的判断及处理有了了解,接口的运用也比之前要熟练;JavaFX类是一个很有趣的东西,虽然它很复杂,但是通过它,我们能自己创建一些有基本作用的窗口,也可以完成很多我们想要图形,通过它们我们能够感受到机械式的浪漫。
经过三个周期的学习后,整个学期的Java学习也即将告一段落。在这个学期中,经过每一节课后,我从对Java感到犯难到后来慢慢的可以接受,其中许多知识难点也在日复一日的学习中得到解决;当然这只是一部分,还有一些没有弄明白或者说没有去学的点在今后的学习中也要找到机会慢慢补充;Java语言中所讲到的的许多思想,即使在现实生活中也是使用的上的;并且编程语言是触类旁通的,通过学习java语言,在日后的学习和工作中我也可以有基础的学习其他类型的语言。