面向对象程序设计课程全面总结

面向对象程序设计课程全面总结
一、前言:
本学期的面向对象程序设计课程是我计算机专业学习中的重要里程碑。通过系统化的训练体系,我在16周内完成了多项学习任务,形成了完整的面向对象编程知识体系。现将课程学习情况总结如下:
1.1 学习任务组成
课程主要由四个核心部分组成:
​​PTA编程作业:共完成3次大作业。第一次是电梯调度系统,设计多线程控制的电梯模拟程序;第二次是航空运输管理系统,模拟机场货运调度;第三次是综合题型,包含多种设计模式的综合应用。每一次大作业都提高了我的编程能力,更加深刻地理解Java编程中的各种原则,特别是封装、继承、多态、抽象类、接口、集合框架等各方面的相关知识。
​​博客作业:共计撰写3篇技术博客,总字数将近1万字。每篇博客需详细记录架构设计思路、测试方案、复杂度分析和反思总结。这种持续的技术写作训练显著提升了我的文档表达能力和系统性思维能力。通过博客写作,我对设计决策的思考更加深入,能够更清晰地表达技术方案和问题解决方案。
​​实验环节:完成5次动手实验,主要涵盖:
1.JavaFX图形界面开发(绘图程序)
2.设计模式实现
3.表达式树可视化
4.多线程基础训练
这些实验帮助我将理论知识转化为实践能力,特别是在设计模式和多线程方面。
​​课程参与:
线下理论课14次:系统讲解UML建模、设计模式、软件质量保障等理论知识
线上研讨课:通过线上慕课、设计评审、小组讨论等形式深化理解。线上资源提供了丰富的案例分析和设计思路,帮助我更好地理解抽象概念。

1.2 工作量分布
在上述学习任务中,线上线下的学习课程使我受益匪浅。在学习作业上,PTA耗时最多,因为其题目难度大,题目量也大;其次是实验,实验综合考察各方面知识点;最后是blog,Blog的总结令我能够充分理解学习的内容。具体时间分配如下:
PTA作业:约占总学习时间的60%,每次作业平均需要20小时
实验任务:约占25%,每次实验约需4小时
博客撰写:约占15%,每篇博客约需6小时

1.3 难度曲线分析
PTA大作业:综合来看,第一次电梯难题最难,因为当时基础不牢固的同时,面对复杂问题不能很好分析,也不知如何下手。电梯调度涉及多线程编程、资源竞争、死锁避免等复杂概念,对初学者挑战极大。后面两次作业各有特点,但都综合考察了封装、继承、多态、抽象类、接口、集合框架等各方面的相关知识。
航空运输管理系统需要处理复杂的业务逻辑和状态转换,但有了第一次作业的基础,设计思路更加清晰。第三次综合题型则更加注重设计模式的灵活应用和系统架构的设计能力。
​​实验环节:JavaFX图形编程与多线程基础实验衔接较好,但设计模式实验与主作业关联度有待加强。在JavaFX实验中,我掌握了GUI开发的基本技能,但在复杂界面布局方面还有提升空间。

二、面向对象技术深度剖析
2.1 封装与数据隐藏
通过三次PTA作业的递进式训练,我深刻理解了封装的价值。在电梯调度系统中:
将电梯状态(位置、方向、载客量)封装在Elevator类内部
通过公共方法控制电梯行为,如moveUp(), moveDown(), openDoor()等
限制外部直接修改电梯状态
在航空运输系统中:
货物信息(重量、目的地、优先级)封装在Cargo类
航班状态封装在Flight类,提供changeStatus()方法控制状态转换
封装不仅是技术手段,更是设计哲学。良好的封装能降低模块耦合度,提高系统可维护性。但在复杂场景下,封装粒度的把握仍需加强,特别是在多层继承体系中。

2.2 继承与多态
​​学习收获:
在航空运输系统中,学会了构建了继承体系,并使用多态特性允许统一处理不同货物类型。
​​不足反思:
在第三次作业中,未能充分利用多态特性处理不同题型
继承层次过深导致维护困难
接口使用不够充分,部分应使用接口的场景仍使用抽象类

2.3 抽象类与接口
​​实践心得:
学会使用工厂模式应用于实验中,比如定义抽象产品类,通过接口实现策略模式。同样的,在航空系统中使用接口定义可加载能力
​​改进方向:
更灵活使用接口隔离原则
在状态模式中应用接口替代条件语句
探索接口默认方法的实用场景

