前言
本次Blog总结三次题目集的7-1题目的知识点、题量、难度等情况,以及写完后的错误总结和自我思考。
1.知识点
三次题目集都对于类的设计的提前规划好有着必要的需求,还有就是对于继承与多态的合理的使用。接着就是对于正则表达式的使用的检测,然后就是要有清晰的逻辑编程表达。
2.题量
总的来说,三次题目集的题量还是充足的,老师所给的时间也是足够的,非常适合检验学生的学习成果。
3.难度
第一个题目集的难度最大,非常考验编程的逻辑,还有就是写出正确的正则表达式,第二个和第三个属于同一类型,第二个题目较为简单,主要的要求就规划好正确的类,为下一次的迭代做准备,第二次偏难,要合理的考虑多种串并连会出现的情况,这不仅对类设计的要求高,还有清晰的逻辑编程。
设计与分析
第一个题目集(nchu-software-oop-2024-上-4)
设计类图如下图所示:
1)本次题目对于前几次的题目新增了选择题和填空题两个题目信息,他们均继承题目类,还有输出顺序的变化:只要是正确格式的信息,可以以任意的先后顺序输入各类不同的信息。比如试卷可以出现在题目之前,删除题目的信息可以出现在题目之前等。还有就是本题考虑多个同学有多张不同试卷的答卷的情况。输出顺序优先级为学号、试卷号,按从小到大的顺序先按学号排序,再按试卷号。
2)可见难度是明显的增大,对于自己的代码,还是if语句,for循环使用过多,但改进的是使用了多个函数方法,避免main函数代码量过多。
代码品质度量:
1)对比于先前几次,函数的方法使用增多,并且在适宜的范围内,但是代码的最大深度和平均深度都超过范围,大大降低了代码的可读性,if语句和for循环的使用次数还是过多,代码的品质不高。
2)还有就是代码的注释虽说比前几次多,但是还是远远不够,代码的最大复杂度还是过高,可见for循环的嵌套循环还是用的太多,大大降低代码质量。
第二个题目集(nchu-software-oop-2024-上-5)
设计类图如下所示:
这次题目的难度较为简单,主要是考察类的设计,因为这对于第二次的迭代有着重要的作用,我这次写的类就没写好,没有写一个总父类,并且没有考虑风扇的扩展。这导致写下一个题目时,得重新改写类的方法,所以说这次的代码的拓展性太低。
代码品质度量:
1)吸取前面几次的教训,这次代码的注释增多,但是过多超出范围,这一点还需慢慢改进,代码的复杂度过低,代码过于简单,代码使用的函数方法太少,其他几个方面都在良好范围内。
2)可以说,这次的代码的质量相对于其他几次还是更高一些,可读性更高,类的设计和数量也适宜。
第三个题目集(nchu-software-oop-2024-上-6)
设计类图如下:
1)这次的类图设计我改进很多,对比于上次我重新加了一个总父类,并且对于各种控制设备都增加一个用电器父类,这样更加有利于为下一次迭代的做好准备。
2)这次的难度对于上次明显增大,我这次都没有拿到满分,经过反思,我觉得主要是类的编程书写没有达标,还有就是将输入的各种设备的存入的编程方法不妥当。
代码品质度量:
1)这次的平均深度和最大深度都超过范围,这主要是因为if语句和for循环大量使用。
2)代码的注释过多,导致代码的复杂度降低,代码简单。
3)代码的平均复杂度低于范围,代码简单,编程方法几乎是无脑套用for循环和if语句。
踩坑心得
1.关于题目集nchu-software-oop-2024-上-4:
1)逻辑的错误,导致出现多试卷多学生乱序的情况始终不过
要先找到学生再输出相应的答题结果,并且要全部遍历,防止出现bug。
2)没有考虑好优先级
2.关于题目集nchu-software-oop-2024-上-5:
1)没有考虑好输出的问题,取整和保留二位小数没有很好的区分。
2)分档调速器的操控理解错误,未按照题目要求来编写出相应的代码。
3.关于题目集nchu-software-oop-2024-上-6:
1)白炽灯和日光灯的电阻存入错误
2)未考虑并联断路的情况
对于并联电路的处理直接从头开始处理,电阻为0没有特殊考虑。
3)没有优先考虑开关(如果开关在用电设备后面会报错)
直接按照输入的先后顺序来一步步判断
4)未考虑编号大于10的情况
这样只能截取例如:K1,K2,K3。出现编号大于10,就会出现错误。
改进建议
1.代码质量
可读性:确保你的代码易于阅读和理解。使用有意义的变量名、注释和适当的
缩进。
简洁性:避免冗余代码。使用循环、函数和库来简化代码。
错误处理:确保你的代码能够优雅地处理错误和异常情况。
2.算法优化
时间复杂度:分析自己的算法的时间复杂度,并尝试找到更高效的解决方案。
空间复杂度:同样,考虑自己的算法的空间需求,并尝试减少内存使用。
数据结构:选择最适合问题的数据结构。例如,如果你需要快速查找,考虑使
用哈希表;如果你需要保持元素的顺序,考虑使用链表或数组。
3.重构
如果自己的代码变得复杂且难以理解,考虑重构它。这通常涉及重新组织代
码、提取函数或类,以及简化逻辑。
4.代码复用
避免重复编写相同的代码。相反,提取可复用的部分到函数或类中,并在需要
时调用它们。
使用Java的库和框架来减少你需要编写的代码量。
5.持续学习
不断学习和探索新的Java特性和最佳实践。Java是一个不断发展的语言,有许
多新的功能和库可以帮助你更有效地编写代码。
最后,记得在完成每个题目后都要进行反思和总结。思考自己的解决方案的优点和缺点,并考虑如何改进它们。
总结
一、项目概述
1.题目集内容:这三次题目集的总体难度还是属于偏难一些,主要是考察类的设计,正则表达式的掌握程度。
2.完成时间:前两个题目集都提前完成了任务,但最后一次没有完成。
3.使用工具:IntelliJ IDEA
二、知识点回顾
1.基础语法:主要就是考察变量声明、条件语句、循环结构。
2.面向对象编程:考察类的设计,熟悉类与类之间的关系,对于继承和多态的合理掌握。
3.异常处理:代码出现问题时,不仅要检测语法是否有误,还要检测类之间的方法是否用的合理恰当。
4.集合框架:题目集nchu-software-oop-2024-上-4主要时用类数组来编写,
题目集nchu-software-oop-2024-上-5和题目集nchu-software-oop-2024-上-6进行改进,使用ArraytList来实现功能。
三、编程技巧与经验:
1.代码风格:在编写代码时遵循的代码风格规范,如命名规范、缩进、注释等。
2.算法优化:尽量少使用for循环,if语句的套用,可以多编写一些函数方法,排序可以定义接口来更为有效的实现排序。
3.重构与重构:代码质量不满足要求时,要提前画好类图,并且为之后可能出现的迭代情况做好准备。
四、总结与展望
1.总结:写完这三次题目集,我个人觉得我的编程能力时不达标的,但是也收获许多,关于类的设计更加熟练,更加清楚类与类之间的关系,个人的编程能力也在提高,也算得到了一定的成长。
2.展望:未来应该还是要更加刻苦,努力提高自己的编程能力,学习一些高级表达式,还有就是对于自己的代码规范要进行严格的更正。