对学期的总结
前言
作业与实验
Blog 作业
工作量中等,主要就是梳理知识点、总结实践心得。难就难在得把零散的内容系统地串起来,得结合自己的理解把逻辑整明白,对搭建知识框架还挺有帮助的。
PTA 作业
大部分题目难度还行,分阶段递增的。但像电梯调度的 3 个迭代(多线程协调、负载均衡)、航空货运管理的 3 个迭代(容器类的使用、接口),涉及复杂的业务逻辑和算法设计,调试起来挺费时间的,代码得写得特别稳,容不得太多 bug。
实验环节
一开始是继承多态这种类结构设计,后来到 JavaFX 界面开发,难度是慢慢往上加的。尤其是后面的实验,得把界面交互、数据存储和业务逻辑揉到一起,布局怎么优化、事件怎么处理,特别考验工程思维,不再是单纯写点逻辑代码那么简单。
课程学习体验
线上 + 线下课程
线上课能随时回看,适合零碎时间补知识点;线下课老师现场讲案例、带着互动,难懂的地方能及时搞明白,两者搭配着学,基础打得挺牢的。课堂上的代码演示和练习难度适中,理论和实践结合得不错。
小结
这门课从基础到复杂系统开发,任务是一步步进阶的。难的地方主要在多模块配合和真实场景的功能实现,比如电梯调度的并发控制。但啃下这些硬骨头后,才真正理解了从分析需求到设计架构再到写代码的完整流程。实验从纯逻辑到界面开发的转变,也让我对综合技术的应用更上手了,算是为以后打基础了吧。我会关键讲一下两次关键的PTA作业和实验。
总结
关于电梯调度的PTA作业
知识点
(1)面向对象设计(OOP):单一职责原则(SRP),类设计,类之间的关系。
(2)电梯调度算法:优先处理同方向请求。处理顺路请求。状态管理:电梯的运行状态(移动、停止、开门、关门)。
(3)输入输出处理:键盘输入模拟乘客请求。处理无效请求(如无效楼层、重复请求)。输出电梯运行过程。
(4)数据结构:使用队列(LinkedList)管理请求。
(5)异常处理:忽略无效输入(如超出楼层数范围的请求)。过滤重复请求。
总结
三次电梯调度程序设计中,我经历了从基础实现到复杂优化的演进:
首次设计聚焦基础框架,电梯类承担状态管理、请求队列处理及输入输出功能,初步搭建起程序骨架,实现了最基本的调度逻辑。
第二次迭代按单一职责原则拆分电梯类,引入控制类专门管理调度逻辑,让类间关系更清晰,同时增强输入异常处理,程序可维护性显著提升。
第三次迭代因引入乘客类,需重构类交互逻辑以适应输入格式变化,整合外部与内部请求逻辑时,却因电梯运行方向和停止条件的判断逻辑采用大量 if-else 嵌套,导致代码复杂度上升、可读性下降。这让我意识到,后续需探索更高效的算法设计,避免冗余逻辑,从结构上提升代码质量。
关于航空货运管理系统的PTA作业
知识点
面向对象设计 :运用类封装货物、订单、航班等信息,明确各对象职责,如 Cargo 类管理货物详情,Order 类处理订单信息,Flight 类包含航班数据。
数据结构 :借助集合存储多件货物信息及订单列表,方便数据管理和操作。
输入输出处理 :从键盘输入订单信息,输出订单报表与货物明细报表,需严格把控输入数据格式验证及异常处理。
总结
通过两次题目集实践,我在多方面能力得到提升:
面向对象设计:深入理解单一职责原则,学会拆分复杂系统为功能专注的类。如题目集 8 中,Cargo 类管理货物、Order 类处理订单计费、Flight 类存储航班数据,既符合设计原则,也提升了代码复用与可维护性。
数据结构应用:根据业务需求选用集合类高效管理数据,例如用列表存储货物信息,方便批量处理与报表展示,优化了数据操作逻辑。
输入输出与异常处理:强化输入验证机制,确保数据合法性;输出时注重信息完整与可读性。同时,针对航班载重不足、输入格式错误等异常,增加捕获处理逻辑,提升程序健壮性。
设计模式实践:题目集 9 中引入策略模式处理计费逻辑,减少条件嵌套,使代码更灵活易扩展,切实体会到设计模式在降低复杂度、提升可维护性上的优势。
关于实验
知识点
涵盖 Java 基础语法、面向对象核心(类与对象、继承多态、抽象类接口)、JavaFX 图形界面开发;涉及访问修饰符、构造方法、方法重载、super 关键字、Comparable/Comparator 接口;包含集合框架(ArrayList)、Collections 排序、事件驱动编程、lambda 表达式;还有对象组合、状态管理、输入输出处理及简单算法(冒泡、选择、插入、归并排序)
总结
五次实验能力进阶总结
实验一:主要学Java环境搭建和基础语法,写单类/多类程序调分数计算器,学会配环境、命令行编译和IDE调试,第一次自己找语法和逻辑错误,算是入了编程的门。
实验二:搞类和对象设计,模拟大象进冰箱,定义了大象和冰箱类,用了冒泡、选择、插入排序,试了对象组合和方法重载。但数组扩容没弄好,有时候操作数据会出问题,后来发现用集合类更靠谱。
实验三:用继承和多态重写代码,派生出动物和电器子类,加了攻击力判断让动物能互相攻击,用super调父类的东西。不过攻击判断和排序逻辑缠在一起,代码看着有点乱,得拆分成小模块才好维护。
实验四:用抽象类和接口优化结构,让类实现Comparable接口,用Collections.sort和比较器做排序,通过接口把攻击逻辑分开了。但记录动物体重和吃入关系时,引用出了循环问题,后来知道得注意对象引用怎么管理。
实验五:试着做JavaFX界面,把之前的逻辑做成动物进电器的动画,用鼠标点击和lambda处理交互,用Shape画图形。不过界面布局和动画帧率有点卡,后面得研究布局管理器怎么用,再优化下线程调度。
整体的总结
这学期在 PTA 作业和实验的磨练下,我觉得自己的 Java 水平从基础语法提升到了能开发小型界面应用的程度,对语言的核心概念也有了更深入的理解。在封装方面,电梯调度和航空货运的迭代让我深刻体会到了单一职责原则的重要性。一开始把所有逻辑都塞到一个类里,代码难以维护,后来通过拆分控制类和电梯类,把货物、订单、航班分别封装成类,代码结构清晰了不少。在继承与多态方面,动物和电器的实验让我有了更深的理解。熟练掌握 extends 和 super 的用法后,关键突破在于运用 Attackable 接口抽象攻击行为,让不同动物都能实现 attack() 方法。这让我认识到接口定义行为的灵活性远超传统继承。抽象类与接口的深入理解始于实验四,学会了用 Comparable 接口配合 Collections.sort() 实现排序,比手动写排序逻辑方便多了,接口在解耦设计中的关键作用也在航空货运的策略模式计费规则中得到了体现。在集合框架方面,实验二中数组扩容失败让我吃尽苦头,后来转向使用 ArrayList,PTA 作业中 List等集合成了数据管理的核心工具,Collections 工具类也提高了操作效率。异常处理方面,前期因为输入校验不严、数组越界等问题吃了不少亏。后期在电梯调度和航空货运中运用 try-catch 进行异常处理编程,程序稳定性有了明显提升,但异常处理流程的优雅性和细致程度还有待提高。JavaFX 学习只是初窥门径,实验五实现了动物进冰箱逻辑的图形化展示,不过界面布局、动画帧率优化和复杂事件处理还是暴露出不少短板,看来布局管理器和线程调度技巧还需要深入学习。
总体来说,这学期最大的收获就是培养了用面向对象思维设计程序结构的能力,认识到了集合管理数据、接口划分模块的重要性,也明确了异常处理与界面优化在程序开发中的关键地位。展望未来,JavaFX、精细化异常处理机制以及算法设计优化(比如电梯调度逻辑简化)将是重点攻克的方向,我会保持学习热情,持续提升编程技能。
踩坑心得
在学习过程中,我踩过不少坑。前期实验三操作数组时,因扩容问题致数据出错,后改用集合类解决,意识到灵活数据结构的重要性。实验四中攻击判断与排序逻辑混杂,经拆分模块才改善维护性,就明白代码分层的必要。实验五做 JavaFX 界面,界面布局和动画卡顿,知道了布局管理器和线程调度之重要。做 PTA 作业时,电梯调度第三次迭代,因 if - else 嵌套过多,代码复杂且可读性差,SourceMonitor图复杂度高,意识到需探索更高效算法设计。航空货运管理系统中,初期没有严格把控输入格式,导致异常频发,后来加强输入验证和异常处理,程序健壮性才提升。这些经历让我明白,编程要注重代码结构、提前优化,异常处理也不可或缺,后续要强化这些方面,才能避免重复踩坑,提升编程能力。
改进及建议
改进建议:教师可多引入企业实际案例,让学生更好将知识与实践结合;作业和实验可增加团队协作项目,提升沟通与协同能力;课上多组织小组讨论,促进思维碰撞与知识深化;实验环节可加强对界面布局和动画优化的指导,帮助学生更好掌握细节技巧。