杨龙升后两次大作业总结

(1)前言
最后两次的大作业通过两个智能家居强电电路模拟系统的编程题目深入探讨了物联网技术在智能家居领域的应用。这两个题目集不仅涵盖了广泛的知识点,而且题量适中,难度逐渐提升,为我提供了一个由浅入深的学习路径。
第七次知识点与分析
知识点:

  • 智能家居中的控制设备和受控设备,包括开关、调速器、灯具和风扇等。
  • 模拟电路连接,实现家居环境的智能控制。
  • 互斥开关、连续调速器等复杂设备的引入,增加了模拟的难度和真实性。
    题量与难度:
  • 题量适中,要求设计和实现一个完整的智能家居电路模拟系统。
  • 难度方面,较为简单,主要涉及基本的电路连接和设备控制,为后续更复杂的模拟打下基础。
    第八次知识点与分析
    知识点:
  • 在上一次题目的基础上,增加了并联电路和二极管等新元素,提高了设计的复杂度。
  • 需要考虑电流限制和短路检测,以确保电路的安全性。
  • 二极管的导通和截止状态处理,模拟现实世界中的电路行为。
    题量与难度:
  • 题量与上一次相似,但在复杂度上有所增加,要求对电路的理解和模拟更为深入。
  • 难度提升,特别是在处理并联电路和二极管时,需要更加细致的逻辑和计算。
    这两个题目通过逐步增加的复杂性,不仅让我掌握了智能家居电路模拟的基础知识,还锻炼了我在面对实际问题时的逻辑思维和问题解决能力。通过这些实践,我学会了如何将理论知识转化为实际的代码实现。
    (2)设计与分析


    设计心得
    在设计过程中,我深刻体会到了面向对象编程的强大。通过抽象和封装能够将复杂的电路模拟问题分解为一个个独立的、可管理的模块。这不仅提高了代码的可读性和可维护性,也使得功能的扩展变得更加容易。
    模块化设计:通过将不同的设备抽象为CircuitDevice的子类可以轻松地添加或修改设备类型,而不影响其他部分的代码。例如,新增一个Diode类(二极管)时,只需继承CircuitDevice并实现其特有的行为即可。
    封装性:每个设备类都封装了自己的行为和状态,如Switch类中的isClosed状态,这使得外部代码无需了解内部实现细节,只需通过公共接口与之交互。
    易于扩展:面向对象的设计使得添加新功能,如电流限制和短路检测变得更加简单。例如,在第八次大作业中,我为每个设备添加了maxCurrent属性和isExceedingCurrentLimit方法,轻松实现了电流限制的功能。
    代码复用:基类CircuitDevice提供了通用的属性和方法,如updateState和getOutput,这些在所有设备中都是通用的,避免了代码的重复编写。
    心得体会
    通过这两次大作业的编程实践,我不仅加深了对面向对象设计原则的理解,还学会了如何在实际项目中应用这些原则。我意识到,要成为一名优秀的工程师,不仅要掌握编程语言和技术,还要学会如何分析和解决问题。在未来,我需要进一步学习更高级的编程技术和设计模式,并在实际项目中不断实践和应用。同时,我也需要深入研究物联网技术,以便更好地理解和应用这一领域的最新发展。
    (3)采坑心得
    在这两次大作业中,我遇到了一系列挑战,这些问题不仅考验了我对物联网技术的理解,也锻炼了我的编程技巧和问题解决能力。以下是我在源码编写和提交过程中遇到的一些主要问题以及从中得到的心得体会。
    第七次采坑心得
    问题1:电流分配逻辑错误
    在模拟并联电路时,我最初未能正确实现电流的分配逻辑。根据基尔霍夫定律,电路中任意节点的电流之和应该为零。但在初次提交的代码中,我简单地将电流平均分配给了各个分支,没有考虑到各个分支的电阻差异,导致电流分配不均。
    解决方案与测试结果:
    通过增加一个计算电阻比的方法来调整电流分配。计算每个分支的电流,基于其电阻值占总电阻的比例。修改后的代码如下:
    double totalResistance = ...; // 总电阻计算
    double current = inputVoltage / totalResistance; // 总电流计算
    for (SeriesCircuit circuit : seriesCircuits) {
    double branchCurrent = current * (1.0 / circuit.resistance) * totalResistance;
    circuit.setInputVoltage(inputVoltage, inputVoltage - branchCurrent * circuit.resistance);
    circuit.updateState();
    }
    经过修改后,我进行了多次测试,确保在不同电阻配置下电流分配的正确性。测试结果显示,修改后的代码能够正确处理并联电路中的电流分配问题。
    心得体会:
    这次经历让我深刻认识到,在编程过程中,理解和模拟现实世界的物理规律是非常重要的。同时,我也学会了如何通过测试和调试来发现和解决问题。
    问题2:二极管导通和截止状态处理不当
    在处理二极管的导通和截止状态时,我未能正确处理电压为0的情况。最初,我认为只要电压不为0,二极管就会导通,这忽略了二极管的单向导电性。
    解决方案与测试结果:
    我查阅了相关资料,并考虑了二极管在电压为0时的行为。根据半导体物理,当二极管两端电压为0时,其导通状态取决于电流的方向。因此,我修改了代码,增加了对二极管方向的判断:
    if (inputVoltage1 == 0 && inputVoltage2 == 0) {
    isConduction = inputVoltage1 > inputVoltage2; // 根据二极管方向判断导通状态
    } else if (inputVoltage1 > inputVoltage2) {
    isConduction = true; // 正向电压,导通
    } else {
    isConduction = false; // 反向电压,截止
    }
    经过修改后,我对二极管的行为进行了全面的测试,包括正向导通、反向截止以及零电压情况。测试结果表明代码能够正确模拟二极管的行为。
    心得体会:
    这次问题解决过程让我认识到,对于电子元件的行为,不能仅凭直觉,而应深入理解其物理原理。同时,我也学会了如何查阅资料,结合理论知识来解决实际问题。
    第八次采坑心得
    问题:电流限制逻辑实现错误
    题目要求我们实现电流限制功能,以防止电器过热烧坏电路。在最初的实现中,我错误地将电流限制逻辑放在了每个设备的更新状态方法中,而不是在电路的模拟过程中动态检查。
    解决方案与测试结果:
    重新设计电流限制的逻辑,将其集成到电路的模拟过程中。在计算电流后,检查是否超过了设备的最大电流限制,并在输出中添加相应的错误提示。修改后的代码如下:
    double current = ...; // 电流计算
    if (device.isExceedingCurrentLimit(current)) {
    System.out.printf("@%s:%s %d-%d exceeding current limit error%n", device.getId(), device.getOutput(), (int) device.getOutputVoltage1(), (int) device.getOutputVoltage2());
    }
    经过修改后,我进行了多次测试,确保在不同电流条件下,电流限制功能的正确性。测试结果显示,修改后的代码能够正确处理电流限制问题,并在超过限制时给出提示。
    心得体会:
    这次问题解决让我认识到,对于功能实现,需要从整体架构出发,合理分配逻辑。

