总结blog

一、前言

本学期的Java面向对象编程课程即将结束,回顾整个学习历程,收获颇丰。课程通过PTA作业、实验项目、线上视频教学和线下课堂讲解相结合的方式,系统性地教授了面向对象编程的核心概念和技术。整体来看,课程内容安排合理,工作量适中,难度呈梯度上升。

PTA作业作为基础训练环节,主要考察对语法和基本概念的掌握,题量适中但覆盖全面,特别是集合框架和异常处理的题目设计得很有针对性。实验项目从简单的类设计到复杂的JavaFX应用开发,难度逐步提升,最后的订单管理系统综合项目将所学知识完美串联。线上课程提供了灵活的学习方式,视频讲解清晰,配套资料完善;线下课程通过案例分析和互动讨论,加深了对面向对象思想的理解。

二、面向对象技术总结

1️、封装:数据的“护城河”

起初学习封装,感觉只是“把属性设为private,再加getter/setter”,像是在完成模板化任务。但随着PTA中的练习,以及实验中将大象放进冰箱的实现,我才真正意识到封装的价值。
我学会了不仅仅是"藏住数据",更重要的是“通过受控的接口访问数据”,比如限制余额不能为负、学号不能重复等。这些业务规则,通过封装就能很好地约束和维护数据的一致性与安全性。私有属性 + 公共方法的模式看似简单,实则是构建稳定系统的基石。

2️、继承与多态:代码复用与灵活性并存

在实验二的图形类层次设计中,我第一次真正体会到了继承带来的“代码复用”。Shape作为父类,Circle、Rectangle等子类复用了draw、getArea等方法的接口结构,极大简化了开发和维护。
而多态性,则在航空货运管理中展现得淋漓尽致调用的是它们各自的重写方法。这种“写一次,跑多种”的特性,让系统具有了真正的扩展性。
不过我也意识到,自己在处理更复杂继承关系时(如多层继承、接口混用)仍然容易混淆,比如“super”和“this”在不同上下文中的含义、方法覆盖与隐藏的边界等,仍需通过项目实践进一步掌握。

3️、抽象类与接口:解耦设计的关键

“面向接口编程”这一理念,直到实验五的日志系统开发中我才真正有了体会。Logger接口统一了不同日志输出方式(写文件、控制台输出、发送网络日志),大大提升了系统的可扩展性和灵活度。只要实现接口,就能“无缝替换”日志输出逻辑,完全不动调用方代码,真正做到了“开闭原则”。
而抽象类,则更多用在行为通用但具体实现各异的地方。比如在一个游戏角色系统中,可以用抽象类定义角色的公共行为(如移动、攻击),而各子类(战士、法师)重写了技能逻辑。抽象类就像骨架,接口则像契约,两者结合使用真的很香!

4️、集合框架:灵活处理复杂数据结构的利器

Java的集合框架,是我感觉最实用也最复杂的部分之一。
在多个PTA任务中,我通过实践掌握了:
ArrayList vs LinkedList 的场景选择(插入多选LinkedList,随机访问选ArrayList)
Collections 工具类的各种排序、同步、反转等操作
迭代器的使用方式以及如何避免ConcurrentModificationException
不过,在遇到更复杂的数据结构嵌套(如 Map<String, List>)时,我还是容易“写炸”,比如遍历嵌套结构的嵌套for循环设计不优雅、操作时容易出错,接下来我打算通过构建更复杂的小项目练练手,比如实现一个学生选课系统或博客分类系统。

5️、异常处理:让程序更健壮的“防火墙”

异常机制是Java中“被忽略但极其重要”的一块。在文件读写实验中,我使用 try-with-resources 写法简化了资源释放,体验到了“语法糖”的威力。同时,自定义异常(如 InsufficientBalanceException)让我更清晰地表达了业务错误,而不是依赖 RuntimeException 这种大而泛的方式。
但我也意识到目前对“异常链(Exception Chaining)”的理解还很浅薄,对于全局异常处理(尤其是JavaFX项目中的统一异常提示)也还没涉及,后续我计划在做较大型系统(如订单管理、在线购物平台)时加入这方面的设计。

