首页 > 其他分享 >Blog3

Blog3

时间:2024-12-28 22:11:59浏览次数:5  
标签:题目 调速器 代码 电路 设计 Blog3 设备

(1)前言
在完成题目集7-1(家居强电电路模拟程序-3和-4)的过程中,我深入理解了智能家居设备的控制逻辑、电路原理及其编程实现。这些题目集主要考察了对电路元件的理解与应用、面向对象编程的设计模式以及处理复杂输入输出的能力。

知识点

题目集7-1-3:此题要求设计一个智能家居强电电路模拟系统,涵盖了多种控制设备(开关、分档调速器、连续调速器、互斥开关)、受控设备(灯、风扇),并新增了窗帘控制功能。
题目集7-1-4:在此基础上增加了管脚电压显示、电流限制、短路检测等功能,并引入了二极管元件。同时考虑了并联电路中包含并联电路的情况,这增加了问题的复杂度和灵活性。
题量与难度

题目集7-1-3和7-1-4各为一题,但涉及的知识点非常广泛,从简单的电路连接到复杂的电流计算和异常处理,难度逐步提升。特别是题目集7-1-4,需要深入理解电路原理以及Java中复杂的类与接口的设计,这对我的编程技能提出了更高的要求。
(2)设计与分析
以题目集7-1-3为例进行详细分析
源码结构

针对题目集7-1-3,我们构建了一个包含多个类的对象模型来表示不同的电路组件。以下是核心类图的一部分,展示了主要的类及其关系:

CircuitDevice:所有电路设备的基类,定义了公共属性和方法。
ControlDevice 和 ControlledDevice:分别继承自 CircuitDevice,用于区分控制设备(如开关)和被控设备(如灯)。
SeriesCircuit 和 ParallelCircuit:实现了串联和并联电路的功能。
特定设备类:如 Switch, Dimmer, Bulb, Fan, InterlockSwitch, Curtain 等,每个类都根据具体需求实现了特定的行为。
设计类图:

顺序图:

心得
通过使用PowerDesigner绘制类图,可以清晰地看到各个类之间的层次关系,有助于更好地组织代码逻辑。同时利用SourceMonitor工具生成报表,帮助评估代码质量,例如代码行数、圈复杂度等指标,从而指导优化工作。

关键类解析

CircuitDevice 类作为所有电路设备的基础,封装了通用属性和方法,如设备标识符、引脚编号、状态更新等。这样可以避免重复代码,并且使得扩展新类型更加容易。
ControlDevice 类负责管理控制行为,比如开关状态切换、调速器档位调整等。它还提供了接口供子类实现具体的控制逻辑。
ControlledDevice 类则关注于响应来自控制设备的动作,比如灯光亮度调节、风扇转速变化等。该类同样定义了一些抽象方法留给具体设备去实现。
SeriesCircuit 和 ParallelCircuit 类不仅实现了基本的电路连接方式,而且还支持递归包含其他类型的电路,增强了系统的可组合性。
具体设备类如 Switch, Dimmer, Bulb, Fan, InterlockSwitch, Curtain 等,则专注于各自的特性实现,确保每个组件都能按照预期工作。
性能考量
考虑到大规模电路模拟可能带来的性能瓶颈,我们在设计之初就注重算法效率。例如,在计算电流时采用了逐级传递的方式,减少了不必要的重复运算;对于存在多条路径的情况,提前计算出最短路径以加速后续处理过程。

特殊功能

窗帘控制:题目集7-1-3新增了窗帘控制功能,根据室内灯光的光照强度自动调整窗帘开合比例。这一特性不仅提升了用户体验,也增加了系统的智能化程度。
互斥开关:互斥开关具有独特的三引脚设计,能够防止两个分支同时接通导致的短路风险。其内置限流电阻进一步保障了电路的安全性。
调速器:分档调速器和连续调速器允许用户精细调整输出电压,适用于不同类型的负载需求。这种灵活性是智能家居控制系统的重要组成部分。
(3)踩坑心得
在开发过程中遇到了一些挑战,特别是在处理复杂的电路网络时。以下是一些关键问题及解决方案:

