首页 > 其他分享 >PTA7-8总结

PTA7-8总结

时间:2024-06-30 18:31:40浏览次数:1  
标签:总结 Circuit 代码 电路 PTA7 电压 组件 输入

前言

知识点

PTA7:

这是一个模拟电路系统的Java程序,其中定义了多种电路组件(如开关、调速器、灯泡、风扇等),并模拟了它们的交互和行为。下面是对代码的详细分析:

类和继承
Circuit 类:
这是一个抽象基类,定义了所有电路组件共有的方法,如设置输入电压、显示状态等。

Switch 类:
继承自 Circuit,代表一个开关。
包含状态(开/关)、名称和输入/输出电压。
change() 方法用于切换开关状态。

Binning_governor 类:
继承自 Circuit,代表一个分档调速器。
包含档位、名称和输入/输出电压。
setGears1() 和 setGears2() 方法用于调整档位。

Continuous_governor 类:
继承自 Circuit,代表一个连续调速器。
包含调速档位、名称和输入/输出电压。
setGears() 方法用于设置调速档位。

Incandescent_lamp 类:
继承自 Circuit,代表一个白炽灯。
包含亮度、名称和输入电压。
setInput_voltage() 方法用于设置输入电压并计算亮度。

Fluorescent_lamp 类:
继承自 Circuit,代表一个日光灯。
包含亮度、名称和输入电压。
setInput_voltage() 方法用于设置输入电压并计算亮度。

ceiling_fan 类:
继承自 Circuit,代表一个吊扇。
包含转速、名称和输入电压。
setInput_voltage() 方法用于设置输入电压并计算转速。

daget 类:
作为总用电器类,所有的线路内的都继承它
包括
inInput_voltage() 传递电流

主程序逻辑
输入处理:

