面向对象课程总结

Java面向对象程序设计课程学习总结

一、前言:课程整体回顾与感受

这学期的Java面向对象课程相信会是我大学生涯中收获最丰富的编程课程之一。从第一次面对"对象"概念时的迷茫,到现在能够运用面向对象思想解决实际问题,这段学习旅程充满挑战却也收获满满。下面我将从课程各环节的工作量和难度进行详细总结:

1. 博客作业

  • 完成情况:累计完成3篇技术博客
  • 时间投入:平均每篇花费2小时左右
  • 难度感受:内容组织比编码更难,需要将零散知识系统化

2. PTA编程作业

  • 完成情况:11次作业中第一次大作业(电梯运行逻辑)后面的迭代未完成,其余皆完成了
  • 时间投入
    • 第一次大作业:经过好多天的修改,但是还是没有写完
    • 第二次大作业:4-5天的零星时间
    • 第三次大作业:2-3天即可
  • 难度变化
    • 第一次大作业:电梯运行逻辑(⭐⭐⭐⭐)
    • 第二次大作业:航空系统(⭐⭐⭐)
    • 第三次大作业:圆形卡片(⭐⭐⭐)
  • 最大收获:学会先画UML类图再编码,效率提升50%以上

3. 实验任务

  • 完成情况:5次实验全部完成
  • 典型耗时
    -写代码部分和编辑实验报告部分耗时较合理
    -将代码敲进实验提价系统很麻烦
  • 难度
    -五次实验难度都较为合理

4. 线上线下课程深度体验

  • 线上学习:自主探索的沃土

  • 学习节奏:

  • 每周3小时慕课视频,自由掌控学习进度。重点章节(如继承/多态)反复观看5次以上,结合1.5倍速播放,高效消化复杂概念。

  • 核心价值:

    -突破时空限制:深夜调试代码时,可随时回看知识点

  • 线下课堂:思维碰撞的阵地

对比感悟:线上资源如"知识超市"可随时取用,线下课堂应是"创客工坊"——在教师引导下,通过实时编码碰撞思想火花。期待未来课程增加更多"手脑并用"的实践环节,让设计思维在调试中升华。

课程整体评价

课程设计环环相扣:线上理论学习→PTA实践→博客总结→实验加固知识,形成完整学习闭环。工作量分布合理,但实验系统体验有待优化。

二、面向对象技术深度总结

1. 封装:安全屏障的建立

  • 掌握程度:⭐⭐⭐⭐
  • 实践案例:类中的个别属性设为private,通过getBalance()和verifyPassword()方法控制访问
  • 认知提升
    • 封装的本质是建立访问边界
    • 有效防止非法数据篡改
    • 提高模块独立性
  • 不足:包级封装设计经验缺乏,大型项目分包策略不熟悉

2. 继承:代码复用的艺术

  • 掌握程度:⭐⭐⭐
  • 实践案例:动物进入冰箱设计Animal基类,派生出Tiger等子类(实验题目)
  • 踩坑经历
    public class Tiger extends Animal {
        // 忘记调用super(name)导致父类字段未初始化
        public Tiger(String name) {
            // 应添加super(name);
        }
    }
    
  • 关键认知
    • 继承关系是"is-a"关系
    • 方法重写需遵循Liskov替换原则
    • 组合优于继承的适用场景
  • 待加强:多层继承设计(如Exception类继承体系)

3. 多态:灵活性的源泉

  • 掌握程度:⭐⭐⭐
  • 顿悟时刻:图形系统中调用shape.draw()方法,自动识别圆/矩形类型
  • 技术理解
    • 编译时类型 vs 运行时类型
    • 方法绑定机制(静态绑定final/private/static)
    • 接口多态的实际价值
  • 现存问题:ClassCastException处理不够优雅

4. 抽象类与接口

  • 掌握对比
    特性 抽象类 接口
    使用场景 模板方法模式 策略模式
    我的实践 动物进入冰箱Animal基类 USB设备连接规范
    优势认知 提供部分实现 实现多继承
    使用误区 包含具体字段 定义常量接口
  • 不足:函数式接口与lambda表达式结合应用不熟练

5. 集合框架

  • 掌握情况
    • ArrayList:随机访问
    • HashMap:键值存储(单词统计)(但是这个感觉几乎没怎么用过,看上去像陌生人)
    • Iterator:安全遍历(删除元素)(陌生人二号)
  • 血泪教训
    // 错误写法:遍历时直接删除
    for(String item : list) {
        if(condition) list.remove(item); // 抛出ConcurrentModificationException
    }
    
    // 正确方案
    Iterator<String> it = list.iterator();
    while(it.hasNext()) {
        if(condition) it.remove();
    }
    
  • 欠缺:对其内容运用不熟悉

6. 异常处理

  • 进阶认知
    1. 异常链:保留原始异常信息
    2. try-with-resources:自动关闭资源
    3. 异常屏蔽问题解决方案
  • 典型缺陷:finally块中发生异常导致原始异常被掩盖

