第三次Blog作业

前言:
在本学期的面向对象编程课程中,我经历了丰富而充实的学习过程,涵盖了线上与线下课程、PTA作业、实验以及个人学习博客的撰写等环节。这些教学形式各具特点,相互补充,共同构成了完整的课程学习体验。
在线上课程部分,通过视频讲解、课件阅读和在线讨论等形式,我得以高效地获取知识框架和基础理论。线上课程便于随时回放和复习,这让我能够根据自己的学习节奏进行反复观看和理解,尤其是在遇到复杂的概念如面向对象的基本原理和抽象类的使用场景时,能够多次回顾讲解内容,加深记忆。同时,线上平台的互动区也让我能够与同学们交流学习心得,询问问题,拓宽了学习视野。
线下课程则更注重知识的实际运用和实践操作。课堂上,教师可以即时观察我们的反应,进行针对性的讲解和答疑,这种面对面的交流更能帮助我们解决实际编写代码时遇到的困惑。比如在讲解继承的多层继承和接口实现时,教师通过现场演示和互动讨论,让我们更好地理解了这些知识点在实际编程中的应用。
PTA作业作为课程的重要组成部分,为我们提供了理论与实践相结合的机会。通过解决各种编程问题,我不仅巩固了所学的面向对象知识,还锻炼了编程逻辑思维和代码实现能力。例如,在处理多态相关的题目时,逐渐掌握了如何通过接口和抽象类实现灵活的代码设计。
实验环节则让我们在更真实、更复杂的项目环境中运用所学知识。实验中遇到的问题更加多样化,需要综合运用封装、继承、多态等多种面向对象技术来解决。例如,在开发一个简单的图形界面应用程序时,我深入理解了JavaFX在用户界面方面的强大功能,以及如何在实际项目中结合面向对象技术进行模块化设计。
在完成学习博客作业的过程中,我学会了如何梳理知识脉络、总结学习经验,并以文字形式清晰地表达出来。这不仅有助于我巩固所学内容,还提升了我的写作和总结能力。我通过博客记录了学习过程中的每个重要节点,包括对面向对象技术的理解、遇到的困难以及解决方法等,这成为了我回顾和复习的重要资料。
总体而言,课程的工作量适中,难度逐步递增,从基础概念到综合运用,符合学习规律。面对有一定难度的编程任务,虽然会花费较多时间思考和调试代码,但通过查阅资料、与同学交流以及向教师请教,最终都能找到解决方案,从中收获良多。
面向对象技术总结:
(1)核心技术掌握情况
封装:我较好地掌握了封装的实现方式,通过将类的属性设置为私有,用公共方法提供属性访问控制,能够有效隐藏内部实现细节,提高代码的安全性和可维护性。在实验中,设计一个学生类时,将学生的成绩作为私有属性,只通过特定的方法允许外部获取和修改成绩值,很好地体现了封装的应用,我意识到封装是类设计的基础,有助于形成清晰的模块化结构。
继承:对继承的理解较为深刻,明白它可以让子类继承父类的属性和方法,从而减少代码重复。在PTA作业中,通过创建一个员工类作为父类,再设计出如经理类、工程师类等子类,子类继承父类的基本信息如工号、姓名等,同时又能根据自身角色添加特定属性和方法,这种层次化的类设计让我体会到继承强大的扩展能力。但有时候继承体系过深可能会导致理解复杂,我会在设计时尽量保持继承层次合理,避免过度复杂化。
多态:多态的掌握相对熟练,能够通过父类引用调用子类的重写方法,实现不同子类间的差异化行为。在使用JavaFX开发一个简单图形绘制程序时,创建了一个图形类作为父类,矩形类和圆形类作为子类,通过一个多态的方法绘制不同图形,这种动态调用方式让我看到多态带来的灵活性。它让我意识到,多态是面向对象编程中实现代码复用和动态扩展的重要机制。
抽象类与接口:通过学习明白了抽象类的概念和作用。在编程时,抽象类允许我定义一些通用的方法签名,让子类根据具体行为去实现。比如设计一个动物类作为抽象类,声明了一个抽象的叫声方法,子类如狗类、猫类分别实现具体的叫声。这让我认识到抽象类是为子类提供统一接口和规范定义的有效工具,它约束了子类的设计方向,保证了多态行为的实现基础。接口的使用上有些欠缺。虽然知道接口可以定义多个方法供不同类实现,用于规范多个类的行为,但在实际项目中,有时会因思维定式而较少主动考虑接口的使用。例如,在一个电商系统设计中,如果我可以更早地定义一个支付接口,将第三方支付、本地支付等不同支付方式作为实现类,代码会更清晰模块化,而不是在后期才想到这种设计方式。我需要进一步加深对在接口大型项目中解耦关联、保证系统灵活性方面重要性的理解。
集合框架:常用 ArrayList、HashMap 完成 PTA 数据存储题,如 “学生成绩管理” 中用 ArrayList 存储学生对象,HashMap 实现学号到成绩的映射。掌握了泛型的使用(如 List),但对 LinkedList 与 ArrayList 的底层差异理解不深入,在需要频繁插入删除的场景中仍习惯使用 ArrayList。
异常处理:在文件读写实验中通过 try-catch 处理 FileNotFoundException 等异常,学会了自定义异常类(如 “InputFormatException”)。但在多重 catch 块的顺序排列上曾出错,如先捕获 Exception 再捕获 IOException,导致子类异常无法被正确处理。
JavaFX:JavaFX的学习还在起步阶段,刚刚掌握了一些基础组件的使用,如按钮、文本框、面板布局等,能够简单地设计出一个图形用户界面来实现一些交互功能。但对于复杂的动画效果制作、界面美观度提升以及与其他Java代码的深度整合能力还有很大提升空间,比如动态更新数据的表格显示、复杂的图表绘制等还不熟练。
(2)采坑心得
典型问题与教训
空指针异常频发:在 PTA “链表操作” 作业中,因未判断节点是否为空就调用方法,导致 NullPointerException。教训:所有对象引用操作前必须进行非空校验,可使用 if (obj != null) 或 Java 8 的 Optional 类处理。
继承关系设计混乱:实验初期设计将子类继承和它毫不关联的父类,违背逻辑,导致代码冗余。教训:设计继承体系前需绘制类图,遵循 “单一职责原则”,避免多层继承带来的维护困难。
多态转型逻辑错误:将父类 “Employee” 对象强制转为子类 “Manager” 时未判断类型,导致程序崩溃。教训:转型前必须用 instanceof 判断,如 if (emp instanceof Manager) 再执行转型。
JavaFX 事件处理失效:按钮点击事件注册时,误将 lambda 表达式中的 “this” 指向错误对象,导致事件不触发。教训:JavaFX 中应明确事件处理器的作用域,可通过局部变量保存正确的对象引用。
代码规范缺失:初期变量命名如 “a”“b”,方法名 “fun1”,后期在代码评审中因可读性差被批评。教训:遵循驼峰命名法(如 studentName)、见名知意原则,类名首字母大写(如 Student 类)。
改进建议及总结
课程优化建议
PTA 作业改进:
代码提交后测试点有些问题不是特别清晰,不能及时理解测试点的评判要求,及时改进代码
实验教学优化:
增加 “小组协作实验”,如 3 人一组完成一个多功能系统,分别负责数据层、业务层、界面层,培养团队开发能力。
线上线下融合:
线上课程增加 “知识点测试” 模块,观看视频后立即完成 1-2 道选择题,巩固学习效果。
线下课设置 “代码互评环节”,学生分组交换代码,用 “优点 + 改进点” 模式互评,提升代码审查能力。
资料补充完善:
整理 “面向对象设计模式案例集”,如工厂模式、观察者模式在实际项目中的应用代码,帮助学生理解设计模式与面向对象技术的结合。
发布 “JavaFX 进阶教程”,包含动画效果、FXML 与代码分离等高级内容,满足学有余力的学生需求。
个人学习总结
通过本门课程,我系统构建了面向对象的编程思维,从 “过程式编程” 转向 “对象建模”,能够运用封装、继承、多态解决实际问题。PTA 作业的反复打磨让我掌握了代码调试技巧,实验项目的完整落地提升了工程实践能力。尽管在 JavaFX 界面设计、集合框架高级应用等方面仍有不足,但通过 “错题复盘”“文档查阅” 等方法已逐步改进。未来将通过参与开源项目、完成小型系统开发进一步强化面向对象技术,尤其在设计模式与并发编程领域深入探索,将课程所学转化为实际开发能力。

posted @ 2025-06-17 20:24  赵珩铎  阅读(7)  评论(0)    收藏  举报