7-8次大作业总结

news/2024/10/6 4:34:54/文章来源:https://www.cnblogs.com/yimm/p/18276806

前言

这两次对我这种水平的学生来说很难写,只能搭建大致的框架和思路。
还是要对对第七和第八次大作业里所学进行一个总结,从多方面来分析这两次作业之间的联系和差异,并从中了解自己的不足与缺点。
第七次作业添加了互斥开关和窗帘,窗帘还好,只是一个简单的电路的受控设备,只需要在电路里计算整个电路的电压,但互斥开关卡了我很久很久,因为我的输入问题,在添加受控设备和控制设备及电路设备时,不是先创建电路设备,然后将控制或受控设备添加进去,导致我在创建互斥开关对象时,需要创建相同的一个对象很多次。这就导致了最后代码变得非常的混乱和复杂,并且有些地方的代码是用来凑答案的。例如算电阻时,单独用了一个if来判断互斥开关的电压,如果是互斥开关,则将电阻除以二。但在电路中有些地方会出现BUG。
第八次大作业是最难的一次,添加了很多的东西,因为前几次的迭代中的混乱的思路,导致我的代码需要对输入和输出进行大改,新的输入和输出能够很好的对前一次的互斥开关和这一次的二极管创建对象,从先创建控制和受控设备改为了先创建电路设备,然后往里面添加新创建的控制和受控设备,这样子互斥开关和二极管就只和有一个对象,代码的简洁程度也大大提高。此外,本次添加的短路测试没有多难,但这次新增的设备输出里,输出设备两端的电势以及输出电路电流是否超过设备的额定电流,这两个在我大改了我的输入及输出后,还是需要递归函数来运行,但我的电路设备中,串联和并联是两个单独的类,所以在这一次作业中,我新定义了一个抽象的电路类继承设备类,里面有设置设备电压和电流的抽象方法,再让并联类和串联类继承电路类,这样子代码的简洁性和复用性就更高了。

设计与分析

开关

开关有0和1两种状态。
开关有两个引脚,一个是输入引脚,一个是输出引脚。
当开关状态为0时,输出电位为0;当开关状态为1时,输出电位等于输入电位。
分档调速器

有多个档位,档位值从0到最大档位(如0-3档)。
每个档位的输出电位为输入电位的某个比例。
连续调速器

按位置比例得到档位参数,范围在[0.00-1.00]之间。
输出电位为档位参数乘以输入电压。
互斥开关 (MutexSwitch)

有三个引脚,一个汇总引脚,两个分支引脚。
互斥开关每次只能接通一个分支引脚,另一个分支引脚断开。
2. 受控设备
受控设备包括灯、风扇、窗帘等,通过两根引脚电压的电压差驱动设备工作。

白炽灯:亮度在0-200lux之间,根据电压差变化。
日光灯:亮度固定为180lux。
风扇

吊扇和落地扇根据电压差有不同的转速范围。
窗帘
3. 电路结构
电路结构由串联和并联组成,需要根据输入信息构建电路图,并进行电压、电流和设备状态的计算
抽象设备类

由这里可知,本次作业在创建对象的代码这里问题很大,导致了下一次迭代花了近两天时间去改代码的思路和整体的结构。对于互斥开关,记录不下来每个引脚在哪一条串联电路上,这对代码的思路产生了很大的影响,导致了整体代码的复杂。例如不好判断到底哪两条含有同一互斥开关的串联电路的哪一条断开,哪一条是通路。

次代码中在排序中添加了字母P,以及新增了二极管类,还有所有电路设备的的构造方法不在只有一个名字id参数,新增了引脚参数,以便于在设置电路设备两端的电势电压时,能够在最后正确输出。在本次迭代中将之前几次迭代里main函数中的输入和输出全部修改,之前的输入和输出方式不能够完成本次作业,所以我花费了大量时间在修改之前的代码上。

踩坑心得

在7-1 家居强电电路模拟程序-3中还改变了输入信息的方法,所以正则表达式也要所有改变,而要注意的是输入的信息中有可能是一整个的串联电路

 if(Tgroup_M.group(4).equals("T")){for(Integer i:seriesCircuits.keySet()){if((Tgroup_M.group(4)+Tgroup_M.group(5)).equals(seriesCircuits.get(i).getName())){seriesCircuit.getCircuitEquipments().add(seriesCircuits.get(i));}}}

