前言
总结两次题目集的题目的知识点、题量、难度等情况
1.知识点
两次题目集都对于类的设计的提前规划好有着必要的需求,还有就是对于继承与多态的合理的使用。接着就是对于正则表达式的使用的检测,然后就是要有清晰的逻辑编程表达。
2.题量
总的来说,两次题目集的题量还是充足的,老师所给的时间也是合理的,非常适合检验学生的学习成果。
3.难度
这两次题目集的难度还是属于偏难的,尤其是最后一次,难度大大升高,不仅需要合理的类的设计,还有对于逻辑语言的表达的要求。然后,就是对于一些特殊用电设备的工作的判断,以及对于各种用电器的两个引脚的电压的计算。还有对于出现短路,断路的情况的特别考虑。最后一次,还会出现复杂的电路情况。
设计与分析
第一个题目集(nchu-software-oop-2024-上-7)
设计类图如下图所示:
1)总的来说类的设计还是较为合理的,但是对于继承与多态的掌握并不达标。
2)没有增加中介处理类,导致Main函数的代码量超标,甚至会出现代码的长度超过限制。
代码品质度量:
1)代码平均深度和最大深度都超过了范围,代码的if-else语句和for循环的语句使用过多,代码的质量下降。
2)代码的注释过多,存在不少注释画蛇添足,多此一举。
第二个题目集(nchu-software-oop-2024-上-8)
设计类图如下图所示:
1)类的设计还是没问题的,但是存在各个类的方法编写的不是特别好,无法解决题目的要求。
2)还有就是新增了一个二极管设备,我编写的类的方法也不是特别准确。
3)改进的是增加了一个中介处理类,减少了main函数代码冗长的问题,也减少了if-else 语句的实用和for循环语句的使用。
代码品质度量:
1)类的设计和数量是在良好范围类,最大深度和平均深度也在可以理解的范围中。
2)存在最大的复杂度过大的问题,某个地方的函数方法过于冗长,导致可读性降低,复杂度增加。
3)注释太多,超过范围。可能在许多不必要的地方作了注释,画蛇添足。
踩坑心得
1.关于题目集nchu-software-oop-2024-上-7:
1)没有考虑并联短路的情况
对于这种短路的情况进行特殊处理
2)对于新增的受控窗帘的状态的判断没有根据题目要求的来,导致出现错误。
根据题目的要求进行更正
3)对于互斥开关类的编写没有写好,导致一个测试点一直过不去。
第二个题目集(nchu-software-oop-2024-上-8)
1)对于互斥开关的三个引脚对应输出的电压书写错误,导致多个错误。
2)没有考虑用电设备反接的情况。
对于每个用电设备都新增属性,用于判断是否反接,并且对于输出方法进行相应的更改。
3)对于并联包含并联的情况的处理不达标。
4)对于新增的二极管设备的类的编写没有达到题目的要求。
改进建议
1.代码质量
可读性:确保你的代码易于阅读和理解。使用有意义的变量名、注释和适当的
缩进。
简洁性:避免冗余代码。使用循环、函数和库来简化代码。
错误处理:确保你的代码能够优雅地处理错误和异常情况。
2.算法优化
时间复杂度:分析自己的算法的时间复杂度,并尝试找到更高效的解决方案。
空间复杂度:同样,考虑自己的算法的空间需求,并尝试减少内存使用。
数据结构:选择最适合问题的数据结构。例如,如果你需要快速查找,考虑使
用哈希表;如果你需要保持元素的顺序,考虑使用链表或数组。
3.重构
如果自己的代码变得复杂且难以理解,考虑重构它。这通常涉及重新组织代
码、提取函数或类,以及简化逻辑。
4.代码复用
避免重复编写相同的代码。相反,提取可复用的部分到函数或类中,并在需要
时调用它们。
使用Java的库和框架来减少你需要编写的代码量。
5.持续学习
不断学习和探索新的Java特性和最佳实践。Java是一个不断发展的语言,有许
多新的功能和库可以帮助你更有效地编写代码。
最后,记得在完成每个题目后都要进行反思和总结。思考自己的解决方案的优点和缺点,并考虑如何改进它们。
总结
一、项目概述
1.题目集内容:这两次题目集的总体难度还是属于较难一些,主要是考察类的设计,正则表达式的掌握程度,还有个人的编程逻辑的能力。
2.完成时间:两个题目集都没有拿到满分,都不到标。
3.使用工具:IntelliJ IDEA
二、知识点回顾
1.基础语法:主要就是考察变量声明、条件语句、循环结构。
2.面向对象编程:考察类的设计,熟悉类与类之间的关系,对于继承和多态的合理掌握。
3.异常处理:代码出现问题时,不仅要检测语法是否有误,还要检测类之间的方法是否用的合理恰当。
4.集合框架:题目集nchu-software-oop-2024-上-7和题目集nchu-software-oop-2024-上-8都是使用ArraytList来实现功能。
三、编程技巧与经验:
1.代码风格:在编写代码时遵循的代码风格规范,如命名规范、缩进、注释等。
2.算法优化:尽量少使用for循环,if语句的套用,可以多编写一些函数方法,排序可以定义接口来更为有效的实现排序。
3.重构与重构:代码质量不满足要求时,要提前画好类图,并且为之后可能出现的迭代情况做好准备。
四、总结与展望
1.总结:写完这两次题目集,我个人觉得我的编程能力时不达标的,尤其最后一次的得分连及格都没有,但是也收获许多,关于类的设计更加熟练,更加清楚类与类之间的关系,个人的编程能力也在提高,也算得到了一定的成长。
2.展望:未来应该还是要更加刻苦,努力提高自己的编程能力,学习一些高级表达式,还有就是对于自己的代码规范要进行严格的更正。