oop第7~8次作业总结(第三次Blog)

oop第7~8次作业总结(第三次Blog)

一、前言

二、设计与分析

三、踩坑心得

四、改进建议

五、总结

一、前言

1、第七次作业

第六次作业只有一道题,与上次相比,本次迭代考虑多个并联电路串联在一起的情况,考虑一条串联电路中包含其他串联电路的情况。增加了互斥开关和受控窗帘两个设备。互斥开关有三个引脚,2与3 进行选择,默认为2,互斥开关考虑电阻的情况。受控窗帘需要根据整个电路的亮度来进行调整,默认为100%。线路中包含多个串联起来的并联电路。这次迭代需要考虑的情况有很多,需要在上次的基础上再加入新代码。

2、第八次作业

这次迭代新增加了电流,引脚的电压。需要遍历进一步进行赋值。增加管脚电压的显示(在输出每个电器的状态信息后,再依次输出该电器每个管脚的电压)。电流限制(电器在工作时,过大的电流会引起电器过热,从而烧坏电路。本次迭代,每个元器件都有最大电流的设置,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“exceeding current limit error”,与前面的信息之间用英文空格分隔)。短路检测(如果电路出现无穷大的电流造成短路,所有元器件信息不输出,仅输出提示“short circuit error”)。并联电路中包含并联(本次迭代考虑并联电路中包含并联电路的情况,即构成并联电路的串联电路可以包含别的并联电路)。还增加了二极管元件,其电路特性为:正向导通,反向截止;当电流从左至右流过时,二极管导通”conduction”,电阻为0;电流从右至左流动时,二极管截止”cutoff”,电阻无穷大,相当于开关打开。

 

二、设计与分析

1、第七次作业

输入分析:

串联:一条串联电路占一行,串联电路由按从靠电源端到接地端顺序依次输入的 n 个连接 信息组成,连接信息之间用英文空格分隔。

并联:一条并联电路占一行,并联电路由其包含的几条串联电路组成,串联电路标识之间用英文空格分隔。

输出分析:

和前两次的输出都差不多,多了互斥开关和受控窗帘。

思路分析:输入后进入InputMatching进行信息拆分,将设备单独分出来,电路单独分出来;信息拆分完后进入BroseMatching进行各个设备的创建,通过遍历InputMatching里拆分出来的设备信息和调控信息对其进行遍历并创建设备;设备创建完后进入Set进行电路的设置,将串联并联电路上拥有的信息加入Information中,再根据Information中的Connect,依次遍历找到里面的内容并放进去;每个电路都确定了之后,再设置电压,并通过电压来设置受控电器的工作信息。最后是输入,先对设备进行排序,最后输出。

 

类图:

该题是智能家居强电电路模拟系统,Control用来存放控制设备,Switch是开关(可以有多个,其中包括了开关名、是否打开),Continuous是连续调速器(只能有一个,只有档位),Series是分档调速器(只能有一个,只有档位),其中Control是Switch、Continuous、Series的父类;Controlled用来存放受控设备,Lamp是灯(有亮度,Daylight是日光灯,Incandescent是白炽灯,两者都是Lamp的子类),Fan是风扇(有风速,Ceilingfan是吊扇,Floorfan是落地扇,两者都是风扇的子类),其中Controlled是Lamp、Fan的父类;Concatenation是串联电路;ToltalConcatenation是整个电路,Parallel是并联电路,Information是信息类(其中放入电路的名字和电路里的设备信息),InputMatching是是输入类(进行输入信息读取和读取设备信息),BroseMatching是创建类,进行单个设备的创建,set设置电路信息;Main函数进行设计。

设计分析:

可以看出OutPut里的复杂度较高,因为我为了保证各个设备能够按照顺序输出,加入了Conllections的sort方法,每一个设备进行输出,需要多个for循环;其次就是BroseMatching,因为需要创造设备,就需要通过遍历来找到该设备,从而进行创建。

2、第八次作业

输入分析:

与上次的相同,增加了二极管和并联中也能有并联

输出分析:

与之前相比加入了许多东西,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“exceeding current limit error”;如果电路出现无穷大的电流造成短路,所有元器件信息不输出,仅输出提示“short circuit error”,二极管:当电流从左至右流过时,二极管导通”conduction”,电阻为0;电流从右至左流动时,二极管截止”cutoff”,电阻无穷大,相当于开关打开。

思路分析:输入后进入InputMatching进行信息拆分,将设备单独分出来,电路单独分出来;信息拆分完后进入BroseMatching进行各个设备的创建,通过遍历InputMatching里拆分出来的设备信息和调控信息对其进行遍历并创建设备;设备创建完后进入Set进行电路的设置,将串联并联电路上拥有的信息加入Information中,再根据Information中的Connect,依次遍历找到里面的内容并放进去;每个电路都确定了之后,再设置电压,并通过电压来设置受控电器的工作信息。最后是输入,先对设备进行排序,最后输出。