2.4 集合框架应用
根据需求合理选用集合类型:
​​ArrayList:在电梯系统中存储楼层请求序列,适合顺序访问场景;
​​HashMap:在航空系统中存储航班信息,以航班号作为键;
​​经验教训:
在第一次作业中,未考虑线程安全集合,导致并发问题
在航空系统中,错误使用HashMap导致性能瓶颈
迭代器使用不当引发ConcurrentModificationException

2.5 JavaFX技术实践
通过实验掌握了:
基础组件开发(按钮、文本框、画布)
事件委托机制
CSS样式定制
简单动画实现

三、采坑心得:
3.1 设计不足的代价
在电梯系统设计中,遭遇全面重构危机:
初期将所有逻辑集中在Elevator类
添加新功能时发现耦合度过高
​​解决方案:
采用职责链模式分解功能
定义清晰接口隔离模块

3.2 复杂度失控的连锁反应
在航空运输系统中,调度算法圈复杂度高达15,引发问题:
1.状态判断错误
2.性能瓶颈
3.测试覆盖率低
​​经验总结:控制方法规模,单一职责原则是降低复杂度的关键。设置圈复杂度阈值(v(G)≤8)作为重构指标。

3.3 多线程调试困境
电梯作业遭遇典型并发问题:
​​1.死锁场景:电梯卡在楼层间,由于同步锁顺序不当导致。
​​2.竞态条件:乘客请求丢失,因共享资源访问未同步。
核心认知:多线程调试需要系统性策略,日志应包含线程ID和精确时间戳,提升灵活性和性能。

四、课程综合性总结与改进建议
4.1 课程综合性总结
本学期的面向对象程序设计课程是我专业学习中最具挑战性但也最有收获的课程之一。通过系统化的课程设计和精心安排的学习任务,我完成了从面向过程思维到面向对象思维的范式转换。电梯调度系统、航空运输管理和综合题型这三次大作业构成了循序渐进的学习阶梯,每次作业都推动我在设计抽象、模块解耦和工程实践方面取得实质性突破。最核心的收获是建立了一套完整的设计思维框架,特别是学会了如何将复杂系统分解为职责分明的对象,以及如何在质量与效率之间取得平衡。

4.2 对教学体系的改进建议

4.2.1 课程结构与内容
课程内容方面,建议增加现代Java开发技术(如云原生、响应式编程)的介绍,帮助学生连接产业实践。在课程顺序上,UML建模内容应安排在电梯项目之前,使学生在设计阶段就能掌握建模工具。同时可以加强与其他课程的关联,如在航空运输系统作业中加入数据库存储需求,打造更完整的应用场景。

4.2.2作业设计与安排
建议优化作业难度梯度:先从基础封装开始,然后进入单线程电梯系统,再逐步过渡到简单航空系统、多线程电梯,最后是带持久化的航空系统挑战。引入结对编程机制将有助于培养学生的协作能力。同时希望为每份作业提供参考实现样例,并录制常见问题解析视频作为补充资料。

4.2.3实验环节优化
实验系统存在较大改进空间,当前的实验提交系统操作繁琐,建议升级为更友好的界面或提供在线编程环境。多线程基础训练应作为电梯单元的前置实验,让学生提前掌握必要技术。实验内容方面,JavaFX部分可结合表达式可视化项目,增加实用价值。

4.2.4课上课下组织方式
课堂上建议采用更多实时编码演示的互动教学方式,并定期邀请行业专家进行技术分享。线上资源方面,希望能建立模块化的知识点视频库,便于学生针对性复习。同时创建课程学习社区,促进学生之间的知识共享和经验交流。

4.2.5评测反馈机制
测评系统可增加代码质量维度的评估指标,如圈复杂度、重复率等。提供自动化的重构建议工具,帮助学生改进代码设计。性能分的评价标准也应更加明确,公开优化用例的期望输出作为参考。

4.3 个人学习收获总结
通过本课程的学习,我实现了三个关键转变:在思维方式上,从过程式编程转向对象职责分配;在质量意识上,建立起全生命周期的质量防护体系;在工程习惯上,养成了测试驱动、持续集成和文档即代码的专业习惯。最深刻的体会是在重构电梯系统时的认知升华:模块化设计不仅使代码量减少40%,测试覆盖率从60%提升至90%,更重要的是带来可扩展性的质变—新增电梯类型只需添加子类。
课程设计的"迭代开发-深度复盘"闭环极富成效,特别是在航空运输系统作业中,通过业务建模训练培养了我抽象复杂系统的能力。这些经历让我深刻理解到:优秀的代码不仅是机器可执行的,更是人类可理解的工程艺术品。这些经验将成为我未来软件开发职业生涯的宝贵财富。

posted @ 2025-06-17 19:36  Tlipoca  阅读(33)  评论(0)    收藏  举报