所以在进行总的电路的分压的时候还要考虑对串联电路这个特殊设备的分压

for(int i=0;i<seriesCircuits.get(seriesCircuits.size()).getCircuitEquipments().size();i++){seriesCircuits.get(seriesCircuits.size()).getCircuitEquipments().get(i).setVoltage(seriesCircuits.get(seriesCircuits.size()).getCircuitEquipments().get(0).outputVoltage()*(seriesCircuits.get(seriesCircuits.size()).getCircuitEquipments().get(i).getResistance()/seriesCircuits.get(seriesCircuits.size()).getResistance()));seriesCircuits.get(seriesCircuits.size()).getCircuitEquipments().get(i).Distribute();}

迭代的难度不是阶梯式的,而是跨越式的,当上一次代码没有打好基底而勉强通过时,大概率会使这个源码无法用于下次,此时及时更改源码重写远比硬改要好得多,否则第三次迭代会让你根本无从下手。

改进建议

代码风格和结构优化:
确保代码缩进和格式统一,增加代码的可读性。
为类、方法和变量取有意义的名称,以提高代码可理解性。
将不同功能的代码块拆分成更小的方法,以提高代码的模块化和可维护性。
添加必要的注释来解释代码的作用和实现细节。
在这几次大作业中我认为可以对代码的格式进行进一步的美化,提高可读性。
异常处理:
在这几次大作业中,可以在几个关键位置添加异常处理来增强代码的健壮性:
文件读取:在读取输入文件或其他外部资源时,可能会发生文件不存在、权限问题或其他读取错误。可以使用try-catch块来捕获这些异常,并进行适当的处理,例如输出错误消息或采取默认行为。
格式判断:在第四次大作业bolformat方法中进行格式判断时,如果正则表达式匹配失败,可能会抛出异常。可以在try-catch块中捕获这些异常,并处理格式错误的情况,例如记录错误信息或提示用户重新输入。
数据处理:在处理数据时,可能会遇到各种异常情况,都可以进行相应的异常处理。
通过在关键位置添加异常处理,可以更好地处理各种异常情况,提高代码的稳定性和可靠性。同时,根据实际需求,可以自定义异常类来更具体地处理不同类型的异常情况。
3. 代码注释:
添加更多的代码注释,以解释代码的功能和逻辑。这将有助于提高代码的可读性和可维护性。
4. 命名规范:
遵循一致的命名规范,使代码更易于理解。例如,类名使用大写字母开头,方法名使用小写字母开头,变量名使用有意义的名称等。

总结

在这几次的大作业中,我可以学到以下几个方面的知识和技能:
面向对象编程(OOP):代码中使用了类和对象以及继承和多态,体现了 OOP 的思想。通过定义类和创建对象,可以更好地组织和管理代码,提高代码的可读性和可维护性。
数据结构和算法:代码中使用了各种数据结构,如ArrayList来存储问题、试卷和答案等。同时,还使用了一些算法来处理和操作这些数据,如遍历ArrayList、查找匹配的问题等。
文件操作:代码中通过读取文件来获取输入数据,并将处理后的数据写入文件。这涉及到文件的打开、读取、关闭等操作,以及对文件内容的解析和处理。
异常处理:代码中使用了异常处理机制来处理可能出现的错误情况,如文件读取错误、格式错误等。通过捕获和处理异常,可以使程序更加健壮和可靠。
代码组织和模块化:代码将不同的功能模块封装在不同的类中,如Sca类用于格式判断,Data类用于数据存储等。这种模块化的代码组织方式有助于提高代码的可读性和可维护性。
设计模式:虽然代码中没有明显使用设计模式,但可以从中体会到一些设计原则,如单一职责原则、开闭原则等。通过合理地设计类和方法,使得代码更加灵活和易于扩展。
数据处理和逻辑判断:代码需要对输入的数据进行处理和判断,如判断格式是否正确、将数据分类存储等。这涉及到对数据的解析、逻辑判断和处理能力。
测试和调试:在实际开发中,测试和调试是非常重要的环节。通过对代码进行测试,可以发现潜在的问题并及时修复,确保代码的正确性和稳定性。
总之,这几次的大作业涵盖了多个方面的知识和技能,通过学习和理解,可以提升自己的编程能力和解决问题的能力。同时,也可以根据实际需求对代码进行改进和扩展,以满足更多的功能需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/734290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三轮OOP作业总结