7. JavaFX

  • 掌握程度:基础功能实现

  • 实践收获:
    理解了布局管理器的使用
    掌握了基础事件绑定
    学会了数据绑定基础

  • 能力短板:
    FXML与控制器协同工作
    CSS样式精细控制
    动画效果实现
    响应式界面设计

  • 学习javafx是同学上去讲的,由于自己也要做PPT演讲,就会不由自主的研究包的组的PPT怎么做的,上去应该怎么演示,容易同学的演讲知识点,所以这一部分学的也不好。

技术掌握全景图

核心收获:

  • 面向对象思维范式转变
  • 设计原则的实际应用能力
  • 代码复用与扩展的技巧
  • 程序健壮性保障方案

认知深化:

  1. 封装是对象自治的基础
  2. 继承需警惕"脆弱的基类"问题
  3. 多态是框架设计的核心
  4. 接口是解耦的最佳实践
  5. 异常处理反映工程素养

能力短板:

  • 集合框架并发处理(特别迭代器故障快速定位)
  • 异常链的合理构建
  • JavaFX事件传播机制
  • 设计模式在复杂场景的应用

三、采坑心得:成长中的阵痛

1. 设计缺失之痛

惨痛经历:第一次PTA作业未画类图直接编码
灾难现场

  • 类职责重叠(30%方法重复)
  • 循环依赖(ClassA调用ClassB,ClassB又调用ClassA)
  • 状态管理混乱(业务逻辑散落在5个类中)

重构过程
重构耗时花了好几天,但是思维混乱

经验总结
1.设计阶段投入1小时可节省编码阶段5小时
2. 引入状态模式解耦
3. 建立清晰的类关系图

2. 时间管理的教训

核心问题:低估任务复杂度,缺乏合理规划
后果体现

  • 关键步骤被压缩(如异常处理、资源释放)
  • 调试时间严重不足
  • 代码质量显著下降

优化策略

  1. 分段式开发:将任务拆解为设计→编码→测试→优化四阶段
  2. 缓冲区设置:预留30%时间应对意外问题
  3. 每日进度检查:建立完成度评估机制

3. 技术决策的反思

认知误区:过度追求自主实现
本质问题

  • 忽视标准库的优化积累
  • 低估成熟方案的工程价值
  • 高估个人算法能力

思维转变

  1. 建立"先查库再造轮"的思维习惯
  2. 学会评估技术选型成本收益
  3. 理解工业级代码的质量标准

4. 调试能力的进化

实践方法论

  • 分层诊断:从异常栈→业务逻辑→数据流逐步排查
  • 工具矩阵
    • 基础调试:IDE断点+变量监控
    • 日志体系:DEBUG/INFO/ERROR三级记录
    • 异常处理:封装上下文信息传递
  • 预防机制:关键操作添加防护性断言

四、改进建议与课程总结

建设性建议

  1. 实验系统升级

    • 现状:敲代码十分费劲,也不方便查看错误
    • 建议:优化实验提交系统
  2. JavaFX教学强化

    • 现状:学生讲解深度不足,同学听课也没那么认真
    • 建议:
      • 提供SceneBuilder可视化教程
      • 增加游戏开发案例(如贪吃蛇)
    • 配套资源:FXML模板库

课程总结与个人成长

这门课带给我的不仅是技术提升,更是一场思维方式的蜕变。现在回想起来,我的成长主要体现在这些方面:

设计思维的觉醒

以前写代码总是直接开干,现在终于养成了先设计再动手的习惯。每次打开IDE前,我都会在白纸上画类图,思考每个对象该承担什么职责。最明显的变化是:以前写代码常常返工,现在一稿通过率提高了60%!特别是学会了预留扩展点,有次PTA作业新增需求,我仅用半小时就完成了调整。

学习方式的革命

最大的突破是找到了适合自己的学习节奏:

  • 遇到问题先啃官方文档,而不是到处问人
  • 写个小原型快速验证想法,避免纸上谈兵
  • 通过博客把零散知识织成知识网

这门课像一面镜子,照见了我的不足,也映出了成长的可能。从最初的类设计手忙脚乱,到期末能从容设计电梯调度系统,这种看得见的进步,比任何分数都珍贵。感谢老师没有直接给答案,而是引导我们思考——那些debug到凌晨的痛苦时刻,恰恰是成长最快的时光。

致谢与展望:
本课程为我打开了面向对象编程的大门,特别感谢:

  • 老师在课堂上的电梯系统案例分析
  • 助教在实验课上的调试技巧指导
  • 同学在博客互评中提出的宝贵建议

虽然JavaFX等方向仍需加强,但已建立起扎实的面向对象基础。未来计划:

  1. 继续完善计算器项目,增加历史记录功能
  2. 学习Spring框架深化IOC理解
  3. 参与开源项目实践设计模式

本课程不仅是技术学习,更是思维方式的锻造。这段经历将成为我编程生涯的宝贵财富,指引我在面向对象的道路上行稳致远。

posted @ 2025-06-20 23:00  丁伶子  阅读(34)  评论(0)    收藏  举报