第三次blog作业:面向对象课程总结
一、
这学期的Java面向对象程序设计课程给我带来了全新的编程体验。从最初接触面向对象概念时的迷茫,到后期能够独立设计完整项目,这一路的学习历程让我收获满满。
课程内容丰富多元,包含了很多学习形式,并且课程的分数也都和这些学习方式挂钩:
线上课程系统地讲解了核心概念
线下课堂深入剖析重点难点
实验环节让我们动手实践所学知识,把课堂的内容和实际应用结合
PTA编程作业巩固具体技能,预防遗忘
Blog总结帮助梳理知识体系
整体来看,课程内容安排循序渐进。前期的封装概念相对容易掌握,让我对面向对象编程建立了初步信心。但随着多态和接口内容的引入,学习的内容难度突然上升,特别是当涉及到抽象类和集合框架时,需要投入更多精力才能消化理解。最后的JavaFX图形界面开发更是综合了前面所有知识,极具挑战性但也最有成就感。
总的来说,这门课程在理论讲解和动手实践之间取得了良好平衡,让我真正理解了面向对象编程的本质。
二、java核心技术掌握总结
-
封装
作为对象的基础保护的手段之一,通过多次实验和作业,我深刻理解了封装作为面向对象编程基石的重要性。在冰箱装大象的项目中,通过合理设置访问修饰符,我学会了如何保护对象的核心数据。比如在Animal类中将name设为私有,只通过公有方法访问,这种做法有效防止了外部代码对数据的意外修改。更重要的是,我领悟到封装不仅仅是代码技术,更是一种设计思维——如何让对象保持自身的内在状态,对外只暴露必要的行为接口。 -
继承与多态
能够参与构建对象关系,继承关系的理解曾是我的一大难题。在冰箱项目中,通过设计Elephant、Lion等动物类继承自Animal抽象类,我直观地认识到继承如何体现"是什么"的关系。同时,通过isattackable()方法在不同动物子类中的差异化实现,我理解了多态如何实现"相同方法、不同行为"的特性。
最让我印象深刻的是,在PTA作业的图形计算系统中,使用抽象类AbstractShape统一规范了所有图形子类必须实现的getArea()方法,这种设计让整个系统具备了良好的扩展性,轻松地添加新的图形类而不影响已有功能。
- 抽象类与接口:
帮助建立代码逻辑关系,抽象类和接口曾让我感到困惑——它们都包含未实现的方法,那到底该用哪种呢?通过多次实践,我终于厘清了它们的区别:
抽象类适合建立具有逻辑关系的对象族群
接口则更适用于定义对象应具备的能力
在冰箱项目中,Attackable接口明确规定了攻击行为标准,让不同类型的电器容器(冰箱、洗衣机等)都能统一处理动物对象的加入操作。这种清晰的契约设计大大降低了系统复杂度。
- 集合框架:
能够正确地关系数据,存贮和使用方便,集合框架的学习经历了从陌生到熟悉的过程。我掌握了常用集合的特性和适用场景:
ArrayList用于需要频繁访问元素的场合
HashMap处理键值对关联数据
使用Collections工具类进行排序等操作
在冰箱项目中,管理多种电器的容器列表让我实际体验了集合操作的强大功能,尤其是通过自定义比较器对集合进行多重排序的实现,既锻炼了集合操作能力,也加深了对比较器模式的理解。
- 异常处理:
防止程序出现难以处理的bug,异常处理是我的薄弱环节,经常只关注功能实现而忽视潜在错误。课程中通过多个实验让我认识到,良好的异常处理对程序稳健性至关重要,而且正确的异常处理可以很好地减少工作量。
我特别记住了两个核心原则:
精确捕获特定类型异常
避免"吞没"异常信息
在文件操作练习中,通过在FileNotFoundException异常中明确输出错误信息并终止程序,避免了无效操作流程。这让我深刻体会到异常处理不是可有可无的装饰,而是程序健壮性的重要保障。
- JavaFX:
作为面向对象语言的应用,JavaFX部分作为课程的压轴内容,综合运用了前面的所有知识。我学会了如何构建GUI界面,处理用户事件,并使用CSS美化界面。
最让我印象深刻的是事件驱动编程模式如何改变思维习惯——从"程序控制流程"转变为"响应用户操作"
而且老师在这节课还使用了翻转课堂的形式,不仅让课程更轻松,还让我们对自己负责的知识区块更加难忘
通过文本编辑器项目实践,我将面向对象的设计理念应用到了图形界面开发中。虽然遇到不少困难,但完成功能完整、界面友好的应用带来的成就感是前所未有的。
三、学习过程遇到的困难和问题
- 误入继承的误区
起初在构建动物类继承体系时,我常因理解不深而犯错。例如在老虎类中实现构造方法时,忘记调用父类构造器:
// 错误写法:未调用super()
public Tiger(String name) {
this.name = name;
}
// 正确做法:确保父类初始化
public Tiger(String name) {
super(name);
}
这种错误导致父类字段无法正确初始化,经过调试才找到问题根源。这让我认识到构建继承体系时,必须理解父类和子类的初始化顺序。
- 集合操作
在集合管理电器的项目中,我遇到了意外问题:在遍历动物列表时尝试删除元素导致程序崩溃。经过老师讲解才知道,遍历过程中修改集合需要使用迭代器的特殊方法。
这次经历让我学到了关键一课:操作集合时必须理解其工作原理,不同的集合类有不同的行为特性。
- 多态理解不到位
曾经在项目中写过多余的类型判断代码:
if(animal instanceof Lion) {
// 针对狮子处理
} else if(animal instanceof Elephant) {
// 针对大象处理
}
后来老师指出这种做法违背了多态原则,应该在父类中定义统一方法,让子类实现不同行为。这个教训让我意识到,多态不只是技术手段,更是设计哲学。
四、课程感悟与建议
宝贵的学习收获
回顾整个学习旅程,我收获了很多进步,也改正的很多平时基本注意不到的错误:
编程思维的转变:从面向过程转向以对象为核心的设计思维
系统设计能力提升:学会构建扩展性良好的软件架构
学会更多的调试分析技能:在解决复杂问题的过程中提升排错能力
特别是冰箱和图形计算系统两个项目,让我将分散的知识点融会贯通,真正理解了面向对象编程的强大之处。
建设性的改进建议
针对课程未来优化方向,我有几点想法:
强化调试训练:希望增加关于IDE调试工具的专题教学,帮助我们更快定位问题
丰富示例类型:可以多展示一些行业应用案例,帮助理解知识点的实际应用场景,以及对应的实践过程展示
渐进式项目安排:可以考虑拆解复杂项目,分阶段实现不同功能模块
加强代码规范:建议加入自动化代码检查,培养良好编码习惯
设计模式入门:期待未来能增加一些常用设计模式的简单介绍
结语:成长的见证
这门课程对我而言不仅是学习一门编程语言,更是一次编程思维的洗礼。从最初面对抽象概念的茫然,到最后能自信地设计项目结构,这种成长让我倍感欣慰。冰箱项目中每个能成功装入动物的瞬间,PTA作业每道通过的绿灯,实验课每次成功调试的喜悦,都成为我成长路上的里程碑。
感谢课程设计的严谨用心,也感谢老师们在关键时刻的耐心指导。未来我将继续深化面向对象设计思想的运用,努力成为一名优秀的软件开发者。这段学习经历将成为我大学生涯中最宝贵的财富之一。

浙公网安备 33010602011771号