正则表达式的复杂性:最初尝试用过于复杂的正则表达式解析输入格式,导致难以维护。后来改为采用更简单的方式逐步验证输入合法性,简化了正则表达式的使用,将复杂的匹配规则拆分成多个小部分,每部分只处理一部分输入格式,提高了代码的可读性和易维护性。
输入数据错误处理:引入了严格的输入验证机制,并结合try-catch块捕获异常,确保程序稳定性。此外,还使用StringBuilder收集所有错误信息,在最后一次性输出给用户,既提升了用户体验也方便了调试。
电路原理理解不足:初期对电压传递和电流分配存在误解,经过查阅资料、编写测试用例反复试验后逐渐掌握了正确的算法。查阅了电路原理相关的书籍和在线资源,加深了对电路基础知识的理解;并通过编写测试用例,反复试验不同的电路配置,逐步修正算法中的错误。
性能优化:对于大规模电路模拟,早期版本存在效率低下的问题。通过对算法重构、分离计算逻辑等方式提高了执行速度。例如,将电压传递和电流分配的计算逻辑分离出来,放在独立的方法中,便于管理和维护,同时也减少了主逻辑中的负担。
(4)改进建议
为了进一步提高代码质量和解决问题的能力,我认为可以从以下几个方面着手改进:

简化正则表达式:继续简化正则表达式的使用,尽量减少不必要的复杂度,将复杂的匹配规则拆分成多个小部分,每部分只处理一部分输入格式,提高代码的可读性和易维护性。
增强电路知识:加强对电路基础知识的学习,尤其是电学理论部分,确保在面对复杂电路问题时能够迅速找到解决方案。
定期回顾已有代码:寻找潜在的优化空间,比如减少重复代码、提高算法效率等,通过模块化和复用性设计,使代码更加清晰和高效。
增加更多自动化测试用例:确保每次改动都不会破坏现有功能,通过编写全面的单元测试和集成测试,保证系统的稳定性和可靠性。
引入设计模式:适当引入设计模式,如工厂模式、策略模式等,以提高代码的灵活性和扩展性。这不仅能使代码结构更为合理,还能降低后期维护的成本。
(5)总结
经过题目集7-1-3,我在编程技能和解决实际问题方面有了显著进步。不仅学会了如何构建大型软件系统,还掌握了更多关于电路模拟的专业知识。然而,在某些领域仍有待加强,例如更高效的算法设计和更优雅的异常处理方式。

学习成果

基础知识的重要性:无论是数据处理还是电路模拟,扎实的基础知识都是解决问题的关键。在遇到难题时,回归基础往往能找到突破口。
代码的可维护性:编写可维护的代码不仅有助于自己未来的开发工作,也能方便他人理解和修改。通过模块化和复用性设计,可以使代码更加清晰和高效。
调试技巧:调试是编程中不可或缺的一部分。学会使用调试工具和编写测试用例,可以大大提高开发效率,减少错误的发生。
团队合作:与其他同学交流和合作是非常重要的。通过讨论和分享,可以互相启发,共同进步。
持续学习:技术是不断发展的,只有保持持续学习的态度,才能跟上时代的步伐。无论是阅读最新的技术文章,还是参加线上课程,都是提升自己的有效途径。
改进建议

增加实际案例:在课程中增加更多实际案例的讲解,帮助学生更好地将理论知识应用于实践中。实际案例可以来自真实世界的问题,也可以是经典的编程挑战。
定期举办编程比赛:通过举办编程比赛或项目展示活动,激发学生的学习兴趣,促进同学间的交流和合作。比赛可以设置不同的难度级别,适合不同水平的学生参与。
提供更多资源:提供更多的学习资源,如参考书籍、在线教程和开源项目,帮助学生在课后继续学习和探索。
鼓励创新思维:在教学过程中,鼓励学生发挥创新思维,提出独特的解决方案。可以通过小组讨论、头脑风暴等方式,培养学生的创造力和批判性思维。
综上所述,题目集7-1-3不仅是对我编程能力的一次考验,也是对我的学习方法和个人成长的重要契机。未来将继续努力,不断提升自我,迎接更大的挑战。

