面向对象课程总结
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. 异常处理
- 进阶认知:
- 异常链:保留原始异常信息
- try-with-resources:自动关闭资源
- 异常屏蔽问题解决方案
- 典型缺陷:finally块中发生异常导致原始异常被掩盖
7. JavaFX
-
掌握程度:基础功能实现
-
实践收获:
理解了布局管理器的使用
掌握了基础事件绑定
学会了数据绑定基础 -
能力短板:
FXML与控制器协同工作
CSS样式精细控制
动画效果实现
响应式界面设计 -
学习javafx是同学上去讲的,由于自己也要做PPT演讲,就会不由自主的研究包的组的PPT怎么做的,上去应该怎么演示,容易同学的演讲知识点,所以这一部分学的也不好。
技术掌握全景图
核心收获:
- 面向对象思维范式转变
- 设计原则的实际应用能力
- 代码复用与扩展的技巧
- 程序健壮性保障方案
认知深化:
- 封装是对象自治的基础
- 继承需警惕"脆弱的基类"问题
- 多态是框架设计的核心
- 接口是解耦的最佳实践
- 异常处理反映工程素养
能力短板:
- 集合框架并发处理(特别迭代器故障快速定位)
- 异常链的合理构建
- JavaFX事件传播机制
- 设计模式在复杂场景的应用
三、采坑心得:成长中的阵痛
1. 设计缺失之痛
惨痛经历:第一次PTA作业未画类图直接编码
灾难现场:
- 类职责重叠(30%方法重复)
- 循环依赖(ClassA调用ClassB,ClassB又调用ClassA)
- 状态管理混乱(业务逻辑散落在5个类中)
重构过程:
重构耗时花了好几天,但是思维混乱
经验总结:
1.设计阶段投入1小时可节省编码阶段5小时
2. 引入状态模式解耦
3. 建立清晰的类关系图
2. 时间管理的教训
核心问题:低估任务复杂度,缺乏合理规划
后果体现:
- 关键步骤被压缩(如异常处理、资源释放)
- 调试时间严重不足
- 代码质量显著下降
优化策略:
- 分段式开发:将任务拆解为设计→编码→测试→优化四阶段
- 缓冲区设置:预留30%时间应对意外问题
- 每日进度检查:建立完成度评估机制
3. 技术决策的反思
认知误区:过度追求自主实现
本质问题:
- 忽视标准库的优化积累
- 低估成熟方案的工程价值
- 高估个人算法能力
思维转变:
- 建立"先查库再造轮"的思维习惯
- 学会评估技术选型成本收益
- 理解工业级代码的质量标准
4. 调试能力的进化
实践方法论:
- 分层诊断:从异常栈→业务逻辑→数据流逐步排查
- 工具矩阵:
- 基础调试:IDE断点+变量监控
- 日志体系:DEBUG/INFO/ERROR三级记录
- 异常处理:封装上下文信息传递
- 预防机制:关键操作添加防护性断言
四、改进建议与课程总结
建设性建议
-
实验系统升级
- 现状:敲代码十分费劲,也不方便查看错误
- 建议:优化实验提交系统
-
JavaFX教学强化
- 现状:学生讲解深度不足,同学听课也没那么认真
- 建议:
- 提供SceneBuilder可视化教程
- 增加游戏开发案例(如贪吃蛇)
- 配套资源:FXML模板库
课程总结与个人成长
这门课带给我的不仅是技术提升,更是一场思维方式的蜕变。现在回想起来,我的成长主要体现在这些方面:
设计思维的觉醒
以前写代码总是直接开干,现在终于养成了先设计再动手的习惯。每次打开IDE前,我都会在白纸上画类图,思考每个对象该承担什么职责。最明显的变化是:以前写代码常常返工,现在一稿通过率提高了60%!特别是学会了预留扩展点,有次PTA作业新增需求,我仅用半小时就完成了调整。
学习方式的革命
最大的突破是找到了适合自己的学习节奏:
- 遇到问题先啃官方文档,而不是到处问人
- 写个小原型快速验证想法,避免纸上谈兵
- 通过博客把零散知识织成知识网
这门课像一面镜子,照见了我的不足,也映出了成长的可能。从最初的类设计手忙脚乱,到期末能从容设计电梯调度系统,这种看得见的进步,比任何分数都珍贵。感谢老师没有直接给答案,而是引导我们思考——那些debug到凌晨的痛苦时刻,恰恰是成长最快的时光。
致谢与展望:
本课程为我打开了面向对象编程的大门,特别感谢:
- 老师在课堂上的电梯系统案例分析
- 助教在实验课上的调试技巧指导
- 同学在博客互评中提出的宝贵建议
虽然JavaFX等方向仍需加强,但已建立起扎实的面向对象基础。未来计划:
- 继续完善计算器项目,增加历史记录功能
- 学习Spring框架深化IOC理解
- 参与开源项目实践设计模式
本课程不仅是技术学习,更是思维方式的锻造。这段经历将成为我编程生涯的宝贵财富,指引我在面向对象的道路上行稳致远。

浙公网安备 33010602011771号