第三次大作业
一、前言
本门课程的Blog作业难度较小,PTA作业难度较高,实验比较抽象,实验提交系统特别难用,线上课程以及线下课程比较好,翻转课堂没什么效果,工作量普遍较高。
二、面向对象技术总结
在面向对象技术的学习中,通过 PTA 作业和实验实践,我对封装、继承、多态等核心概念有了逐步深入的理解。对于封装,我认识到它是将数据与操作绑定并隐藏内部细节的重要方式,比如在 PTA 作业里封装学生类属性,通过 setter/getter 方法保证数据安全,实验中银行账户类对余额的私有控制也体现了这一点,但在复杂业务场景下合理设计接口的能力还有待提高。继承让子类能复用父类功能并进行扩展,像图形继承体系作业和员工管理系统实验都很好地实践了这一点,不过我对 super 关键字底层调用机制理解不够深入,也缺乏对继承滥用风险的足够认识。
多态是同一引用在不同实例下表现不同行为,实验中动物冰箱案例和集合框架的应用都展现了多态的特性,但在复杂场景中对类型转换和动态绑定机制的应用还不够熟练。抽象类和接口方面,我能区分两者差异,抽象类用于定义同类事物抽象特征,接口是完全抽象的契约,在交通工具案例和 JavaFX 事件处理中都有应用,但对接口默认方法的应用场景理解不足,也缺乏在大型项目中运用它们构建架构的经验。
集合框架中,我熟悉常用集合类的底层原理和 API,如 ArrayList、HashMap 等在作业和实验中的应用,但对并发集合和集合工具类的高级用法掌握不够。异常处理上,我能熟练使用 try-catch-finally 机制和自定义异常,不过对异常链和异常最佳实践理解不深入,缺乏系统设计异常处理流程的经验。JavaFX 方面,我掌握了基础控件使用和事件处理,能进行简单界面布局和动画实现,但在 FXML 与代码集成、数据绑定和自定义组件开发等方面还有欠缺。
总结来看,我已掌握面向对象的核心概念和基本应用,但在底层原理、设计模式应用、复杂场景实践和技术扩展等方面还有提升空间。后续我将通过深入研究源码、学习设计模式、参与大型项目和探索 Java 新特性来强化自己的面向对象技术能力。
三、采坑心得
在面向对象技术的学习过程中,我踩过不少 “坑”,这些经历让我深刻认识到理论与实践结合的重要性,也积累了一些值得反思的经验教训。初期我对封装的理解存在偏差,误以为封装只是简单使用 private 修饰符,在 PTA 作业中为了图方便给类添加了大量 public 属性,像设计学生类时直接把成绩属性设为 public,导致外部代码能随意修改数据,后来不得不花费大量时间排查因外部非法修改成绩而引发的逻辑错误。同时在接口设计时没有考虑业务场景,在银行账户类中盲目提供 setBalance 方法允许直接修改余额,忽略了存款和取款的业务逻辑校验,违背了封装 “隐藏实现细节” 的本质,这让我明白封装的核心是 “信息隐藏”,要根据业务需求合理设计接口,避免暴露底层数据结构,方法应体现完整的业务逻辑而非单纯的属性操作。
在 “图形继承体系” 实验中,我为了追求代码复用过度使用继承,把 Shape 父类设计得过于复杂,甚至将与图形无关的文件操作方法也放进去,使得 Circle 和 Rectangle 子类继承了很多无用功能。更严重的是,当需要为部分子类添加特殊功能时,不得不修改父类或创建多层子类,最终导致类层次结构臃肿混乱,比如为 Circle 添加 “颜色渐变” 功能时,错误地在父类 Shape 中添加通用的颜色处理方法,却忽略了其他图形可能不需要该功能,这让我意识到继承应遵循 “is - a” 原则,要优先考虑 “组合” 而非 “继承”,避免为追求复用而强行建立继承关系,复杂功能可通过接口或组合其他类实现。
使用多态时,我曾因对动态绑定机制理解不深,在实验中的动物冰箱作业中出现类型转换错误,比如用 Animal 引用指向 Dog 对象后,直接强制转换为 Cat 类型,结果导致异常ClassCastException。此外在设计多态应用时,未能充分利用接口抽象,而是依赖具体类的继承关系,限制了代码的扩展性,像在集合操作中使用 ArrayList 具体类而非 List 接口引用,导致后续无法轻松替换为 LinkedList,这使我懂得多态的核心是 “接口抽象”,应始终使用父类或接口引用指向子类对象,类型转换前必须通过 instanceof 校验,避免硬编码具体类以提升代码灵活性。
四、改进建议及总结
在教学过程中,可采用更多样化的教学方法。例如,增加小组讨论和项目实践的环节,让学生在合作中学习和应用面向对象技术。教师可以提出一些实际的问题或项目需求,让学生分组进行分析、设计和实现,然后进行展示和交流,这样既能培养学生的团队协作能力,又能加深对知识的理解和应用。
另外,可以利用可视化工具来辅助教学,如通过 UML 类图、时序图等工具来展示面向对象系统的设计,帮助学生更好地理解类之间的关系和交互过程。同时,在讲解一些复杂的概念或算法时,可结合动画或示意图进行演示,使抽象的知识更加直观易懂。
此外,可建立实践作品的分享和评价机制,让学生有机会展示自己的成果,并从他人的作品中学习优点,发现自己的不足。这不仅能激发学生的学习积极性,还能促进学生之间的相互学习和交流。我们的javaFX实验和翻转课堂就有互评环节,这很好。
最后,感谢老师们的辛苦付出,以及段老师的出题为难,罗老师的实验系统。

浙公网安备 33010602011771号