- 引子
前不久,我完成了第五次和第六次大作业。这次的作业主题是“家居强电电路模拟程序”,每次的作业都是在前一次作业的基础上进行迭代。此次作业训练了前段时间新学的继承与多态,并且巩固了之前学到的一些旧的知识。 - 作业总结
- 从难度来看,这两次的大作业题都是由一种题目发展扩充来的,不断的深入。因为每次的题涉及的电路越来越复杂,电器越来越多,而且电路有串并联以及开关的控制,所以显而易见的,作业的难度在逐渐提升,这也就代表着我需要更好的思维和逻辑以及方法。
- 从知识点的涉及来看,这两次的题目所要运用的知识点越来越多,它涉及到了对正则表达式的运用(这对输入格式的判断有着很大的帮助,减少了我的代码量以及降低了分隔字符的难度,很轻松的判断格式以及获取输入中的所需信息)、ArrayList和哈希表(这能够很好的帮我添加内容、查找内容以及删除内容)。而最重要的是对类的建立以及对继承和多态的理解,分析好每次所需的对象,判断类中所要用的方法以及类与类之间的关系和联系。
- 从每次作业的题量来说,第六次大作业的题量都只有一题,相比之前的作业没有了前几题的铺垫,之前可以给每次的作业来个预热,但学了继承与多态,大作业就是一个小工程了,要结合自己对继承的理解去设计类。但值得一说的是,第五次大作业的第三小题,他的提交系统可能有点问题,我的答案通过了样例,一样的答案最后反复提交了好几次才过,希望老师能够改进这一个问题。
- 而从每次的结果来看,我觉得这次的结果还是可以的,至少每次作业的测试点全都过了。对于第五次的作业还是很轻松的,基本上是不需要什么的(有了C语言上的基础倒也能完成)。但是从第六次的作业来看,就开始有点不太行了。因为这次电路问题相比较于第五次题目这次涉及到了并联。因为我的代码并不能简单的修改一点就能够解决这次的问题,所以我基本上是需要全部重新去写的,所以就有点难受。这不仅要考虑到上次的问题,还要设计在这次的问题。写完之后,我的代码就很杂,一次又一次的循环和if嵌套,之间的关系开始变得混杂,有点理不清理,测试点都是一点一点的过,第一次十分、第二次十六分。。。。。。可想而知,这是十分痛苦的。但值得高兴的是,通过这这种方法,我也完成了此次的作业。
接下来我将要对每次的作业进行分析。
- 作业分析
智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能。请根据如下要去设计一个智能家居强电电路模拟系统。
这是这一类题目的电路图,每一次迭代会增加1-2个新的电路元件,在串联的基础上加上不同的并联。这也就造成了电路的复杂性,从而给类的设计,电压求解带来不便。
- 第五次题目集
这次的作业还没有什么,因为它只涉及到一个串联电路,电路单一,元件比较少,比较简单一点。我给每种元件都做了一个子类,并且写了一个他们的父类(父类的属性有电压,电阻,编号),父类中写了一个display方法(用abstract修饰)用于输出每个元件的状态(结果)。我的Main类中用每一个元件都用了一个ArrayList来存入它们的信息,并输出结果。
值得注意的是开关的问题,因为如果开关是断开的,那么开关所在的串联电路是没有电流的,这也就意味着所有的元件是不工作的,这时候的所有元件的电压全为零。 - 第六次题目集
这次的作业虽然只比上一次的作业多了一个并联,但是他的难度上升了不止一点。然后他还增加了一个新的元件(落地扇),但这个没什么大的影响,很容易处理。然后为了处理并联的问题,我又多加了一个串联类和一个并联类。这两个类中都用了ArrayList用来存支路上的元件。
- 改进代码
对于我现在的代码需要改进的地方还很多。比如,它现在的耦合度还非常的高,Main类中的代码长度很长,没有很好的分配,做到职责单一。我将会进一步划分每个类的职责,优化自己的代码架构。还有,就是我写的还有点乱,这需要花点时间去整理它。 - 总结与收获
通过这次大作业,首先就是能够更加熟练的使用HashMap与ArrayList,这两种方法中,我对HashMap的理解运用更熟练一点。最后就是了解到了面向对象的思维,即使现在还非常的不熟练,但在今后的学习中,我相信会变得越来越熟练。
通过这几个星期的作业,我体会到了java的复杂度,这也就需要我花费大量的时间去理解它,提前学习常用的一些方法,以便能够简化自己的代码,降低自己的压力。除了在学堂在线上的视频要认真看完以及课后习题写完外,还可以自己去找一些视频看,完善老师所没有涉及的内容。