面向对象程序设计第七、八次作业总结

news/2024/12/28 23:51:34/文章来源:https://www.cnblogs.com/22207205-dkj/p/18638048

前言

这篇博客是完成《面向对象程序设计》(java)课程的中三次PTA作业后的总结。主要内容有:

  1. 家居强电电路模拟程序 - 3
  2. 家居强电电路模拟程序 - 4

题目分析

家居强电电路模拟程序 - 3 分析

这是第三次的家居强电电路模拟程序,这次的强度变高了,题目有点难。
设备包括:控制设备(开关、调速器)和受控设备(如灯具、风扇)。模拟电路的连接关系及电压、电位差对设备状态的影响。电路中包含多个控制设备、受控设备以及它们之间的连接。控制设备调整受控设备的状态(如灯的亮度、风扇的转速)。电路连接信息提供了设备之间的电气连接关系。电源(VCC)提供220V电压,接地(GND)为0V电压。
那对于这种设备的模拟,比较合适的面向对象的设计的方法是继承。继承关系体现了面向对象的多态性,不同的设备可以有不同的行为和属性。最基本的类有两个:
设备类包含设备的基本属性,如设备名、输入引脚、输出引脚、状态等。
引脚类包含连接信息。
设备类和引脚类采用组合模式,设备类内含有输入和输出引脚的变量(应该没有三个脚的)。设备的行为(如开关、调速器等)是由这些引脚的电位差来决定的。
主要是增加了受控窗帘、互斥开关。互斥开关还有电阻。还增加了串联电路的一些计算条件,例如可以有串联电路中有串联电路的情况。
受控窗帘的开关程度是通过所有灯具的亮度和来控制的。
互斥开关相比起其他元件来说多了一个引脚,也就是说需要修改“元件”这个东西的设计。他不能只有两个引脚了,电流可以选择其一通过。而且,互斥开关的电阻也是可变,实现变得复杂了。
线路中包含多个串联起来的并联电路。多个并联电路需要串联在一起计算了。思路也可以改变一下。之前可能只有一个并联,现在可能会有多个并联。
因此,我确定了我这次的优化思路:输入之后,根据电路的拓扑结构,使用适当的计算来计算电压和电流的分布。
对于串联电路,电流不变,电压分配;对于并联电路,电压不变,电流分配。
在每个节点上更新电压、电流和电阻值,并根据互斥开关或受控窗帘等条件进行相应的状态变更。对于串联电路和并联电路的组合,需要准确计算电流和电压的分布。在串联电路中,电流保持不变,而电压在各个电阻上按比例分配。在并联电路中,电压保持不变,而电流会根据电阻的不同进行分配。程序中需要能够实时更新电流和电压的值,并反映到电路的状态中。
这是我的类图设计。

对于最核心的,就是electricDevice类

类的依赖关系如下:

运行流程:

  1. 按顺序,将输入存储。
  2. 从存储的输入里面解析数据,根据输入的连接信息创建设备electricDevice对象并连接它们,并连接和创建junction 类用于存储和设备间的电压。
  3. 通过 processCommands() 方法解析并执行控制命令(例如开关设备、调节档位等)
  4. 通过 propagateVoltage() 方法,程序将初始电压通过电路传递到各个设备,并根据设备类型计算输出结果(如亮度、转速等)。
  5. 最后,outputStatus() 方法输出所有设备的当前状态。

最后一次的分析

这一次是最难的,比较难得分。主要区别就在于:增加了二极管这种东西。电流流向需要注意了。但其实我没有做出来这道题,只是做了一些工作。
还有一些增加的描述,如:受控设备电阻。白炽灯的电阻为 10,日光灯的电阻为 5,吊扇的电阻为 20,落地扇的电阻为 20,窗帘电阻为15。 在本题中,并联电路M中的串联电路可以包含别的并联电路。
我增加了一个二极管类。

class Diode extends electricDevice {Diode(String name) {super(name);}// 重写 calOutVoltage 方法,导通电压为 0V@Overridepublic void calOutVoltage() {if (getInVoltage() > 0) {// 输入电压大于 0 时,二极管导通,输出电压等于输入电压setOutVoltage(getInVoltage());} else {// 输入电压为 0 或负时,二极管不导通,输出电压为零setOutVoltage(0);}}// 检测电流方向等public void showCurrentBehavior() {if (getInVoltage() > 0) {System.out.println(getName() + " is conducting with voltage: " + getInVoltage());} else {System.out.println(getName() + " is not conducting.");}}
}

由于没做出来,所以我的分享也不太有用,似乎计算方向上还需要额外进行添加。

一些学到的调试方法分享

多存信息,方便打印

