第三次Blog作业

第三次总结性Blog

前言:课程学习概况总览


本门课程通过多样化的教学环节构建了完整的知识体系,整体学习量适中且难度呈渐进式提升。在Blog作业中,围绕货运系统和电梯调度两大主题展开,两次题目集各包含3道迭代式题目,从基础功能实现逐步过渡到复杂业务逻辑处理,重点考查面向对象设计原则与核心技术的应用。PTA作业则以13道左右的题目形成系统性训练,从简单语法应用到面向对象设计思想的深入实践,层层递进地提升编程能力。

实验环节与线上线下课程形成良好互补:线上课程提供了灵活的知识预习与复习渠道,线下课程通过案例讲解与互动讨论深化理解;实验项目则要求将理论知识转化为实际代码,如货运系统的订单处理与电梯调度的请求管理,有效锻炼了系统设计与问题解决能力。整体而言,课程通过精巧的设计,帮助学生扎实掌握面向对象编程的核心技术。


核心知识掌握与认知


封装:数据安全与接口规范的基石

  • 掌握情况:能够熟练使用private修饰符隐藏类的内部状态,通过getter/setter方法提供统一访问接口,如货运系统中Person类对姓名、电话等属性的封装,以及电梯调度中Elevator类对当前楼层、运行方向的封装。
  • 认知提升:理解封装不仅是数据保护,更是模块间解耦的关键,通过定义清晰的接口契约,使类的内部实现与外部调用分离,提升代码可维护性。
  • 不足:在复杂业务场景中,对封装粒度的把握不够精准,如货运系统中订单与货物的关联关系处理,存在属性暴露过多的问题。

继承与多态:代码复用与行为扩展的核心

  • 掌握情况:通过货运系统中PostCustomerGetCustomer继承Person类,实现了客户信息的复用;理解多态在接口实现中的应用,如FreightCalculator接口的不同实现类。

  • 认知提升:认识到继承应遵循里氏替换原则,子类不应破坏父类的原有行为;多态通过“接口定义-实现扩展”的模式,使系统具备良好的可扩展性,如电梯调度中未来可通过继承扩展不同类型电梯。

  • 类图展示:

  • 不足:在电梯调度作业中未充分应用继承与多态,仍通过if-else处理不同请求类型,导致代码复杂度较高。

抽象类与接口:规范定义与契约设计

  • 掌握情况:能够定义抽象类(如货运系统中的Person类)封装通用属性与方法,通过接口(如FreightCalculator)定义行为契约,实现“面向接口编程”。
  • 认知提升:抽象类适用于封装具有共同实现的抽象概念,接口则用于定义无实现的行为规范,二者结合使用可构建灵活的系统架构。
  • 不足:对接口隔离原则的应用不足,部分接口包含过多无关方法,如货运系统中运费计算接口可进一步拆分为更细分的子接口。

集合框架:数据管理与算法实现的工具

  • 掌握情况:熟练使用ArrayList存储货物列表、LinkedList实现请求队列,利用集合的动态扩容与高效操作特性优化数据处理,如电梯调度中请求队列的频繁插入与删除操作。
  • 认知提升:理解不同集合类的底层实现与适用场景,如ArrayList适合随机访问,LinkedList适合频繁修改,根据业务需求选择合适的数据结构可提升程序性能。
  • 不足:对集合框架的高级特性(如泛型限定、 Comparator接口)应用较少,未充分发挥Java集合的类型安全与排序能力。

异常处理:程序健壮性的保障

  • 掌握情况:能够使用try-catch处理显式异常,如货运系统中Scanner输入非数字时的异常捕获;理解异常处理的基本流程与日志记录的重要性。
  • 认知提升:认识到异常处理不仅是错误捕获,更应包含合理的错误恢复策略,如电梯调度中无效请求的过滤与提示。
  • 不足:在作业中以隐式异常处理为主,未系统设计异常类层次结构,对异常的分类处理与传播控制能力不足,如货运系统中未对订单创建失败等业务异常进行专门处理。

