2024面向对象程序设计课程总结
Java 课程学习总结性 Blog
(1)前言
本学期的 Java 课程学习涵盖了丰富多样的学习任务,包括Blog 作业、PTA 作业、实验项目,以及线上线下课程。从工作量来看,Blog作业对阶段性学习帮助很大,可以阶段性总结之前学习的知识点;还要PTA作业对个人代码人力的提升较大;实验项目对个人在项目的全面实现方面有很大提升。在难度方面,PTA作业难度有的,但是这也是反应个人代码能力,但是结合Blog作业,这些难点部分,个人也能更好理解。这些学习环节相互配合,让我在 Java 编程知识与实践能力上都有了不同程度的收获,也遇到了不少挑战。
(2)面向对象技术知识点总结
封装
在PTA 作业和实验中,多次涉及封装的实践。通过将类的属性私有化,并提供公共的访问方法,我逐渐理解了封装隐藏内部实现细节、提高数据安全性的重要性。在实际操作中,我也会经常遇到无法访问的问题,这是急需要通过getter和setter方法控制访问。不过,在处理动物系统中动物类这种复杂类结构时,由于属性众多且关联关系复杂,我对属性和方法的封装设计不够简洁高效,导致部分代码冗余,这是我在封装方面需要继续提升的地方。
继承
继承是实现代码复用的重要机制,在课程练习中,我通过创建 “雨刮器” 父类和 “横杆”“雨刮”子类的继承体系,熟练掌握了子类继承父类属性和方法的方式。在实验的动物系统项目里,我利用继承关系,让 “大象”“狮子”“老虎” 子类继承 “动物” 父类的基本属性和攻击方法,并根据自身特点重写部分方法。
多态
多态的特性让程序更加灵活和可扩展,在PTA 作业中,通过定义 “形状” 接口,让 “圆形”“矩形” 类实现该接口并重写计算面积方法,实现了接口多态。在实验的绘图程序里,基于继承的多态也得到了充分应用,不同形状对象可以统一使用draw方法绘制。我能够根据对象的实际类型,正确调用相应方法实现不同功能。然而,在复杂的游戏角色系统中,当存在多个继承层次和接口实现时,多态的动态绑定机制让我在调试代码时难以快速定位方法调用的具体实现,导致排错效率较低。
抽象类与接口
在学习过程中,我掌握了抽象类定义抽象方法约束子类行为,以及接口实现多继承特性的方式。在PTA 作业的支付系统设计中,我使用抽象类定义了 “支付方式” 的基本框架,让 “微信支付”“支付宝支付” 子类实现具体支付逻辑;同时,通过接口定义了 “退款” 功能,使不同支付类都能具备该能力。但在实际场景中,有时难以准确判断何时该使用抽象类,何时该使用接口。比如在设计一个具有部分通用功能和部分特定功能的类时,选择抽象类可能导致代码不够灵活,选择接口又无法实现代码复用,这是我需要进一步思考和总结的地方。
集合框架
集合框架的学习极大地提高了数据处理效率。通过PTA 作业和实验,我熟练掌握了ArrayList用于动态存储数据、HashSet实现元素去重、HashMap进行键值对存储等常用集合的使用方法。在学生成绩管理系统实验中,我使用ArrayList存储学生信息,通过循环遍历实现成绩查询和统计。不过,在处理海量数据时,没有充分考虑集合的性能特点,例如在频繁插入和删除操作场景下使用了ArrayList,导致程序运行效率低下,对不同集合适用场景的把握还需加强。
异常
异常处理机制保证了程序的健壮性。在课程练习中,我学会了使用try-catch语句捕获NullPointerException、ArrayIndexOutOfBoundsException等常见异常,通过throw关键字手动抛出异常,以及自定义异常类处理特定业务逻辑错误。在文件读取的作业中,我通过捕获FileNotFoundException来提示用户文件不存在。但在处理复杂业务逻辑时,异常嵌套层次过多,导致代码可读性变差,而且在异常传播过程中,有时难以准确判断异常发生的源头,影响问题排查。
JavaFX组件
JavaFX 用于构建图形用户界面,在图书管理系统的实验项目中,我使用 JavaFX 创建了登录界面、图书展示界面等。通过实践,我掌握了布局管理器(如BorderPane、VBox)的使用,以及按钮、文本框等基本组件的事件处理。然而,在实现图书封面轮播的动画效果,以及设计美观的用户交互界面时,由于对 JavaFX 的动画类和 CSS 样式整合不够熟练,最终呈现的效果与预期存在较大差距。
(3)采坑心得
在整门课程学习过程中,我走过不少弯路。例如,在编写一个复杂的迷宫求解算法的PTA 作业时,由于对递归算法理解不透彻,逻辑思路混乱,导致代码陷入死循环,反复修改调试了两天仍无法通过测试。后来我通过查阅大量资料,绘制递归调用流程图,逐步理清递归的终止条件和执行过程,最终成功解决问题。这让我明白,遇到复杂算法问题,不能急于编写代码,要先深入理解算法原理,规划好逻辑再动手。
还有在图书管理系统实验过程中,因为没有合理规划类之间的调用关系,多个类之间相互依赖,形成复杂的网状结构,造成程序出现空指针异常却难以定位原因。通过这次教训,我学会了在项目开始前,使用 UML 类图设计类结构,明确类的职责和调用关系,避免代码的混乱。
(4)改进建议及总结
通过本学期的 Java 课程学习,我系统地掌握了面向对象编程的核心技术,并将其应用到多个实践项目中,编程思维和动手能力都得到了显著提升。同时,课程也存在一些可以优化的地方。在教师教学方面,希望能增加更多实际项目案例的讲解,例如电商系统、在线教育平台等,让我们更好地理解技术在实际场景中的应用;加强课堂互动,多组织一些小组讨论,促进同学之间的交流学习。对于课程内容,建议补充微服务架构中 Java 的应用等前沿技术知识,激发我们的学习兴趣;调整知识点讲解顺序,将 JavaFX 的内容提前,避免在学期末因时间紧张导致学习不深入。在作业和实验安排上,期望增加一些开放性作业,如让我们自主设计一个小型系统;提供更详细的实验指导文档,在关键步骤给予更多提示。在课上及课下组织方式上,建议增加每周一次的线上答疑直播,及时解决我们学习过程中的疑惑;建立课程学习小组,鼓励同学之间互相帮助、共同进步。相信通过适当改进,这门课程能帮助更多同学更好地掌握 Java 编程技术,为未来的学习和工作打下坚实基础。

浙公网安备 33010602011771号