面向对象程序设计中,类很方便的可以帮我们进行资源管理。因此,我们可以把很多东西放心的存在里面。比如:我们可以给很多东西命个名。
在这次的家庭电路模拟程序中,非常复杂的电路计算往往需要打印(System.out.print...)。这时候如果我们把创建对象的名字存起来,就很方便打印了。
我还添加了一个类,专门用于存储是否打开调试信息,

class debug
{static public int is_debug=1;
}

这样,我就可以只更改一个“1”就可以控制debug信息打印了,提交时候更方便,不用注释了(虽然可能用不到了)

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

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

相关文章

服务器重装系统后无法使用初始密码进行远程连接,应如何解决?

当您遇到服务器重装系统后无法使用初始密码进行远程连接的问题时,这通常意味着在重装过程中某些配置没有正确设置或存在其他潜在问题。以下是详细的排查和解决方案:确认密码正确性:首先确保您使用的确实是服务器提供的最新初始密码。有时服务商会在邮件或其他通知中提供新的…

如何解决宝塔面板登录密码忘记的问题?

您好,当您忘记了宝塔面板的登录密码时,可以按照以下步骤进行重置和处理:确认初始密码:如果您从未修改过宝塔面板的登录密码,默认情况下,宝塔面板的初始密码与服务器的初始密码相同。您可以尝试使用服务器的初始密码进行登录。如果您不确定服务器的初始密码,可以在云服务…

如何解决网站无法访问的问题?

您好,当您遇到网站无法访问的问题时,可以按照以下步骤进行排查和解决,确保网站能够正常运行:确认域名解析:首先,检查域名是否正确解析到服务器的IP地址。您可以通过在线DNS查询工具(如(网址))来验证域名解析是否正确。如果解析有问题,请联系域名注册商进行修正。检查服…

如何取消IP直接访问网站?

您好,当您希望取消通过IP地址直接访问您的网站时,可以通过以下步骤进行设置,确保用户只能通过域名访问,而不能通过IP地址直接访问。以下是详细的解决方案:理解原理:默认情况下,Web服务器(如Nginx、Apache等)会监听所有请求,无论这些请求是通过域名还是IP地址发起的。…

如何解决数据库超标需要升级的问题?

您好,当您遇到数据库超出配额并需要升级时,可以按照以下步骤进行处理,确保数据库能够正常运行并满足业务需求:确认当前使用情况:首先,登录到云服务提供商的管理控制台,查看当前数据库的使用情况。了解具体的存储空间、连接数、查询次数等指标,以确定是否确实超出了配额…

软件工程个人总结

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 总结软工实践整个过程学号 102202154一、学期回顾 1.1 回顾你对于软件工程课程的想象 软件工程,在我对这门课程…

free version GitHub Copilot All In One

free version GitHub Copilot All In One AI 编程编码助手free version GitHub Copilot All In OneAI 编程编码助手GitHub Copilot freeResponses are limited to 2,000 code completions and 50 chat messages per month. https://github.com/settings/copilot GitHub Copilot…

7~8次作业总结

一、前言家居强电电路模拟程序-3知识点:所考察的知识点与前两次任务相比区别不大,都是主要用到封装,继承和多态等面向对象的基础操作,所用类的结构也没有多大变化,主要是新增了互斥开关以及电路中可能存在多条并联电路,这要求我对电路的相应知识有更多的了解。 题量分析:…

网站被挂马,如何处理?

网站被挂马后,您希望能够尽快清理并防止再次发生。这类问题可能由以下几个原因引起:木马文件植入: 黑客可能通过漏洞植入了木马文件,导致网站被挂马。建议您立即删除所有可疑文件,并进行全面扫描。可以使用专业的杀毒软件或在线扫描工具(如Sucuri SiteCheck)检查网站文件…

无法安装网站模板

FTP权限问题: FTP账户可能没有足够的权限上传和解压模板文件。建议您检查FTP账户的权限设置,确保具有读写权限。可以通过FTP客户端或服务器管理工具检查和修改FTP账户权限。如果权限不足,可以联系服务器提供商申请提升权限。模板文件损坏或不完整: 模板文件可能在下载或上传…

数据库备份和导入失败

在后台使用数据库自带的备份功能时,选择备份到指定位置失败,提示操作失败:500。这类问题可能由以下几个原因引起:InnoDB引擎限制: InnoDB引擎无法直接复制源文件进行备份和恢复。建议您使用SQL方式导出SQL备份文件。具体步骤如下:登录数据库管理工具(如phpMyAdmin) 选择…

127.0.0.1服务器无法访问网页

Web服务器未启动或异常: Web服务器(如Nginx或Apache)可能未启动或出现异常。可以通过命令systemctl status nginx(适用于Nginx)或systemctl status httpd(适用于Apache)检查Web服务器的状态。如果服务未启动或已停止,可以尝试重启Web服务器:systemctl restart nginx或…