程序通过 Scanner 读取用户输入,根据输入的不同前缀(如 [K、[F、[L 等)创建不同的电路组件,并将其存储在 TreeMap 中。
处理命令如 #K、#F、#L 等,用于改变开关状态、调整调速器档位或设置连续调速器的档位。
电路模拟:

根据输入电压和电路组件的状态,计算并更新每个组件的输出电压。
如果电路中存在关闭的开关,则整个电路断电。
如果电路连接正确(即所有组件都正确连接且没有断路),则电路通电。
输出:

根据电路状态,输出每个组件的状态信息。

PTA8:

类图如下:

这是一个模拟电路系统的Java程序,其中定义了多种电路组件(如开关、调速器、灯泡、风扇等),并模拟了它们的交互和行为。下面是对代码的详细分析:

类和继承
Circuit 类:
这是一个抽象基类,定义了所有电路组件共有的方法,如获取电阻、设置电压、显示状态等。

Switch 类:
继承自 Circuit,代表一个开关。
包含状态(开/关)、名称和输入/输出电压。
change() 方法用于切换开关状态。

Binning_governor 类:
继承自 Circuit,代表一个分档调速器。
包含档位、名称和输入/输出电压。
setGears1() 和 setGears2() 方法用于调整档位。

Continuous_governor 类:
继承自 Circuit,代表一个连续调速器。
包含调速档位、名称和输入/输出电压。
setGears() 方法用于设置调速档位。

Incandescent_lamp 类:
继承自 Circuit,代表一个白炽灯。
包含亮度、名称和输入电压。
setInput_voltage() 方法用于设置输入电压并计算亮度。

Fluorescent_lamp 类:
继承自 Circuit,代表一个日光灯。
包含亮度、名称和输入电压。
setInput_voltage() 方法用于设置输入电压并计算亮度。

Ceiling_fan 类 和 Floor_fan 类:
继承自 Circuit,代表吊扇和落地扇。
包含转速、名称和输入电压。
setInput_voltage() 方法用于设置输入电压并计算转速。
电路组件

Series_circuits 类:
代表一个串联电路。
包含一个 LinkedHashMap,用于存储串联的电路组件。
getstate() 方法用于判断电路的状态(短路、通路或断路)。

Parallel_circuits 类:
代表一个并联电路。
包含一个 LinkedHashMap,用于存储并联的串联电路。
getresistance() 方法用于计算并联电路的总电阻。

主程序逻辑
输入处理:

程序通过 Scanner 读取用户输入,根据输入的不同前缀(如 #T、#K、#F 等)创建不同的电路组件,并将其存储在 Parallel_circuits 中。
处理命令如 #K,用于改变开关状态。
电路模拟:

根据电路组件的状态和输入电压,计算并更新每个组件的输出电压。
使用 Series_circuits 和 Parallel_circuits 来模拟串联和并联电路的行为。
输出:

根据电路状态,输出每个组件的状态信息。

踩坑心得:

1.treemap<>的自然排序只会对key值是单一数据类型生效

2.java不支持多继承,只承认有一个父类,如果要实现相应功能,可以实现接口

改进建议:

PTA7:

代码结构:
将每个设备类放在单独的文件中,这样可以提高代码的可维护性和可读性。
为每个设备类创建一个单独的包,例如com.example.circuit.switch,这样可以更好地组织代码。

注释和文档:
为每个类和方法添加详细的注释,说明其功能和用法。
使用Javadoc为公共类和方法生成文档。

异常处理:
在尝试获取电路对象时,如果对象不存在,应该抛出异常或者返回一个错误代码,而不是直接使用null检查。

输入验证:
在处理输入时,应该更严格地验证输入数据的格式和范围,以防止无效输入。

代码重复:
代码中有一些重复的代码,例如设置输入电压和显示电路状态的方法。可以考虑将这些重复的代码提取到单独的方法中。

数据结构选择:
使用TreeMap来保持电路名称的有序排列是一个好的选择。但是,应该考虑是否真的需要保持这种顺序,或者是否可以使用其他数据结构来提高性能。

错误处理:
当电路状态发生变化时,应该有一个清晰的错误处理机制来处理无效的状态变化,例如尝试将调速器的档位设置为负数。

性能优化:
在处理电路状态时,代码中有多个循环和条件判断。可以考虑使用更高效的数据结构和算法来优化性能。

功能测试:
编写一些测试用例来测试不同的电路配置和输入,以确保代码的健壮性和正确性。

PTA8:

代码结构:
将每个设备类放在单独的文件中,这样可以提高代码的可维护性和可读性。
为每个设备类创建一个单独的包,例如com.example.circuit.switch,这样可以更好地组织代码。

注释和文档:
为每个类和方法添加详细的注释,说明其功能和用法。
使用Javadoc为公共类和方法生成文档。

异常处理:
在尝试获取电路对象时,如果对象不存在,应该抛出异常或者返回一个错误代码,而不是直接使用null检查。

输入验证:
在处理输入时,应该更严格地验证输入数据的格式和范围,以防止无效输入。

代码重复:
代码中有一些重复的代码,例如设置输入电压和显示电路状态的方法。可以考虑将这些重复的代码提取到单独的方法中。

数据结构选择:
使用TreeMap来保持电路名称的有序排列是一个好的选择。但是,您应该考虑是否真的需要保持这种顺序,或者是否可以使用其他数据结构来提高性能。

错误处理:
当电路状态发生变化时,应该有一个清晰的错误处理机制来处理无效的状态变化,例如尝试将调速器的档位设置为负数。

性能优化:
在处理电路状态时,您的代码中有多个循环和条件判断。可以考虑使用更高效的数据结构和算法来优化性能。

功能测试:
编写一些测试用例来测试不同的电路配置和输入,以确保代码的健壮性和正确性。

接口和抽象类:
考虑使用接口和抽象类来定义电路的通用行为,这样可以提高代码的灵活性和可扩展性。

单元测试:
为每个类编写单元测试,以确保其功能正确无误。

总结:

通过这几次的作业,我学到了如下几点:
1.了解了如何使用Java编程语言实现一个简单的电路模拟系统。
2.学习了面向对象编程的基本概念,包括类、对象、继承和多态等。
3.学习了如何使用Java标准库中的集合类和泛型来实现复杂的数据结构和算法。
4.学习了如何使用注释和文档来记录代码的功能和用法,以及如何使用Javadoc生成文档。
5.学习了如何使用单元测试来确保代码的正确性和健壮性。
6.学习了如何使用代码规范和设计模式来提高代码的可维护性和可读性。
7.学习了如何使用面向对象的设计原则,如单一职责原则、开闭原则和依赖反转原则等。
8.学习了如何使用类和接口来定义电路的通用行为,以提高代码的灵活性和可扩展性。

对课堂和老师的建议:

1.希望能更深入探究面向对象的内涵,以及更多的实际操作。

标签:总结,Circuit,代码,电路,PTA7,电压,组件,输入
From: https://www.cnblogs.com/jackpolo/p/18276788

相关文章

  • 大模型实战1年半,总结一下在企业落地的三个策略
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。总结链接如下:《大模型面试宝典》(2024......
  • 数据库查询总结
     select语句SELECT语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。select语句语法格式SELECT[ALL|DISTINCT]输出表达式,...[FROM表名1[,表名2].....]/*FROM子句*/[WHERE条件]/*WHERE子......
  • PTA题目集7~8的总结性Blog
    前言:对于我这种水平的学生来说本次的7-8次PTA的难度之大令我无从下手,况且之前的第6次PTA就已经让我望而止步了,更别提这两次在第6次PTA题目集之上再次进行迭代的题目了。再加上面临的期末周,大量学科等着我去复习,以至于没时间去钻磨PTA的改动,哭死,连老师都说单单是第8次题目集的题目......
  • 51 stm32开发关于keil mdk的软件配置常用设置 以及 可能会出现的报错总结
    首先左上角那个魔术棒中,是关于下载烧录软件编译的option选择我们点开他进入target需要我们配置的就两处,1:Xtal:填8.0mhz只是因为要填个数代表stm32(外部高速晶振)或(其他晶振)作为主频时钟的时钟源时的晶振大小方便烧录时对一些代码(对芯片的时钟要求高的代码)的自动编译,实际上......
  • 飞行器飞行动力学总结
    飞行器飞行动力学总结基本空气动力学原理标准大气压101325Pa=1atm海平面大气密度1.225Kg/m3标准情况下的大气R=287J/(kg·K)引言影响飞机性能、稳定性、操纵性的关键参数雷诺数\(Re=\dfrac{\rhoV_{\infty}L}{\mu}\):惯性力与粘性力的比值牛顿流体指的是满......
  • C/C++ const 和 volatile 关键字要点总结
    const 和 volatile 是C/C++的两个关键字,各有不同的用途和要点。constconst 关键字用于声明常量,一旦声明为常量,其值就不能被修改。const 可以用于各种数据类型,也包括指针、函数参数、函数返回值和类成员函数。声明常量:声明为 const 的常量,在初始化后不能被修改。co......
  • react-router-dom 6.4版本的尝鲜和总结
    1.版本概述1.1版本发布背景ReactRouter6.4版本是继6.0大版本更新之后的又一重要里程碑。此版本发布于2024年,旨在进一步优化开发者体验,提供更加强大和灵活的路由功能。6.4版本在前一版本的基础上,引入了新的数据抽象,增强了导航钩子,使得UI与数据的同步更加容易。1.2主......
  • Linux环境ftp搭建及问题总结
     环境:centos7.0一、安装软件vsftpd-服务器端rpm-qa|grepvsftpd      yum -y  install vsftpdftp客户端登录ftp服务器或者lftpyum-y installftp二、启动服务systemctl restart vsftpd默认共享目录为 /var/ftp/pub三、配置ftp默认配置......
  • C语言从入门到进阶(15万字总结)
    前言:《C语言从入门到进阶》这本书可是作者呕心沥血之作,建议零售价1元,当然这里开个玩笑。 本篇博客可是作者之前写的所有C语言笔记博客的集结,本篇博客不止有知识点,还有一部分代码练习。有人可能会问,作者不会是cv战士吧!作者在这里回答大家,有cv战士的成分,但不完全是。我是将......
  • petalinux调试常用命令总结
    petalinux调试常用命令总结1.创建新的工程:zynq:petalinux-create-tproject--templatezynq--nametest_projzynqMP:petalinux-create-tproject--templatezynqMP--namezcu102-mp2.创建新的app:petalinux-create-tapps--templatec--namemyapp--enable3.创......