JavaFX:图形界面开发的探索

  • 掌握情况:课程中在实验5中要求对javaFx的运用实现“将动物放进冰箱”的实现,GUI作业中要求实现航空管理系统的图形化交互实现。
  • 如图所示:

  • 认知提升:认识到JavaFX作为现代Java图形界面框架,通过FXML与控制器分离的模式,可实现界面与逻辑的解耦,适合构建交互式应用。
  • 不足:缺乏实际项目经验,对JavaFX的动画效果、事件处理机制等高级功能掌握有限,需在后续学习中加强实践。

采坑心得


逻辑漏洞:业务规则理解偏差导致的错误

  • 典型案例:货运系统中计算货物总重量时,误将实际重量直接累加,未考虑体积重量与实际重量的最大值(费重)作为计费依据,导致计算结果错误。
  • 经验教训:开发前需深入分析业务需求,绘制流程图或伪代码梳理逻辑;关键计算环节应添加单元测试,如单独测试calculateChargeableWeight方法的正确性。

代码复杂度:设计不合理引发的性能问题

  • 典型案例:电梯调度中Controller.processRequests方法因大量if-else嵌套与多层逻辑调用,导致复杂度高达35,运行时出现超时错误。

  • 复杂度分析图:

  • 经验教训:遵循单一职责原则,将复杂方法拆分为功能单一的子方法,如将方向判断、请求处理、楼层计算分离;引入设计模式(如状态模式)管理对象状态转换,减少条件判断嵌套。

输入处理:边界条件考虑不足导致的异常

  • 典型案例:电梯调度中未处理乘客请求楼层超出最大/最小楼层的情况,导致程序异常;重复请求未过滤,如连续输入<3><3><3>时未去重。
  • 经验教训:输入环节添加合法性校验,如使用isValidFloor方法验证楼层范围;利用集合特性(如HashSet去重)处理重复请求,或通过正则表达式过滤无效输入。

类设计缺陷:面向对象思想应用不足的问题

  • 典型案例:货运系统中Main方法承担了输入读取、业务逻辑、报表生成等多项职责,违反单一职责原则;电梯调度中通过else-if处理不同请求类型,未利用多态优化。
  • 经验教训:设计阶段遵循“高内聚、低耦合”原则,明确类的职责边界;优先使用多态而非条件判断,如通过不同请求类的handle方法处理业务逻辑,提升代码扩展性。

改进建议及总结


对课程设计的改进建议

  • 非功能需求强化:在作业评分中增加代码规范(命名规则、注释要求)、性能优化(算法复杂度控制)和异常处理的考核项,促使学生关注代码的可维护性与健壮性。
  • 实践资源丰富:提供分层参考代码(基础版与优化版),对比不同设计的优缺点(如枚举vselse-if判断);增加代码评审环节,通过小组讨论分析优秀代码的设计思路。
  • 案例场景拓展:除货运系统与电梯调度外,引入更多实际场景(如图书管理系统、电商平台)的作业项目,让学生在不同领域中应用面向对象技术,培养通用设计能力。

个人学习总结与展望


通过本门课程的学习,我系统掌握了Java面向对象编程的核心概念与设计原则,从“功能实现”逐步转向“可扩展系统设计”。在货运系统中体会到继承与接口的代码复用优势,在电梯调度中理解了数据结构与算法对程序性能的影响。尽管在异常处理、设计模式应用等方面仍有不足,但通过持续的代码重构与问题复盘,逐渐形成了“分析需求-设计架构-实现代码-优化重构”的开发思维。

未来将重点提升以下能力:

  • 设计模式深度应用:学习装饰器模式扩展货物附加服务,使用观察者模式实现订单状态通知,通过模板方法模式优化电梯调度流程。
  • 性能优化与并发编程:研究集合框架的底层实现,掌握复杂度分析方法;学习多线程编程,实现电梯调度的并发请求处理。
  • JavaFX实战开发:通过实际项目练习界面布局、事件处理与数据绑定,构建具有交互性的图形界面应用。

感谢课程提供的实践平台与教师的悉心指导,面向对象编程不仅是一门技术,更是一种解决复杂问题的思维方式,未来我将继续在实践中深化理解,提升软件开发的工程能力。

posted @ 2025-06-18 19:35  大头酱军  阅读(15)  评论(0)    收藏  举报