第三次Blog作业

一、前言
本学期的Java面向对象程序设计课程已经接近尾声,浅浅的回顾了一下这一学期的学习历程,感触颇深。作为一门理论与实践并重的专业核心课程,Java面向对象程序设计通过多种教学形式全面培养了我们的面向对象编程能力和工程实践能力。课程采用了线上线下混合教学模式,包括理论授课、实验操作、PTA编程作业以及技术博客撰写等多种形式,形成了一个完整的教学闭环。
从工作量角度来看,本课程的负荷量还是很大的。一周左右的时间平均需要完成1次PTA作业集(约5-8道编程题,还有一些迭代的左右),每两周完成一次实验项目(共完成5次实验),同时还需要撰写3篇技术博客(包括阶段性总结和专题技术分析)。特别是在课程中后期,随着JavaFX图形界面编程和综合项目的引入以及翻转课堂的实践等,时间投入明显增加,平均每周需要投入15-20小时用于课程相关学习和实践。
从难度梯度来看,课程设计循序渐进。前期重点夯实Java基础语法和面向对象基本概念,中期深入集合框架、异常处理和I/O流等核心技术,后期则聚焦图形界面开发和综合项目实践。整体难度曲线合理,但在JavaFX技术学习和综合项目设计阶段存在明显的陡峭提升,需要投入额外精力克服学习瓶颈。
特别值得一提的是Blog作业形式,这种反思性学习任务迫使我们对每个技术点进行系统性梳理和文字表达,有效加深了对知识点的理解和记忆,同时也培养了技术文档撰写能力,这对未来的职业发展有很大作用。
二、面向对象技术总结

  1. 封装技术
    封装作为面向对象的第一大特性,在本课程中得到了充分体现和反复强化。通过PTA作业中的"日期类设计"、"银行账户管理"等题目,我深刻理解了如何通过private修饰符保护数据,同时提供public方法进行受控访问。在实验三的"学生信息管理系统"中,我实践了将学生属性和相关操作封装在Student类中,对外仅暴露必要的接口。
    认知提升:封装不仅是数据隐藏,更是模块化设计的基础。良好的封装可以降低模块间耦合度,提高代码复用率。我学会了使用包(package)组织相关类,通过访问控制符实现不同级别的封装。
    欠缺之处:在大型项目中,对封装粒度的把握还不够精准,有时会过度封装导致接口过于复杂,或者封装不足导致内部细节暴露。
  2. 继承与多态
    继承和多态是课程的重点难点内容。PTA作业中的"图形类继承体系"要求构建Shape基类,派生Circle、Rectangle等子类,使我掌握了extends关键字和super()调用。实验五的"员工薪资系统"则展示了如何通过继承消除重复代码,构建清晰的类层次结构。
    多态方面,"动物叫声模拟"作业演示了方法重写和父类引用指向子类对象的特性。而实验六的GUI事件处理则体现了接口回调形式的运行时多态。
    认知提升:理解了"is-a"关系是继承的前提条件,认识到组合优于继承的设计原则。多态不仅体现在方法重写,还包括重载、泛型等多种形式,是提高系统扩展性的关键。
    欠缺之处:对深继承层次的设计经验不足,对@Override注解的使用场景理解不够深入,有时会混淆方法重载和重写。
  3. 抽象类与接口
    抽象类和接口是Java实现抽象编程的两种重要机制。通过PTA"计算器设计"作业,我实践了使用抽象类定义算法骨架;"数据库连接模拟"则展示了接口作为契约的作用。实验四的"绘图工具"项目综合运用了抽象类和接口,前者定义图形公共行为,后者实现可序列化能力。
    认知提升:理解了抽象类侧重"是什么",接口侧重"能做什么"的区别。掌握了Java8接口的default方法和static方法新特性。认识到接口在实现多继承和定义API边界方面的重要价值。
    欠缺之处:对标记接口的使用场景不够熟悉,对函数式接口与Lambda表达式的结合应用还需加强。
  4. 集合框架
    集合框架是Java标准库中最常用的组件之一。PTA"单词统计"、"学生成绩排序"等作业涵盖了ArrayList、HashSet、TreeMap等核心容器的使用。实验二的"图书馆管理系统"实践了集合元素的遍历、过滤和排序操作。
    认知提升:掌握了Collection和Map两大体系的结构特点,理解了泛型在集合类型安全中的作用。学会了根据访问模式(随机访问/顺序访问)和元素特性(唯一性/有序性)选择合适的集合类型。
    欠缺之处:对WeakHashMap、EnumSet等特殊用途集合理解不深,对Collectors工具类的高级用法掌握不足。
  5. 异常处理
    异常处理是Java健壮性的重要保障。PTA"文件解析器"作业实践了checked异常和unchecked异常的区别处理。实验七的"网络爬虫"项目则展示了异常链和自定义异常的应用。
    认知提升:理解了异常分类体系(Error/Exception),掌握了try-with-resources语法。认识到异常应作为异常情况处理手段,不应滥用控制正常流程。
    欠缺之处:对异常性能影响认识不足,有时会过度包装异常导致堆栈信息丢失。
  6. JavaFX技术
    JavaFX作为现代GUI框架,是课程后期重点。通过"简易IDE"、"汇率计算器"等项目,学习了FXML布局、CSS样式、事件绑定等关键技术。综合实验"数据可视化工具"整合了表格展示、图表绘制和文件操作等多种功能。
    认知提升:掌握了MVC模式在GUI开发中的应用,理解了ObservableValue绑定机制。学会了使用Scene Builder工具提高布局效率。
    欠缺之处:对动画API、3D图形等高级特性接触较少,对自定义控件的应用经验不足。
    三、采坑心得
    基础不牢导致后期困难:课程初期对"接口与抽象类区别"等基础概念理解不深,导致在实验五设计类层次结构时出现误用。教训是必须及时消化每个知识点,建立准确的概念认知。
    过度设计问题:在"学生管理系统"实验中,过早引入设计模式导致代码复杂化。经验表明应先实现核心功能,再逐步重构优化,避免"大设计前期"陷阱。
    异常处理不当:PTA作业中曾因未正确处理IOException导致多次提交失败。现在养成了对可能抛出异常的操作都显式处理的习惯。
    集合选择失误:在数据统计作业中错误使用LinkedList导致性能问题。通过JMH测试比较后,认识到随机访问场景应优先选择ArrayList。
    JavaFX线程问题:在综合实验中将耗时操作放在JavaFX应用线程导致界面冻结。通过Task和Service类的学习,掌握了多线程GUI编程的正确方式。
    版本控制缺失:实验三因未使用Git导致代码回退困难。此后建立了为每个实验项目初始化Git仓库的规范,并定期提交。
    文档忽视:前期Blog作业流于形式,未能深入反思。后期采用"实现-记录-优化"的循环模式,使技术写作真正成为提高的助力。
    四、改进建议及总结
    课程改进建议
    实验指导方面:建议为复杂实验项目提供分阶段checkpoint,例如先验收核心功能,再扩展高级特性,避免学生在错误方向上走太远。
    JavaFX教学:考虑到JavaFX在业界应用面较窄,且JavaFX已经太过时,建议将JavaFX课程替换为Spring Boot等技术的介绍。
    Peer Review机制:建议引入作业互评环节,通过阅读他人代码取长补短,同时培养代码审查能力。
    工具链统一:部分同学因开发环境差异(如IDE版本)遇到非技术问题,建议提供标准化的开发容器(Docker)或虚拟机镜像。
    知识图谱构建:建议提供课程技术点的关联图谱,帮助学生建立系统性的知识框架,而非孤立的知识点。
posted @ 2025-06-22 18:22  AAA房地产经销商小梅  阅读(15)  评论(0)    收藏  举报