OOP第三次blog作业

OOP第三次blog总结作业 

第七次作业总结

前言

相对于第六次作业,本次作业添加了设备类:受控窗帘,控制类:互斥开关。(总体来说还是对电路的设计情况)。

设计与分析

设计:

  1. 受控窗帘:

    总的来说就是如何实现所有Lamp类工作所发出的亮度lux的总和??

首先我给它添加了一个存储所有灯类设备的属性:

然后设计遍历它计算总和流明:

最后待work完show出相关数据即可(就是用了比较多的if去判断,个人感觉可以另写一个方法来优化show):

  1. 互斥开关:

    在这里设计互斥开关的过程中其实是相对比较艰辛的。通过观察输入样例发现:好像互斥开关总是放在开头或者结尾!!——>这让我产生了直接通过两个开关(只不过带有电阻罢了)去平替它
    这样就可以通过两个开关的反馈获得互斥开关的相关信息进行输出了!!
    屏幕截图 2024-06-29 170017
    主要核心都是围着这两个开关进行的,只不过输出是根据这两个开关反馈的。这样我就很轻松的完成了这一次的大作业。(当然第一次提交没有满分:),只有91分。剩下9分我不知道具体哪里出了问题,可以去看这一部分的踩坑心得。)


    分析:
    类图:其实就添加了Curtain(受控窗帘类)以及MutexSwitch(互斥开关类)
    屏幕截图 2024-06-29 163858
    Metrics图表:
    屏幕截图 2024-06-29 164400
    可以看出来Input类都变红了,可见耦合度和复杂度以及是非常严重了。平均才2.08,而Input类居然达到了61。其实这一直都是硬伤,我也没有具体的处理方法,因为这是处理输入信息的。我要在其中根据不同的输入情况,用正则表达式,来new出不一样的对象,并且对其进行放入相关容器中方便work和输出处理。

采坑心得

说到这个,就记得那9分无法获得的痛苦,我不断去测测试点,通过不断地进行调试,还是没有任何收获。当然也不能完全说没有收获,因为我完善了总电路短路的判断。为最后一次作业打下了坚实的基础。最后我实在找不到是哪里出错了,就去问其他得100分的人,一问,好家伙,原来输出排序是根据字典序排序的而不是自然数的顺序。然后我就进行了更改。