As long as one breathes,
one can hope for everything.
|

cyaytl

园龄:1年粉丝:0关注:0

南昌航空大学-23201406-耿乐-第三次OOP博客作业

对于最后两次题目集中的题目和做题情况的总结,包括电路模拟程序3和4。

一、前言

总结两次题目集的题目情况

关于题目集

最后两次题目集中都只有一道题目,是电路模拟程序的系列迭代,没有额外的题目。

题目本身

第七次题目集中的电路模拟3并不是太难,只要理清题目中的要求和电路的基本运行原理并用代码实现就可以了。

第八次题目集中的电路模拟4是这八次题目集中我唯一一道没有满分的题目,相较于之前的题目显得尤为复杂,导致我没有考虑周到。

二、设计与分析

对题目的提交源码进行分析,参考生成报表和类图

第七次题目集

只有电路模拟程序3这一道题目,是在上一次题目基础之上的迭代,修改了一些信息并添加了一些新的设备。

因为一些原因,导致我用来写这道题目的时间很少,好在这次要修改的地方不太多,最后一晚上写完了。

类图

电路模拟3类图

这次题目中,新添加了两个设备——受控窗帘和互斥开关。

受控窗帘还好,题目中描述的很详细,实现其的功能很容易,只需要一个变量来存储光照就可以了。

但是互斥开关要实现断开一路的同时链接一路,并且会在两条不同的串联电路中同时出现。最主要的是互斥开关可以有三个引脚,并且可以随意调换位置。因为我的程序对输入的解析有一些问题,不能处理这样的信息,导致我必须修改我对输入的处理的函数。

如何实现互斥开关的功能也让我头疼了一阵,一开始没有细想,就直接在互斥开关类中添加了三个引脚,在调整连接情况的同时改变电阻。但是实际上这种结构根本达不到我所需要的功能。之后想到可以将互斥开关拆分成为两个不同的开关,根据输入中引脚的不同向电路中添加不同的开关就可以实现需求了。

之后因为串联电路中可以添加串联电路,再次修改了对于输入进行处理的函数,使其不仅可以读取各种设备和电路,并且不会在电路中重复或错误的添加设备。

对于电阻计算的函数也同时进行了修改,使用电阻的比值来进行电压的分配,并使串联电路接受到电压后会自动向内部的设备分配电压。

源码分析

电路模拟3分析

可以看出,除了注释和最大圈复杂度外,别的数值都在合理的范围之内。

关于注释,因为是题目的代码,并且迭代很快,时间也比较紧,就没有添加注释。

虽然软件中显示的圈复杂度显示在合理的范围之外,超出了最大值,但是14的最大复杂度实际上已经是一个勉强可以接受的数值,但还是最好再优化一下。

但是这次的最大圈复杂度相较于上一次题目中的,已经是减少了一些,已经优化了一部分代码。

第八次题目集

和之前的迭代相同,都是添加了一些新的设备,题目中的电路也会出现一些新的情况。

单纯的从题面上来看,并不是太难,但是实际上需要考虑的情况的很多,而且好像有点bug,并不好写。

类图

电路模拟4类图

电路模拟4中,只添加了一种新的设备——二极管。正向联通,反向时断开。

一开始,只是将二极管正向时的电阻设为0,反向时的电阻设置的较大。但是在后面调试的时候,发现反向时,电阻过大并不能实现电流不通过的效果。将二极管的内部改为一个开关,正向关闭,反向打开,实现了要想要的效果。

题目中要求输出时,不止要输出电器的状态和编号,还要添加新的输出内容,包括每个引脚和电器内部的电流是否超过限制。

为了输出引脚的电势,首先要知道电器引脚的顺序,而我的程序又不能将引脚的顺序读取出来。因此,我再一次修改了对于输入信息进行分析的函数,在第一次读取到新的电器时,将引脚的顺序信息保存在电器的内部之中,并使用contains函数来判断电器是否已经被读取。

源码分析

电路模拟4分析

因为临近期末周,时间不是太多,而且题目的难度高,写都没有写完,更遑论花时间进行修改和优化了。导致代码的质量不太达标。

而且因为赶工,导致有些函数的逻辑并不是太好,最大圈复杂度和方法的平均深度都超过了合适的范围。

三、踩坑心得

对出现的问题及心得进行总结

出现的问题

  1. 对于设备的功能的实现时有点找不到重点,要多考虑。

  2. 写代码时操之过急的情况先不太能注意到程序的逻辑合理性和代码编写的原则。

  3. 对于程序中可能出现的情况没有全部考虑到。

  4. 对于时间的分配不好,导致写题目的时间不足。

获得的心得

  1. 要先搞清楚程序中的各种功能如何实现,再编写程序,防止后期再次修改。

  2. 编写程序同时要关注程序逻辑的合理性

  3. 如何合理地修改以前的代码以满足新的需求

  4. 要更加合理地安排时间以确保代码质量和逻辑的完整性

四、改进建议

给出自己的改进见解,做到可持续改进

代码方面

  1. 对于代码中的一些逻辑复杂或重复的部分,可以考虑进行代码重构,提取公共方法,减少冗余代码,提高代码的可读性和可维护性。

  2. 加强错误处理机制,包括异常处理和错误提示。确保程序在出现异常情况时能够正确处理并给出清晰的提示,提高程序的健壮性。

  3. 以考虑优化一下自己的代码的结构和逻辑,以提高程序的性能和效率。

结构方面

  1. 确保代码中有足够的、合理的注释,记录函数的功能信息,便于其他人阅读和理解代码,也便于以后的修改。

  2. 编写合适的测试用例对程序进行测试,充分考虑到各种情况,确保程序在各种情况下都能正常运行。

  3. 提升结构的合理性,不断地优化代码,提高代码的质量。

五、总结

本阶段两次题目集的综合性总结,和对教学方面的建议

自己感想

这几次的题目集,不仅是对于现有能力的考验,也是在为我们找出自身存在的不足。

我在编程能力和逻辑思维方面还存在着一些不足。在做题过程中存在的问题也不少,包括对程序功能实现的理解不够深入、代码逻辑有时不够清晰、对问题场景的考虑不够全面等方面。

同时我现在的代码质量不够高、程序结构不够完善、时间分配也不合理,都是我以后要改善的地方。

我以后要注意到这些问题,时时刻刻提醒自己,通过不断地练习,提升自己在代码编程方面和程序结构设计的能力。

建议及意见

  1. 在题目集结束之后,可以适当地放出一些样例来,让我们可以知道自己错在了什么地方,而不是只能将不完善的代码搁置,而不知道自己的程序实际上的问题出现在哪里。

  2. 仍可以适当的设置一些有关于课内没有的内容的题目。

六、完结撒花

时间跨度两三个月,一共八个题目集,pta作业也算是告一段落了。

其中分为两个阶段:第一个是判题程序的四次迭代,后就是电路模拟程序的四次迭代,侧重的内容不同,考察的中心也有差异,但都是对于编程能力和程序的设计能力的考验,同时也可以从自己做题的过程中发现自己的不足之处,从而一点点改进,是课程中很好的一部分。

课程中有些东西讲着讲着就没有了,就像是雨刷程序。但是模式可以,可以继续发展下去,形成一套可以使用的体系。

也可以增加一些有关于课外知识的内容,对于写题也会有一些帮助。

最后感谢老师们的付出和指导💕

本文作者:cyaytl

本文链接:https://www.cnblogs.com/cyaytl/p/18271803

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   cyaytl  阅读(14)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示