针对题目集7-1-3的具体分析
设计与实现
题目集7-1-3的重点在于设计一个智能家居强电电路模拟系统,涵盖了一系列控制设备(如开关、分档调速器、连续调速器、互斥开关)和受控设备(如灯、风扇),并且加入了窗帘控制的新特性。下面我们将详细探讨这部分内容的设计思路和技术实现。

控制设备

开关:实现了两种状态(打开/关闭),并能正确传递电源信号至下一个节点。
分档调速器:提供了四个固定档位的选择,可以根据设定值调整输出电压的比例。
连续调速器:允许用户通过滑动条的形式精确设置输出电压。
互斥开关:拥有三个引脚,能够在两个分支之间选择性地导通其中一个,防止同时接通造成短路。
受控设备

灯具:包括白炽灯和日光灯两种类型,前者依据电压差线性调节亮度,后者则是全亮或熄灭的状态。
风扇:分为吊扇和落地扇,它们的工作电压范围相同,但在不同区间内的转速有所不同。
窗帘:基于室内灯光总亮度自动调整开合程度,实现了智能遮阳的效果。
电路连接

每个设备都有明确的引脚定义,确保了连接信息的准确性和一致性。
支持单条串联电路以及由多条串联电路组成的并联电路结构,增强了系统的灵活性。
模拟运行

当整个电路建立完毕后,可以通过命令行输入指令来改变各部件的状态,实时观察到相应的反应。
输出结果按照规定的格式呈现,包括但不限于设备状态、管脚电压、当前电流等重要参数。
实现心得
在完成题目集7-1-3的过程中,深刻体会到良好的架构设计对于项目的成功至关重要。合理的类划分不仅让代码易于理解和维护,也为后续功能扩展打下了坚实的基础。此外,充分理解电路原理对于正确实现各类设备的行为同样不可忽视。例如,互斥开关内部的限流电阻设计有效预防了潜在的安全隐患;而窗帘控制逻辑则体现了智能家居系统的人性化设计理念。

总之,通过这次练习,不仅巩固了之前所学的知识,也在实践中获得了宝贵的经验。相信这些收获将会在未来的学习和工作中发挥重要作用。
以题目集7-1-4为例进行详细分析
源码结构

针对题目集7-1-4,我们构建了一个包含多个类的对象模型来表示不同的电路组件。以下是核心类图的一部分,展示了主要的类及其关系:

CircuitDevice:所有电路设备的基类,定义了公共属性和方法。
ControlDevice 和 ControlledDevice:分别继承自 CircuitDevice,用于区分控制设备(如开关)和被控设备(如灯)。
SeriesCircuit 和 ParallelCircuit:实现了串联和并联电路的功能。
特定设备类:如 Switch, Dimmer, Bulb, Fan, InterlockSwitch, Curtain, Diode 等,每个类都根据具体需求实现了特定的行为。
设计类图:
顺序图:

心得
通过使用PowerDesigner绘制类图,可以清晰地看到各个类之间的层次关系,有助于更好地组织代码逻辑。同时利用SourceMonitor工具生成报表,帮助评估代码质量,例如代码行数、圈复杂度等指标,从而指导优化工作。

关键类解析

CircuitDevice 类作为所有电路设备的基础,封装了通用属性和方法,如设备标识符、引脚编号、状态更新等。这样可以避免重复代码,并且使得扩展新类型更加容易。
ControlDevice 类负责管理控制行为,比如开关状态切换、调速器档位调整等。它还提供了接口供子类实现具体的控制逻辑。
ControlledDevice 类则关注于响应来自控制设备的动作,比如灯光亮度调节、风扇转速变化等。该类同样定义了一些抽象方法留给具体设备去实现。
SeriesCircuit 和 ParallelCircuit 类不仅实现了基本的电路连接方式,而且还支持递归包含其他类型的电路,增强了系统的可组合性。
具体设备类如 Switch, Dimmer, Bulb, Fan, InterlockSwitch, Curtain, Diode 等,则专注于各自的特性实现,确保每个组件都能按照预期工作。
性能考量
考虑到大规模电路模拟可能带来的性能瓶颈,我们在设计之初就注重算法效率。例如,在计算电流时采用了逐级传递的方式,减少了不必要的重复运算;对于存在多条路径的情况,提前计算出最短路径以加速后续处理过程。

