第三次blog作业
前言
本学期的Java面向对象程序设计课程内容丰富、实践性强,通过线上线下相结合的教学方式,全面涵盖了面向对象编程的核心概念和技术。课程工作量适中但富有挑战性,主要包括:
Blog作业:共5篇,从基础语法到高级特性循序渐进,每篇都要求对学习内容进行系统性总结
PTA作业:共计10次,难度逐渐提升,从基础编程题到综合性项目,很好地检验了学习效果
实验环节:6次实验,涵盖GUI开发、集合框架应用等实践性内容
线上课程:提供了完整的教学视频和参考资料,方便自主学习
线下课程:老师讲解重点难点,并进行代码演示
整体而言,课程设计合理,理论与实践相结合,难度呈阶梯式上升,特别是后期的JavaFX和集合框架部分需要投入较多时间理解和实践。
面向对象技术总结
封装
通过PTA作业和实验,我深刻理解了封装作为面向对象基础的重要性。封装不仅仅是使用private修饰属性,更重要的是通过合理的访问控制来保护对象内部状态,提供清晰的对外接口。在"图形类设计"作业中,我学会了如何设计良好的getter/setter方法,并在必要时添加有效性验证。
继承
继承机制在"员工类设计"和"动物类体系"作业中得到充分实践。我掌握了:
使用extends实现类继承
方法重写(override)的规则
super关键字的使用场景
继承的"is-a"关系判断
不足:对继承层次过深导致的"脆弱基类"问题理解还不够深入。
多态
多态是课程中最具挑战性也最有趣的部分。通过"图形面积计算"和"员工薪资系统"作业,我理解了:
编译时类型与运行时类型的区别
方法调用的动态绑定机制
向上转型和向下转型的应用场景
多态在框架设计中的威力
抽象类与接口
"数据库连接设计"和"支付系统"作业帮助我区分了抽象类和接口:
抽象类用于is-a关系,可包含具体实现
接口定义契约,Java8后也可有默认方法
面向接口编程的灵活性
接口在策略模式中的应用
不足:对函数式接口和lambda表达式的结合使用还不够熟练。
集合框架
集合框架是实际开发中最常用的部分,通过"学生管理系统"和"单词统计"作业,我掌握了:
List、Set、Map三大接口及其常用实现类
迭代器的使用
Comparable和Comparator的区别
泛型在集合中的应用
Java8的Stream API基本操作
不足:对并发集合类的线程安全机制理解不够深入。
异常处理
异常处理看似简单但实际复杂,通过多次调试我学会了:
检查型异常和非检查型异常的区别
try-catch-finally的正确使用
自定义异常的实现
异常链的传递
不足:在资源管理方面,对try-with-resources的使用还不够习惯。
JavaFX
JavaFX是课程中最具实践性的部分,通过"计算器"和"简易绘图板"实验,我掌握了:
场景图(Scene Graph)概念
布局管理器的使用
事件处理机制
控制器与FXML的绑定
简单动画实现
不足:对CSS样式化和复杂自定义控件还有待提高。
采坑心得
过度设计问题:在初期作业中,我常常过早考虑扩展性,导致设计过于复杂。后来明白"YAGNI"(You Aren't Gonna Need It)原则的重要性,学会了适度设计。
空指针异常:这是最常见的运行时错误,通过大量调试才养成了良好的null检查习惯,并学会使用Optional类来避免。
equals和hashCode:在重写这两个方法时多次出错,最终理解了它们的契约关系及正确实现方式。
并发修改异常:在使用迭代器时经常遇到ConcurrentModificationException,通过实践才明白不能在遍历集合时直接修改集合内容。
JavaFX线程规则:刚开始经常违反"JavaFX应用线程规则",导致界面卡死。后来掌握了Platform.runLater()的正确用法。
改进建议及总结
课程总结
本门Java面向对象程序设计课程体系完整,内容前沿,理论与实践并重。通过一学期的学习,我不仅掌握了Java语言的核心特性,更重要的是培养了面向对象的思维方式,这对未来的软件开发工作至关重要。
改进建议
PTA作业反馈:建议增加更详细的代码评审意见,特别是设计层面的建议,而不仅是测试用例的通过与否。
实验环节:可以增加一些小型团队项目,培养协作开发能力,同时引入版本控制工具如Git的基本使用。
JavaFX部分:鉴于实际企业中使用JavaFX较少,可以考虑适当减少课时,增加Spring Boot等更主流框架的介绍。
线上资源:建议提供更多实际项目案例视频,展示从需求分析到实现的完整过程。
总的来说,这门课程让我受益匪浅,为后续的软件开发学习打下了坚实基础。感谢老师的悉心指导!
浙公网安备 33010602011771号