总结来说,通过解决这些问题,不仅提升了我的编程技能,也加深了对物联网技术的理解。我学会了如何将理论知识应用到实际编程中,并通过测试和调试来优化代码。这些经验对我未来的学习和工作都是非常宝贵的财富。
(4)改进建议

  1. 引入设计模式
    工厂模式
    目的:简化对象的创建过程,使得代码更加模块化。
    应用:对于各种设备的创建,可以使用工厂模式来封装对象的创建逻辑,减少switch或if语句的使用,使得新增设备类型时更加方便。
    观察者模式
    目的:实现设备状态变化的实时通知。
    应用:当某个设备的状态发生变化,如开关状态改变、调速器档位调整时,可以通知依赖于该设备状态的其他设备或系统部分进行相应的更新。
  2. 单元测试
    目的:确保每个设备类的功能正确性,以及在代码修改后功能不受影响。
    应用:为每个设备类编写测试用例,包括正常情况和边界情况,确保代码的稳定性和可靠性。
  3. 代码复用和模块化
    目的:提高代码的复用性,减少重复代码。
    应用:将共用的代码片段,如电阻计算、电流计算抽象为方法或类,使得代码更加简洁和易于维护。
    (5)总结
    在这两次题目集的设计与实现过程中,我积累了宝贵的实践经验,并获得了深刻的学习体会。通过这一过程,我不仅深入理解了物联网技术在智能家居领域的应用,如设备互联和信息交互等功能,还掌握了智能家居电路模拟的基础知识,包括控制设备和受控设备的工作机制,例如开关、调速器、灯具和风扇等。