(3)踩坑心得
在开发过程中遇到了一些挑战,特别是在处理复杂的电路网络时。以下是一些关键问题及解决方案:

正则表达式的复杂性:最初尝试用过于复杂的正则表达式解析输入格式,导致难以维护。后来改为采用更简单的方式逐步验证输入合法性,简化了正则表达式的使用,将复杂的匹配规则拆分成多个小部分,每部分只处理一部分输入格式,提高了代码的可读性和易维护性。
输入数据错误处理:引入了严格的输入验证机制,并结合try-catch块捕获异常,确保程序稳定性。此外,还使用StringBuilder收集所有错误信息,在最后一次性输出给用户,既提升了用户体验也方便了调试。
电路原理理解不足:初期对电压传递和电流分配存在误解,经过查阅资料、编写测试用例反复试验后逐渐掌握了正确的算法。查阅了电路原理相关的书籍和在线资源,加深了对电路基础知识的理解;并通过编写测试用例,反复试验不同的电路配置,逐步修正算法中的错误。
性能优化:对于大规模电路模拟,早期版本存在效率低下的问题。通过对算法重构、分离计算逻辑等方式提高了执行速度。例如,将电压传递和电流分配的计算逻辑分离出来,放在独立的方法中,便于管理和维护,同时也减少了主逻辑中的负担。
(4)改进建议
为了进一步提高代码质量和解决问题的能力,我认为可以从以下几个方面着手改进:

简化正则表达式:继续简化正则表达式的使用,尽量减少不必要的复杂度,将复杂的匹配规则拆分成多个小部分,每部分只处理一部分输入格式,提高代码的可读性和易维护性。
增强电路知识:加强对电路基础知识的学习,尤其是电学理论部分,确保在面对复杂电路问题时能够迅速找到解决方案。
定期回顾已有代码:寻找潜在的优化空间,比如减少重复代码、提高算法效率等,通过模块化和复用性设计,使代码更加清晰和高效。
增加更多自动化测试用例:确保每次改动都不会破坏现有功能,通过编写全面的单元测试和集成测试,保证系统的稳定性和可靠性。
引入设计模式:适当引入设计模式,如工厂模式、策略模式等,以提高代码的灵活性和扩展性。这不仅能使代码结构更为合理,还能降低后期维护的成本。
(5)总结
经过题目集7-1-4的学习,我在编程技能和解决实际问题方面有了显著进步。不仅学会了如何构建大型软件系统,还掌握了更多关于电路模拟的专业知识。然而,在某些领域仍有待加强,例如更高效的算法设计和更优雅的异常处理方式。

学习成果

基础知识的重要性:无论是数据处理还是电路模拟,扎实的基础知识都是解决问题的关键。在遇到难题时,回归基础往往能找到突破口。
代码的可维护性:编写可维护的代码不仅有助于自己未来的开发工作,也能方便他人理解和修改。通过模块化和复用性设计,可以使代码更加清晰和高效。
调试技巧:调试是编程中不可或缺的一部分。学会使用调试工具和编写测试用例,可以大大提高开发效率,减少错误的发生。
团队合作:与其他同学交流和合作是非常重要的。通过讨论和分享,可以互相启发,共同进步。
持续学习:技术是不断发展的,只有保持持续学习的态度,才能跟上时代的步伐。无论是阅读最新的技术文章,还是参加线上课程,都是提升自己的有效途径。
本学期通过完成题目集7和题目集8,我学习到了Java编程的基础知识,包括类和对象的创建、继承、多态等面向对象编程的概念。通过设计和实现电路模拟程序,我加深了对抽象类、方法重写和多态性的理解。同时,我也学会了如何使用类图和顺序图来描述和分析程序设计。

在编码过程中,我遇到了一些挑战,比如如何合理地设计类结构以满足需求,以及如何实现设备状态的正确更新。通过不断调试和优化代码,我提高了解决问题的能力,并学会了如何更有效地使用开发工具。

对于未来的学习,我计划进一步深入学习Java高级特性,如泛型、注解和并发编程,并尝试将所学应用到更复杂的项目中。同时,我也希望能够提高我的系统设计能力,以便能够更好地处理大型软件项目的开发。

