第三次blog总结
一.前言
这一次总结是学期Java学习的最后一次总结,这次大作业的总体难度对于我来说非常大,是分别经过两次迭代和三次迭代的家居强电电路模拟程序,迭代次数相同的情况下相比于前一次的大作业阶梯性提升难度非常大。
第七次大作业:
1.题量:只有核心家居强电电路模拟程序-3。
2.难度:第七次大作业是继前两次大作业家居强电电路模拟程序两次迭代后的题目,迭代次数不多,但是难度提升了很多,加入了并联串并联和串联套串联的情况,并且加入了相对比较麻烦的互斥开关,这样的迭代使得大作业的难度提升了一个高度。
3. 知识点:
涉及到的Java知识点包括:
- 类和对象:代码中定义了多个类(如
Main
,AllDevice
,KSwitch
,FGovernor
等),并创建了这些类的对象来模拟电路中的各种设备。 - 继承:
AllDevice
是一个抽象类,提供了一些基本属性和方法,而其他类如KSwitch
,FGovernor
等继承自AllDevice
并实现了具体的功能。 - 多态:通过重写(Override)父类的方法,子类可以提供特定的实现,例如
calculate
和display
方法在不同的子类中有不同的实现。 - 接口:虽然代码中没有直接使用Java的
interface
关键字,但是AllDevice
类的行为类似于一个接口,因为它定义了一些必须被子类实现的方法。 - 集合:使用了
ArrayList
来存储和管理设备对象,例如sConnections
和pConnections
。 - 异常处理:代码中没有显示的异常处理机制,但在实际应用中,对输入数据的验证和错误处理是很重要的。
- 正则表达式:使用
Pattern
和Matcher
类来解析和处理输入字符串中的特定模式。 - 输入输出:使用
Scanner
类来获取用户的输入,并使用System.out.println
来输出结果。 - 循环和条件语句:使用
for
循环和if-else
语句来控制程序的流程。 - 数组和字符串操作:在代码中对数组(例如
ArrayList
)和字符串进行了操作,如字符串拼接、字符串比较等。 - 构造方法:定义了带参数和不带参数的构造方法来初始化对象的状态。
第八次大作业:
- 题量:只有核心家居强电电路模拟程序-4。
- 难度:第八次大作业是继前大作业家居强电电路模拟程序三次迭代后的题目,相较于前几次大作业难度提升了很多,对于我这种前几次没有一次满分的人来说,是我写不了的高度,但我也尝试了一下。
3.知识点的使用: - 类和对象:代码中定义了多个类(如
Main
,AllDevice
,KSwitch
,FGovernor
等),并创建了这些类的对象来模拟电路中的各种设备。 - 继承:
AllDevice
是一个抽象类,提供了一些基本属性和方法,而其他类如KSwitch
,FGovernor
等继承自AllDevice
并实现了具体的功能。 - 多态:通过重写(Override)父类的方法,子类可以提供特定的实现,例如
calculate
和display
方法在不同的子类中有不同的实现。 - 接口:虽然代码中没有直接使用Java的
interface
关键字,但是AllDevice
类的行为类似于一个接口,因为它定义了一些必须被子类实现的方法。 - 集合:使用了
ArrayList
来存储和管理设备对象,例如sConnections
和pConnections
。 - 异常处理:代码中没有显示的异常处理机制,但在实际应用中,对输入数据的验证和错误处理是很重要的。
- 正则表达式:使用
Pattern
和Matcher
类来解析和处理输入字符串中的特定模式。 - 输入输出:使用
Scanner
类来获取用户的输入,并使用System.out.println
来输出结果。 - 循环和条件语句:使用
for
循环和if-else
语句来控制程序的流程。 - 数组和字符串操作:在代码中对数组(例如
ArrayList
)和字符串进行了操作,如字符串拼接、字符串比较等。 - 方法的定义和调用:定义了具有特定功能的
method
,如typeChange
,gearChange
,setGearCan
等,并通过对象调用这些方法。 - 排序:使用
Collections.sort
对设备列表进行排序。 - 封装:每个类封装了特定的属性和行为,遵循了封装的原则。
- 构造方法:定义了带参数和不带参数的构造方法来初始化对象的状态。
- 访问控制:使用了
public
,protected
, 和默认(包)访问修饰符来控制成员变量和方法的可见性。
二.设计与分析:
对于第七次大作业,加入了并联串并联和串联套串联的情况,并且加入了相对比较麻烦的互斥开关。
第七次大作业Source Monitor分析
我对第七次大作业的家居强电电路模拟程序-4 的代码进行了SourceMontor分析生成报表内容。
第八次大作业,本次大作业添加二极管类等。难度对于我来说较高,到最后还是没能完成。
第八次大作业Source Monitor分析
我对第五次大作业的答题判题顺序-4 的代码进行了SourceMontor分析生成报表内容。
三.踩坑心得
1.第七次大作业踩坑心得:
第七次大作业的问题主要是在我的大作业构思上出了问题,互斥开关的继承和如何使用,我没有弄清楚,我没有很好的把互斥开关在物理上的概念与模型转接为思路用在代码上,导致这一方面费了很长时间
class HSwitch extends AllDevice {
KSwitch Switch2 = new KSwitch(0, 0);
KSwitch Switch3 = new KSwitch(0, 0);
public HSwitch(int classCode, int deviceCode) {
super();
setClassCode(classCode);
setDeviceCode(deviceCode);
Switch2.typeChange();
Switch2.R = 5;
Switch3.R = 10;
}
public void typeChange() {
if (Switch2.type == 1) {
Switch3.type = 1;
Switch2.type = 0;
} else {
Switch3.type = 0;
Switch2.type = 1;
}
}
// ... 其他代码
}
还有就是在设计串联套串联的点上没有构思清楚,直接把串联当成一个电器不就行了。
2.第八次大作业踩坑心得:
第八次大作业加入的东西就多,包括什么二极管,引脚电压,还有什么过载情况。对于我来说,引脚电压的输出,引脚电压的获取是相对于比较麻烦的,还有二极管的创建。这些我都没有处理好,这就是我的问题,直到我写这篇blog都没有完成这些问题,但我还会继续钻研的。
四.改进建议
- 代码结构优化:
模块化:将功能相近的代码块划分为模块,每个模块负责一项具体的任务。
面向对象:确保你的类有明确的职责,并且遵循单一职责原则。使用继承和多态来减少代码重复。
设计模式:根据问题的性质,考虑使用适合的设计模式,如工厂模式、策略模式等,来简化复杂的逻辑。 - 异常处理:
预见异常:思考程序可能遇到的问题,比如输入错误、文件不存在等,并为这些情况编写异常处理代码。
用户友好:当异常发生时,提供清晰、友好的错误信息,帮助用户理解问题所在。 - 性能优化:
分析瓶颈:使用分析工具找出程序的性能瓶颈,比如循环、递归调用等。
优化算法:选择更高效的算法和数据结构,减少不必要的计算和内存使用。 - 功能扩展:
预留接口:在设计阶段就考虑到将来可能添加的功能,预留扩展接口。
迭代开发:采用迭代的方式开发,每次迭代都评估和实现新的功能或改进。 - 前期规划:
需求分析:在编写代码前,先明确需求,理解问题的本质。
设计图:画出类图和流程图,帮助你理清类之间的关系和程序的执行流程。
逻辑模拟:在实际编码之前,模拟逻辑流程,确保调用关系清晰。 - 代码复用:
检查代码中是否有重复的逻辑,将这些逻辑抽象成方法或类,提高代码复用。 - 代码审查:
进行代码审查,可以是自己回顾,也可以是同事间互审,以发现潜在的问题和改进点。
编写高质量的代码是一个持续的过程,不断学习和实践是关键。也希望我能不畏惧艰难,自己慢慢来,总能完成的,只要会利用时间。
五.总结
收获:
- 面向对象编程的深入理解:通过实现
AllDevice
类及其子类,您展示了对面向对象原则的深刻理解,包括封装、继承和多态的使用。
2.电路模拟的实践应用:在模拟电路系统时,您加深了对电路理论的理解,包括串联和并联电路的特性,以及它们在实际编程中的应用。 - 数据结构的有效使用:通过使用
ArrayList
来管理设备和连接,您展示了对Java集合框架的熟悉,以及如何根据需要选择合适的数据结构。 - 正则表达式的掌握:在解析用户输入时,您有效地使用了正则表达式,这表明您掌握了字符串匹配和模式识别的技能。
- 代码组织能力的提升:通过将功能划分为不同的方法和类,您的代码更加模块化,这有助于提高代码的可读性和可维护性。
- 问题解决能力的增强:在开发过程中,您遇到了各种问题并找到了解决方案,这有助于提高您的问题解决能力。
- 自主学习的体现:在完成作业的过程中,您可能需要学习新的编程概念或技术,这体现了您的自主学习能力。
不足: - 代码重用性待提高:代码中存在重复逻辑,表明可以通过抽象和封装来进一步提高代码的重用性。
- 异常处理机制不完善:缺少全面的异常处理机制,这可能导致程序在遇到错误时无法优雅地处理。
- 性能优化空间:随着系统规模的扩大,代码的性能可能需要进一步优化,以处理更大规模的数据集。
- 文档和注释缺失:代码中缺少必要的文档和注释,这可能影响其他开发者或您自己未来的理解和维护。
- 设计模式应用不足:在某些情况下,可以更有效地使用设计模式来提高代码的灵活性和可扩展性。
6.前期规划不足:在编码前,可能需要更多的时间来进行前期规划,包括需求分析、设计图的绘制和逻辑模拟,以减少后期的重构和修改。
通过大作业,我不仅获得了宝贵的编程经验,也发现了一些需要改进的地方。将这些经验应用到未来的代码编写中,将有助于编写出更加高效、健壮的代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~