第三次blog作业

前言
回顾整门面向对象程序设计课程的学习历程,从 Blog 作业到 PTA 编程题,从实验项目到线上线下课程学习,整个学习过程充实且富有挑战性。课程内容围绕 Java 语言和面向对象编程思想展开,通过不同形式的作业和实践环节,逐步深入理解封装、继承、多态等核心概念。记得刚开始学习的时候,总记得老师反复强调面向对象面向对象,甚至还举了例子,打了比方,可我始终不太理解面向对象是什么意思,而且最开始也没有养成面向对象的习惯,很多题目也是先从面向过程的思维去写的,但随着课程的深入,题目越写越多,我慢慢熟悉了这种面向对象的思维。

经过这么多期的pta以及blog作业,我最基本的编程能力也在慢慢提升,可面对棘手的迭代压轴我还是束手无策,但好的地方在于,从初次面对电梯题目的毫无思路,到后面航空管理我就不再无法动手,而是一步一步完成框架,虽然还是无法凭借个人能力完成,但也询问了同学修改提醒帮助,最后也是勉勉强强能完成。虽然航空管理明显比电梯要简单,但也算是一种进步

至于课程与实验,我认为也是循序渐进的,把控恰到好处,没有特别赶到跟不上。也没有特别缓慢到使我游刃有余,不管是课程还是实验,所涵盖的知识点都很全面

面向对象技术总结
一)封装、继承与多态
封装:通过 PTA 中类的设计题目(如电梯类、英雄伤害计算类),深刻理解了封装的本质 —— 将数据和操作数据的方法封装在类中,通过访问修饰符(private、public)控制外部访问。例如在电梯类设计中,将楼层、状态等属性设为私有,通过公共方法实现对属性的操作,避免了外部对数据的直接修改,保证了数据的一致性。
继承:在航空货运管理系统的客户类设计中,通过 Individual(个人客户)和 Corporate(企业客户)继承基类 Customer,实现了代码复用。继承不仅减少了重复代码,还通过子类重写父类方法(如计算运费的方法)体现了多态性。但在处理多层继承关系时,曾出现过构造方法调用顺序混乱的问题,通过调试和查阅资料才明确了父类构造方法的隐式调用规则。
多态:在王者荣耀伤害计算的题目中,通过抽象类 Damage 和具体子类 PhysicalDamage、TrueDamage 的设计,实现了 “同一操作作用于不同对象产生不同结果” 的多态特性。例如,同样的攻击值,物理伤害会根据抗性计算,而真实伤害则直接扣血,通过父类引用指向子类对象的方式,使代码更具扩展性。
(二)抽象类与接口
抽象类:在电梯调度系统的迭代设计中,使用抽象类定义电梯的基本行为(如移动、开门),子类实现具体逻辑。抽象类强制子类必须实现关键方法,保证了系统设计的规范性,但也需要注意抽象类与具体类的职责划分,避免抽象层次不合理。
接口:在团队英雄管理的题目中,通过接口定义排序规则(如 compareTo 方法),使英雄类实现接口后可直接使用集合的排序功能。接口的使用让代码解耦,例如更换排序规则时只需修改接口实现,而不影响其他部分逻辑。
(三)集合框架与异常处理
集合框架:PTA 中多次使用 List、Map 等集合类管理数据(如电梯的请求队列、货物信息存储)。例如,用 TreeMap 存储电梯外部请求,利用其有序特性简化同方向请求的处理;用 ArrayList 存储英雄对象,便于后续排序操作。但在处理复杂集合嵌套(如 Map<Integer, List>)时,曾因泛型使用不熟练导致类型转换异常,通过明确泛型类型和使用迭代器遍历解决了问题。
异常处理:在航空货运系统中,对无效输入(如超出范围的货物重量)进行异常捕获和处理,通过 try-catch 块避免程序崩溃。但初期常忽略异常的具体类型,直接捕获 Exception,后来逐渐学会根据业务场景捕获特定异常(如 NumberFormatException),使错误处理更精准。
四)JavaFX 与技术短板
JavaFX:课程中涉及 JavaFX 的部分是采取翻转课堂形式讲解,我听得也是一知半解,仅在实验中尝试过简单界面设计,对布局管理、事件监听等掌握不够深入,后续需要通过额外练习强化。

踩坑心得

整门课程的学习历程中,踩坑经历贯穿始终,这些失误并非局限于某道题目的具体错误,而是折射出从面向过程到面向对象思维转型的共性障碍。初期总习惯性用C语言的线性逻辑编写Java代码,将所有功能堆砌在一个类中,直到代码因耦合度过高频繁报错,才意识到"类职责单一"的重要性——这种思维惯性的转变,几乎是所有初学者都要跨越的第一道坎。

在处理复杂系统设计时,常因忽视"封装边界"导致逻辑混乱。例如初期设计电梯类时,将请求队列的管理逻辑直接写入电梯移动方法中,当需求变更需要新增请求类型时,不得不反复修改核心移动逻辑,暴露出接口设计不清晰的问题。这类教训让我逐渐明白,面向对象的本质在于"对象间通过接口协作",而非将所有操作捆绑在单一实体中。

输入输出处理的细节失误则是另一个高频陷阱。从PTA题目中因忽略换行符导致的输入错位,到输出格式中浮点精度控制不当的扣分,这些看似琐碎的问题背后,实则是工程思维缺失的体现。直到建立"输入验证-格式模板-输出比对"的标准化流程后,这类低级错误才显著减少。