对于课程的改进,我建议增加更多的实践项目,让学生有机会将理论知识应用到实际问题中。此外,我还建议增加代码审查和设计讨论的环节,以帮助学生提高代码质量和设计能力。

标签:题目,调速器,代码,电路,设计,Blog3,设备
From: https://www.cnblogs.com/wpnchu/p/18638023

相关文章

  • java-BLOG3
    一:前言知识点总结题目集7控制设备:引入了开关、分档调速器、连续调速器和互斥开关四种控制设备,重点在于理解这些设备的工作原理及其在电路中的作用。受控设备:包括灯(白炽灯、日光灯)和风扇(吊扇、落地扇),以及新增的受控窗帘。主要考察学生对不同设备工作状态的理解和计算。电......
  • blog3-题目集7~8
    一、前言:本次的Blog,是电路3和电路4,首先我想说的是在电路2的时候,我并没有拿到满分,直到做到电路3的时候我才发现了电路2缺少的部分,就是嵌套的串联电路,之前是没有考虑在一个T里面还有T的,电路3的一个测试样例这才点醒了我,随后也是修改了电路2的代码,拿到了满分。二、设计与分析:大......
  • blog3-期末
    一、前言 本次博客主要涉及到成绩统计系统、HashMap容器的检索、排序等基本实现、以及期末测试的三棱锥表面积和体积的计算。 知识点包括面向对象的设计思想、集合类的使用、异常处理、字符串处理、输入输出流以及Java语言基础等。 面向对象的基础知识:包括类和对象的基础......
  • BLOG3
    一、前言1.知识点运用:检索功能,排序功能,继承关系及组合关系。2.题量:作业7,作业8,期末考试。3.难度:成绩2和成绩3较为困难,跟成绩1相比,成绩2增加了实验课以及它对应的成绩统计方式,而成绩3则在第二次的基础上修改了计算总成绩的方式,要求:修改类结构,将成绩类的继承关系改为组合关系,成绩......
  • BLOG3
    一、前言麻烦各位帅哥美女给高点分儿,我每次互评都给了90分以上!感谢!1.知识点:LinkedHashMap和HashMap是有区别的,前者是按插入顺序储存元素,后者是哈希表排序会在后面讲Listab=studenttotalscoremap.computeIfAbsent(grade.student,k->Arrays.asList(0.0,0.0));ab.set(0......
  • java-blog3
    一、前言1、知识点:主要是java中类与类之间的关系和类图的构建以及对数据的处理2、题量:不多3、难度:难度在不断的变大,每一题所花的时间也在不断的增加二、设计与分析:7-3课程成绩统计程序-2分数60全屏浏览题目切换布局作者 蔡轲单位 南昌航空大学......
  • blog3
    前言题目主要包含7-1容器-HashMap-检索 7-2容器-HashMap-排序 7-3课程成绩统计程序-2 7-4动物发声模拟器(多态)7-1容器-ArrayList-排序 7-2课程成绩统计程序-3 7-3jmu-Java-02基本语法-03-身份证排序 7-4jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack 7-5jm......
  • BLOG3
    作业总结1.1前言面向对象的基础知识:包括类和对象的基础概念、构造方法、访问权限和成员变量面向对象的设计原则:这个题目着重讲述了两个重要的面向对象设计原则:继承和组合。要求学生对两者的区别有深入的理解,并能根据实际需求选择使用哪种设计原则。异常处理:这个题目中涉及......
  • pta总结blog3
    前言第七次题目集:该次题目集有四道题目,有两道是考察的HashMap的检索与排序功能,一道是考察的多态的运用,最重要的一道便是成绩计算系统-2,第六次题集的成绩计算系统的升级版,该题在前一个系统的基础之上增加了一种课程类型:实验,也增加了对应的考核方式。第八次题目集:该次题目集共有五......
  • Blog3
    PTA题目集6,7,8总结Blog一、前言大一下学期开始,我们开始学习Java这门编程语言。Java具有大多数编程语言共有的特性,是专门设计用于互联网分布式环境的。它的形式和感觉类似于C++,但相比C++更易于使用,并且完全采用了面向对象的编程方式。到目前为止,我们已经完成了八次Pta作业。除了......