因为这次加入了二极管和引脚,所以对设备设置电势差后,再通过遍历设置各个引脚的电压;二极管也要在存储信息时知道是从2传入还是1传入。

类图:

Control用来存放控制设备,Switch是开关(可以有多个,其中包括了开关名、是否打开),Continuous是连续调速器(只能有一个,只有档位),Series是分档调速器(只能有一个,只有档位),其中Control是Switch、Continuous、Series的父类;Controlled用来存放受控设备,Lamp是灯(有亮度,Daylight是日光灯,Incandescent是白炽灯,两者都是Lamp的子类),Fan是风扇(有风速,Ceilingfan是吊扇,Floorfan是落地扇,两者都是风扇的子类),其中Controlled是Lamp、Fan的父类;Concatenation是串联电路;ToltalConcatenation是整个电路,Parallel是并联电路,Information是信息类(其中放入电路的名字和电路里的设备信息),InputMatching是是输入类(进行输入信息读取和读取设备信息),BroseMatching是创建类,进行单个设备的创建,set设置电路信息,Pins是引脚信息;Main函数进行设计。

设计分析:

可以看出OutPut函数里的复杂度仍然时最高的,因为加入的设备更多,需要遍历的也更多。

 

三、踩坑心得

1、第七次作业

因为前几次作业分析得不是很到位,所以第七次作业重新改进了我的代码,我觉得之前的思路不清晰也让我狠狠踩了坑,这次也需要花大量时间来重新设计思路。其次是互斥开关:

答案错误的问题基本上都是互斥开关的问题,并且互斥开关需要考虑引脚的问题,因为开关是唯一的,但是不同引脚的电压又是不同的,我在写第七次作业时并没有考虑在互斥开关里加入数组电压,而是遍历时每次都会通过互斥开关的信息来分配电压,这个还是会比较麻烦的。还有很多重复的代码,其实做的工作都是一样的,但是我又写了一遍;有些其实只用遍历一次的,但是我遍历了多次增加了复杂度,比如:

其实这里可以直接遍历总电路里的受控设备信息找到受控窗帘。

 

2、第八次作业

第八次作业我觉得有点变态,老师的思路比我的跳跃很多,有时根本就想不到有这个测试点,而且老师给的测试点也少得可怜😢。这次需要改动的东西也比较多,所以有时候思路比较混乱,这次的类更多了,导致自己存了什么东西好多都忘记了😓。还有数组越界,非零返回这些常规的问题,有一个非零返回主要是因为遍历控制设备时,会不小心把i变成负数,导致数组找不到数,比如:

四、改进建议

  • 在做题前需要边读题边思考,有一个清晰明确的思路后再开始编写,不然写了一大半发现思路错误后,只能推翻重写了,不仅浪费时间,还影响了自己的思路。
  • 做题时不能主观臆断,要看清楚题目中所给出的正确信息,不能盲目猜想。
  • 进行后续迭代时可以转换一下自己的思路,思考一下应该怎样写更加便捷并且不会把自己绕晕,过于冗长繁琐,写代码之前也应该斟酌一下,避免出现后面写了一大堆代码后发现想要修改很多地方的情况。上一部分不太清晰的地方即使改正,不然后续的迭代只会越来越错。
  • 自己的时间要合理安排,应该是每科平衡,而不是目前哪科更急就只看哪科,在合适的时间做合适的事情。
  • 下一次迭代可以在上一次的基础上重新编写一下串并联之间的关系,以及电压的设置,仔细思考更简单的方法,遵守单一职责原则,提高类的可读性,可维护性。
  • 对数组的遍历最好不要盲目地对i进行变换,要思考一下,会不会出现数组越界的情况,不然会出现非零返回。
  • 代码能简洁就简洁,不要出现重复的情况,这样增加复杂度,同时也会让自己比较疑惑。

五、总结

这两次PTA作业对我来说还是有点难度的,老师的测试样例真的好少😭,自己的思维也没有打开。在这两次作业中,我学会了转变自己的思维,当被一个难点困住时,我应该改变原来的想法,看看别的思路会不会更好做一点。还有每一步都要与这道题息息相关,通过遍历,一步一步地找到里面含有的信息,这样脑子就不会很晕。代码的注释也是一个好的习惯,有了注释调试的时候会更加方便。JAVA的知识掌握得不是很好,希望自己能在暑假多加练习。

posted @ 2024-06-29 11:23  桃_YYH  阅读(6)  评论(0编辑  收藏  举报