- 前言
这近一个月的1~3大作业题目让我逐步深入接触java,使用java面向对象处理问题,在写代码的过程中,我开始接触了大量相关知识点的同时,我自己也发现了很多需要学习的地方和很多自身问题,这些问题都需要我自己去改进。
- 三次作业我学习使用了ArrayList、LinkedList、HashMap等集合类来处理问题对相关题目,答卷数组的信息处理更加方便了,在调用的时候也更加快捷。
- 熟悉了多个类之间的关系以及使用,简化了代码的复杂度。
- 学习到了使用正则表达式处理问题以及获取信息,这是一个不容忽视的知识点
- 学习使用面向对象的方法进行程序设计,使得代码层次鲜明而且在后续的使用和相关信息添加上更加方便,不用大幅度改动。
- 三次题量适中不算太多,对我来说主要是主要是题目难度以及所花费的时间问题,在最后一题上花费的时间偏多,有时候花费了很多时间却不容易得到测试点的分,自己的题目拆分和类设计也有问题,有时候没有思考仔细就上手写代码,后续出现了很多问题,最后问题都没有解决。
- 设计与分析
第一次大作业
类图
耦合度
解释
第一次的大作业难度不大,在题目建议的基础上我设计了题目、试卷、答卷三个类来处理问题后、合理运用方法来处理相关问题后就可以完成所有问题,但是在这一题上就要开始使用正则表达式来处理问题,使得更好获取及处理题目信息,避免出现相关错误。
心得
第一次的大作业让我初步了解使用的正则表达式,并且开始尝试用面向对象的方法处理问题,使得题目的分析处理都更加简化了,其中类的设计尤为重要,也花费了我很多时间去学习使用方法使用一些LinkedList方法,但这也给我带来了很大的便利。
第二次大作业
类图
耦合度
解释
第二次大作业的最后一题在第一次大作业的基础上添加了判分信息,这只需要对第一次大作业的类进行修改,添加分数Score属性,然后添加相应方法对答案进行正误判定,以及添加方法对得分进行记录,同时对试卷总分判断是否是100分,最后输出判定信息和结果;
心得
第二次大作业的最后一题需要对上次的进行修改,不仅仅是类的修改以及正则表达式的使用,还需要处理类间关系,需要改进,可是我在写第一次的代码没有注重类的设计导致写的过程中出现了很多问题,使得我在写的时候所有类都重新设计了,然后代码也相应的重写了,最后花费了很多时间却也没有及格,是自己对代码的面向对象设计的不熟悉,是需要花费时间去学习和修改的。
第三次大作业
类图
耦合度
解释
第三次大作业在前两次大作业的基础上添加了学生信息的输入,还有答卷中也有学生的学号信息,还有删除题目的判断,而且添加了是否存在答案(answer is null),题目被删除(the question is invalid~0)、题目是否存在(non-exietnt question~0)、以及试卷是否存在,学生信息是否存在(学号+not found)的判断输出。
心得
在第三次大作业的完成过程中,我发现代码虽然是在上一次的基础上修改,但是我重写了好多东西,类设计和方法的使用仍然不到位,完成度不是很理想,很多测试点无法通过,写到最后都开始盲目乱写,还是自己仍然没有熟练掌握面向对象写代码的技巧导致的,最后第三次大作业使用正则表达式和类设计的合理性都有待提高,部分测试点的通过都需要靠这些基础知识的帮助,这是需要改进的。
- 踩坑心得
- 第二次大作业一开始试图取巧采用startwith来匹配题目中的信息,但是在后面调试过程中会存在一些格式错误的信息也会被匹配到,导致题目信息获取以及使用出现了错误,而后改了正则表达式才通过了相关调试,让我知道了正则表达式的重要。
- 在第三次大作业中没有注重类的设计,将很多信息放在了Main类中处理,本以为能够处理好信息,结果导致信息过于冗杂,以至于后续处理问题时容易搞混,不得不加以改进。
- 第三次大作业中写了正则表达式,但是没有写清楚,很多测试用例都需要正则表达式,一开始写的比较少,后续多写了几个正则表达式进行判定,方便了题目信息的获取与使用
- 1~3次大作业写的过程中一开始没有考虑清楚,在对试卷类的设计中忘记考虑答案的类型,看测试用例以为只是整形而用int,后续调试发现应该使用string类型来定义答案,而在匹配答案过程中也要改为equals来判断。
- 第三次大作业过程中会出现答案不存在的情况,一开始出现以答卷为基础开始和试卷信息匹配导致答案不存在的情况匹配麻烦,改为了以试卷来匹配答卷,从而更好处理了这种情况;
- 改进建议
类与方法设计
在3次大作业中,类的设计任然存在一些不合理,对类信息处理放在类中来进行,简化了代码复杂度,将以下信息放到相应的类中进行处理,然后再进行相关调用,使得后续只需要在这些代码的基础上进行修改就可以了,同时Main类中使用循环判定,不然显得Main类过于复杂,后续对代码的修改也不好改进。同时应该对类添加一些方法,在类中通过方法处理问题,通过在Main类中开始调用类的方法,开始处理处理相关问题,这样就可以简化Main类,不但使得代码排版看起来更加美观,而且使得后续修改只需要在类的基础上进行修改,比如答卷类的答案判断就可以使用checkanswer方法,对答案进行比较,只需返回true或者false,然后再进行得分判断,就可以更方便处理问题。
正则表达式的使用也是一个需要改进的点,在一些特殊题目的格式上需要一些修改正则表达式来获取信息,这是自己要去多加学习正则表达式的写法和使用的。
- 总结
本阶段三次题目集学习使用了ArrayList、LinkedList、HashMap等集合类,还有正则表达式的使用处理问题,以及理解使用了面向对象的方法分析问题,将问题转化成多个类的形式,根据相应的属性设计相应的方法,然后通过代码将各个类调用处理问题;但在这方面仍需要改进,在面向对象设计类的方面仍然不太擅长,总是在Main类处理多个问题是的Main类过于复杂,然后在正则表达式的写法和使用上仍然不是很熟练,所以这方面仍然需要加强学习,观看相关慕课,加强训练,自己在这三次作业花费的时间还是少了,总是在最后两三天的时间才开始写,最后代码写的匆忙,没有充分考虑导致自己的代码完成度不高,最后不及格;对教师、课程、作业、实验、课上及课下组织方式等方面我的建议是需要合理安排,在教师讲完相关知识后要加强学生自主训练才能有收获,这是关键,而且这些我自己也要改进,要花费时间训练才会有效果,不然遇到一些问题都不知道怎么处理了。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/16809.html