最深刻的认知转变发生在理解"多态"的过程中。起初误以为多态只是"方法重写"的语法技巧,直到在王者荣耀伤害计算模块中,通过父类引用动态调用子类实现,真正体会到"同一消息不同行为"如何让系统具备可扩展性——这种从"语法认知"到"架构价值"的跨越,伴随着无数次因类型转换错误导致的崩溃调试,最终才内化为设计思维的一部分。

这些踩坑经历共同指向一个核心启示:面向对象编程的难点不仅在于语法规则,更在于建立"对象建模-职责划分-接口抽象"的系统思维。每一次因设计缺陷导致的代码重构,都是对"封装、继承、多态"原则的重新理解,而这些从错误中提炼的经验,远比顺利完成的程序更具成长价值。

(一)设计思维的转变
初期编写代码时,习惯面向过程的思维,将所有逻辑堆在一个类中(如第一版电梯程序),导致代码耦合度高、难以维护。在 PTA 迭代题目(如电梯类的多轮重构)中,逐渐理解了单一职责原则,学会将功能拆分为独立的类(如电梯类、请求队列类、控制类),通过接口交互,使代码结构更清晰。例如,在航空货运系统中,将客户、货物、航班、订单分别设计为独立类,通过关联关系协作,避免了 “大而全” 的类设计。
(二)调试与测试的重要性
在处理电梯调度的同方向请求优先逻辑时,曾因未正确维护请求队列的顺序,导致电梯运行路径与预期不符。通过打印每一步的楼层、方向和队列状态,逐步定位到是队列添加顺序错误,而非算法逻辑问题。这让我意识到,复杂逻辑的调试不能仅靠头脑推导,需要结合日志输出和单步跟踪,及时验证中间结果。
(三)输入输出处理的细节
多次在 PTA 题目中因输入格式处理不当扣分(如忽略空格、换行符的影响)。例如,在读取多行输入时,使用 next () 方法会残留换行符,导致后续 nextLine () 读取空行。后来统一使用 Scanner 的 nextLine () 方法并配合 trim () 处理,避免了输入解析错误。此外,输出格式的严格要求(如小数位数、空格对齐)也需要通过 String.format () 精准控制,避免因格式不符导致测试用例失败

改进建议及总结
总结
这门课程的教学体系十分完善,既有线下的教学,也开放了学堂在线这个线上课程,以供我们及时的复习或者预习,线下课程的javafx部分用翻转课堂的形式教学,学生从老师的角度出发,自己讲解相应内容,既能让自己更加深刻地理解自己所讲的内容,其他内容被不同学生讲出来,更有新鲜感,同样也能留下深刻印象。

整门课程通过 “理论学习 + 编程实践 + 问题解决” 的模式,使我系统掌握了面向对象编程的核心思想和 Java 语言的关键技术。从最初对类和对象的模糊认知,到能独立设计复杂系统(如多类协作的货运管理系统),编程思维和问题分析能力得到了显著提升。尽管在 JavaFX、设计模式等方面仍有不足,但通过课程培养的自主学习能力和调试经验,为后续深入学习打下了基础。
面向对象编程不仅是一种技术,更是一种解决复杂问题的思维方式。未来需在实际项目中继续应用封装、继承、多态等特性,不断优化代码设计,提升系统的可维护性和扩展性。感谢课程中每一次作业的挑战和老师的指导,让我在编程之路上迈出了坚实的一步。

建议
可以适当增加针对性的习题讲解课程,专门为部分基础薄弱或在作业中遇到困难的学生提供系统的习题解析。讲解过程中,不仅要帮助学生弄懂习题的解题步骤,更要引导他们通过具体题目理解面向对象的思维逻辑,比如如何从对象属性、方法和类的关系等角度分析问题。
这种讲题形式可以灵活调整,既可以由老师进行专业讲解,也可以鼓励优秀学生分享解题思路。因为老师往往从知识体系和教学逻辑出发,而学生更擅长从实际解题困惑和学习视角切入,两者结合能从多角度剖析习题本质。通过让成绩优异的学生参与讲解,还能在班级中形成互助学习的氛围,带动整体学习积极性的提升。

或是采用学习任务小组的动态组队机制,鼓励学生根据学习节奏与知识短板自由组队,亦或由教师依据过往作业完成情况、课堂互动表现等维度进行合理分组,将编程基础扎实、逻辑思维清晰的学生与亟待提升的同学编入同一小组。通过建立组内代码评审制度、定期开展技术难点研讨会等形式,让成绩优异的学生以“小讲师”身份分享电梯调度算法优化、航空货运系统类图设计等实战经验,同时借助小组作业的协作开发模式,在需求分析、代码编写、联调测试等环节中,使学习氛围浓厚的小组形成“先进带动后进”的良性循环,进而实现团队成员在面向对象设计思维、代码规范意识等方面的共同进步。这种小组协作机制不仅能突破个人学习时的思维局限,还能通过成员间的知识互补与技能传授,有效提升整体班级的编程实践能力,让每个学生在团队协作中深化对封装、继承、多态等核心技术的理解与应用。

posted @ 2025-06-15 21:08  xuan324  阅读(16)  评论(0)    收藏  举报