随着这一次大作业的结束,这学期的PTA大作业也随之完结,可以说这最后一次大作业也是最难的一次,在这一次作业中我也感受到了不良代码结构所导致的修改错误的痛苦,接下来让我们对这两次题目进行相应分析。家居强电电路模拟程序-3 家居强电电路模拟程序-4第三次作业 这一次大作…

Windows 7操作系统全面解析与实用技巧

深入介绍Windows 7操作系统的基础知识、功能特性、分类和基本操作技巧,包括核心功能、特征、分类、安装方法、启动、文件管理、个性化设置等方面。旨在帮助用户深入理解Windows 7,并掌握提高工作效率和个性化设置的实用技巧。Win7操作系统一、操作系统的概述 1.1操作系统的概…

C#使用MQTT通讯协议发布订阅主题报文

一、服务端1.添加引用MQTTnet类库  2.代码:启动一个MQTT服务1        // 启动一个MQTT服务器2 // MQTT 3 IMqttServer server = new MqttFactory().CreateMqttServer();4 server.ClientConnectedHandler = new MqttServerClient…

图解 Jenkins Pipeline 的前端自动化部署,用上后真香!

图解 Jenkins Pipeline 的前端自动化部署,用上后真香! 原创 悟空聊架构 悟空聊架构 2024-06-27 20:57 广东 听全文你好,我是悟空。 本文目录如下:一、Jenkins 前端部署思路1.1 整体架构图1.2 部署步骤二、Pipeline和自由风格对比三、Pipeline 核心脚本3.1 获取 Git 代码分支…

23201115-邓俊豪-第三次blog

目录blog2前言关于难度和题目量关于知识点设计与分析pta-7一、项目简介二、项目实现三、项目测试四、代码示例五、总结六、代码分析pta-8一、项目简介二、项目实现三、项目测试四、代码示例五、总结六、代码分析改进建议 blog2 前言 关于难度和题目量 前三次大作业难度属于偏难…

Fastapi 项目第二天首次访问时数据库连接报错问题Cant connect to MySQL server

问题描述 Fastapi 项目使用 sqlalchemy 连接的mysql 数据库,每次第二天首次访问数据库相关操作,都会报错:sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Cant connect to MySQL server on x.x.x.x ([Errno 111] Connection refused)"…

linux安装中文字体

1.从windows复制宋体字体2.linux系统下/usr/share/fonts 3.创建simsun路径,将字体文件放进去4.改一下字体权限 cd /usr/share/fonts/ sudo chmod -R myfonts 7555.安装依赖 yum install mkfontscale yum install fontconfig6.执行以下命令 mkfontscale mkfontdir fc-cache7.查看…

(五)DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍如需引用 DeepSpeed Chat,请引用我们的arxiv report: @article{yao2023dschat,title={{DeepSpeed-Chat: Easy, Fast and Affordable RLHF Training of ChatGPT-like Models at All Scales}},author={Zh…

第7-8次OOP作业总结

一、前言 1.第七次作业(家居强电电路模拟程序-3) 这次作业题目在原先的基础上新增用电器新增了互斥开关和受控窗帘,同时存在多个并联电路,无疑在上次作业的基础上过程没有太大变化,难度也是相当,主要是新的用电器的添加问题。并联电路的改动还好说,上次作业我便考虑到了,…

Python——比 Seaborn 更好的相关性热力图:Biokit Corrplot

在 Python 中我们日常分析数据的过程当中经常需要对数据进行相关性分析,相关性热力图(Correlation Heatmap)是我们经常使用的一种工具。通过相关性热力图,我们可以通过为相关性不同的数据使用不同深浅的不同颜色进行标记,从而直观地观察两两数据序列之间的相关性情况——这…

流量治理核心策略

熔断、隔离、重试、降级、超时、限流https://mp.weixin.qq.com/s/_3pht6cFdkuRfrE1z0dpKQ

第三次blog大作业

1,前言:最后两次大作业都是只有一道题,就是前面的家庭电路模拟题的迭代,题目量虽然看起来很少只有一道题目,但是这一道题目也比前面出几道题目的时候花的时间还要长,第七次大作业的迭代主要考虑的是单刀双置开光,单刀双置开关为了避免短路,他连接不同的电路还会有不同的…