第一次Blog作业

前言
在上个月做了三次单词电梯调度问题,再次进行相关的总结,在第一次的题目中,是基础的电梯调度问题,较为简单,再该题目中主要考察了基础类的相关设计,以及对于状态进行相关的判断,和队伍进行相关的管理,在本题目中主要的难点是第一次做相关的题目,需要花费大量的时间去弄懂电梯运行的相关规则,同时考虑周到,明白题目所要输出的要求。在第二次题目,本体进行了拓展,运用单一职责原则,并且给出类图,要严格按照类图进行设计代码,主要考察了单一职责原则,和类的拆分,类更加丰富,难度也进一步增加,主要在于如何处理类的之间的关系和功能,从而处理更加复杂的问题。在第三题,在第二题上再次迭代,增加了乘客类,并且流程从外部转到内部,并且对于状态的更新也更加及时,输入输出也做了一定的改变,在难度上也是最难的一点。综上所述,这三道题目难度逐渐增加,使得同学从简单的设计Java类到遵顼单一职责原则来完成复杂的题目,在一次次的迭代升级中使得自身的能力逐步提升,逐步掌握和运用面向对象进行编程。
设计与分析
第一题SourceMontor的生成报表内容

通过SourceMontor进行分析,在我第一次的代码中一共写了158个语句,在这其中运用了89条调用语言,说明该语句的占比很高,从而说明我的思路大多以来外部的方法。我的注释仅有6.5,说明我的代码中所包含的注释过少,不利于代码的理解,这是一个不好的习惯,在后续的题目中经常弄混代码。在Block Histogram中,说明我的代码整体并不复杂。
第一题的类图·

在第一题目中,类之间的关系相对简单,一共设计四个类,将电梯的核心逻辑封装在 Elevator 类中,使得代码结构清晰,易于维护和扩展,使用枚举类型 Direction 和 State 来表示电梯的方向和状态,提高了代码的可读性和可维护性,
第二题SourceMontor的生成报表

在第二题中,我的代码中注释占比0,我的代码中一点也没有注释,更第一题一样这成了我的一个坏习惯,使得我后续难以进行阅读和更改,同时我的方法 Controller.processRequests代码的复杂度达到了38,远远超出了常规的复杂度说明在该方法上我的逻辑过于复杂,应该对该方法进行拆分,以降低该方法的复杂度。分支语句占比 20.6%说明条件判断较多,最大块深度 6,存在深层嵌套,可能导致逻辑混乱,需优化结构,减少一些嵌套层级
第二提的类图

该类图于题目中给出,我只需在该思路的基础上进行补全代码
第三题的SourceMontor的生成报表

在该代码中我一共写了345行,写了180条语句,结合前两题的错误,在本次代码中我写了一些必要的代码,占比25,始终,符合要求。其中Maximum Block Depth的复杂度较高,需要进行拆分,减少复杂度。18的分支语句和200多条调用语句,说明方法之间调用频凡,综上该代码复杂度中等,部分代码需要优化。
第三题的类图

相较于第二题增添了乘客类
踩坑心得
在此次题目中,题目较为复杂,需要花费大量的时间去理解题目,并设计类,我经常忘记前面所写,同时代码过长,不够简洁经常造成运行超时

而且题目中有很多测试点有很多并没有考虑到

输出是否相同
改进建议
1.在写代码中,应及时添加必要的代码
2.考虑测试点
总结
通过这三次题目深刻理解到了单一职责结构,共过三次的迭代升级逐渐的将代码分开,使逻辑更加简洁,同时使得类之间协作更加熟练。建议增加测试点,以及明确测试点,及时了解自身的错误在哪。同时希望课程能提供更多实践反馈和拓展学习资源,帮助学生将理论转化为扎实的编程能力。

posted @ 2025-04-20 21:40  镜南123  阅读(15)  评论(0)    收藏  举报