6️、JavaFX:用代码“画出”界面的乐趣

JavaFX是本课程最具“成就感”的部分。过去只写控制台程序的我,第一次感受到“做软件”的乐趣:能点能看,能输入能修改!
我掌握了以下几个关键点:
使用 FXML+Controller 分离设计,代码清晰可维护
利用 TableView 展示数据,并通过绑定+监听实现动态CRUD
理解并应用 事件机制(如ActionEvent、ChangeListener等)
掌握 布局管理器(尤其是GridPane、VBox、BorderPane)设计响应式界面
不过面对 TreeView、TabPane、自定义组件等更复杂控件时仍显吃力,对动画、切换场景 的处理也不够熟练。未来我希望能做一个更完整的项目(比如“图书借阅系统”或“外卖点餐系统”),进一步挖掘JavaFX的潜力。

三、采坑心得

setter方法里要加判断条件,别让非法值进去。
可以把构造方法设计得更严一点,比如学生一创建就必须有姓名和学号。
多态 = 父类引用调用子类重写方法,但前提是方法要用@Override标注清楚。
注意构造顺序:子类构造前会先执行父类构造。
接口可以多实现,抽象类只能继承一个。
接口里加default方法可以少写重复代码。
嵌套结构建议先写好类型。
多用调试或打印,看看数据结构长什么样。

四、改进建议及总结

1、项目驱动学习,别光靠PTA
PTA练的是语法和小功能,想提升整体编程能力,可以尝试做一个小项目,比如“学生选课系统”、“Todo任务本”或“小游戏”。哪怕功能少,但能帮你理解类的协作、异常处理、界面交互等综合知识。
2、用调试器代替打印
以前我一出错就printf,现在逐渐习惯用IDE的调试器(比如IDEA里的断点+变量观察),能节省很多排查时间。
3、多写注释,多写注释,多写注释
尤其是类和方法上方的注释,不光帮别人看懂,也帮你半年后自己回头不懵圈。
4、阅读优秀代码
可以试着读老师/助教的参考代码,也可以上GitHub看一些开源Java项目的结构,模仿别人是最快的进步方式。
5、复盘bug和报错日志
不只是“改好了就算”,可以记下来当时为什么错、怎么解决的,后期复习特别有用(还可以整理成博客,方便复盘)。

本门课程系统性地构建了我的面向对象编程知识体系。从基础的类与对象,到进阶的继承多态,再到应用级的GUI开发,形成了完整的知识链条。最大的收获不仅是语法和技术,更重要的是面向对象设计思想的培养:
抽象思维能力提升:能够从问题域中识别对象、定义关系
设计模式初窥门径:在实践中自然应用了观察者、工厂等模式
模块化设计意识增强:通过高内聚低耦合的设计提高代码质量
工程化思维形成:开始关注代码可维护性、可扩展性
JavaFX的学习经历尤为珍贵,它让我体会到将抽象逻辑转化为直观界面的成就感。从最初的简单表单到最终的订单管理系统,见证了技术能力的实质性飞跃。
未来计划:
继续完善订单管理系统,增加网络通信功能
学习JavaFX高级特性,如3D图形、富文本编辑
探索Spring框架,将桌面应用扩展为Web应用
深入学习设计模式,提升架构设计能力
面向对象编程不仅是技术,更是一种思维方式。这门课程为我打开了软件开发的大门,建立的思维模式和技术基础将使我受益终身。随着项目的完成,我深刻体会到:优秀的程序=良好的设计+严谨的实现+不断的重构,这也是我今后努力的方向。

posted @ 2025-06-22 23:40  不对劲啊!!!  阅读(15)  评论(0)    收藏  举报