通过第七次和第八次大作业的编程实践,我加深了对面向对象设计原则的理解,并学会了如何在实际项目中应用这些原则。在分析和设计电路的过程中特别是在处理新元素时,我学会了需要更加细致的逻辑和计算。

我学会了如何将理论知识转化为实际的代码实现,并通过迭代开发电路模拟程序,提升了我的编程能力。同时,我也掌握了测试和调试的方法,这对于发现和解决问题至关重要。此外,我还学会了通过代码复用和模块化设计来提高代码的可读性和可维护性。

未来学习与研究方向包括:

  1. 高级编程技术:我需要进一步学习更高级的编程技术和设计模式,以便在实际项目中更加灵活地应用。
  2. 物联网技术深入研究:随着物联网技术的快速发展,我计划深入研究这一领域的最新发展,以便更好地理解和应用。
  3. 电路设计优化:我计划进一步学习电路设计优化的方法,包括性能优化和安全性考虑,以提高电路模拟的运行效率和稳定性。
  4. 用户界面设计:为了提供更好的用户体验,我需要学习用户界面设计,开发更友好的用户界面,使得非技术用户也能轻松使用电路模拟系统。
  5. 异常处理和错误检测:我将研究如何在代码中实现更全面的异常检测和错误处理,提高程序的健壮性。

总之,本阶段的学习不仅让我掌握了智能家居电路模拟的基础知识和编程技能,还激发了我对物联网技术深入研究的兴趣。我将继续学习,将这些宝贵的经验应用到未来的学习和工作中,不断提升自己的技术能力和解决问题的能力。

(6) 学期总结
随着本学期Java语言设计课程的圆满结束,我深感自己在编程技能和软件开发理解上有了显著的提升。
学期收获

  1. Java基础知识的巩固
    通过本学期的学习,我对Java语言的基础知识有了更深入的理解。从数据类型、控制结构、类和对象,到继承、多态和接口,每一个概念都通过实践得到了巩固和应用。
  2. 面向对象编程的深入理解
    Java作为一门面向对象的编程语言,让我深刻体会到了面向对象编程的强大。我学会了如何设计类,如何实现封装、继承和多态,以及如何通过接口和抽象类来提高代码的灵活性和可维护性。
  3. Java集合框架的掌握
    集合框架是Java中处理数据集合的核心工具。我掌握了List、Set、Map等集合的使用,以及它们的实现类和性能特点,这让我在处理数据时更加得心应手。
    结语
    感谢老师耐心的指导和同学们无私的帮助,让我在Java编程的世界里不断成长。在编程实践中,我深刻反思了自己的不足,比如对细节的忽略以及在设计模式应用上的短板。我认识到,编程不仅仅是一项技术技能,它更是一种创造性的思考和解决问题的过程。每当我攻克一个难题或完成一个功能,那种成就感都是无法比拟的。
    Java语言和软件开发领域都在迅速发展,我明白学习是一个永无止境的旅程。因此,我计划继续深化我的Java知识,并探索其他编程语言和技术,以保持自己的竞争力。本学期的Java语言设计课程是我编程旅程中的一个重要里程碑。我将携带这学期的收获,继续我的探索之旅,不断深入编程的世界,努力成为一名卓越的软件工程师。

posted on 2024-12-28 22:37  抚恤不阿帆够就  阅读(31)  评论(0)    收藏  举报

导航