对面向对象程序设计课程的总结
一、前言:
在这门课程学习中,课程分为线上学习(学堂在线)和线下学习,作业情况为:共布置了三次blog作业(包括这次),十一次PTA作业(其中五到七次为第一次电梯程序设计迭代,八、九次为航空货运管理系统程序设计迭代),五次实验作业。个人认为课程的工作量主要集中在PTA和实验上,难度除第一轮电梯程序设计的逻辑复杂外,其他并不算太高,但由于个人语言表达能力有限,blog的总结花费了一定时间。
二、对面向对象技术的总结:
(一)封装技术总结:
1、所学内容:通过本门课程的学习,理解了封装的核心是将数据与操作封装在类中,通过访问修饰符(private/protected/public)控制成员变量的访问权限。在后续完成PTA和实验作业时,将类的属性设为 private,后续通过 getter/setter 方法来访问这些私有属性,体会到封装技术对数据安全性的保障作用。
2、技术认知:在后续的学习中,理解了封装的本质是“信息隐藏”,以达到程序设计高内聚,低耦合的目的,进而提升代码的可维护性。
3、欠缺和不足:在本次课程的学习中,还无法准确判断什么时候该用封装技术,只能将所有类的属性都设为private,但很多时候其实是不必要的。
(二)继承与多态应用总结:
1、所学内容:通过本门课程的学习,理解了继承是通过 extends 关键字实现类的复用,如在 PTA 有关形状继承的作业中,定义 Shape 父类,派生出 Circle、Rectangle 等子类,重写 getArea () 方法实现多态,体会到了继承和多态技术的应用是如何提高代码的复用性、扩展性和灵活性。
2、技术认知:在后续学习中,理解了多态的核心是 “同一接口,不同实现”,如通过父类引用调用子类方法时,运行时动态绑定实现不同行为。PTA 中 要计算不同图形面积时,使用 Shape父类引用指向Circle、Rectangle等子类对象,根据不同的形状来计算对应面积,体现了多态的灵活性和继承的复用性。
3、欠缺和不足:在后续学习中,发现自己对抽象类与接口的多态应用场景区分还不够清晰,在PTA “航空货运管理系统” 中,曾误用抽象类实现多态接口,导致代码扩展性不足,后续通过查阅资料才明确 “抽象类用于代码复用,接口用于行为定义” 的原则。
(三)集合框架与异常处理总结:
1、所学内容:在本门课程的学习中,通过PTA和实验的练习掌握了集合框架中ArrayList、HashMap 的底层实现与常用操作,异常处理方面,掌握了通过try-catch-finally捕获IOException,用 throws 声明异常。
2、技术认知:在后续学习中,理解了集合框架的泛型设计提升了类型安全性,如 HashMap<String, Student> 避免类型转换异常。异常处理的关键是区分 checked 异常(如 IOException)与 unchecked 异常(如 NullPointerException)。
3、欠缺和不足:在异常处理中,总是捕获 Exception 或 Throwable,但发现这样会掩盖实际的异常类型,难以定位问题。通过资料查找明白了应该捕获特定的异常类型。
(四)JavaFX 技术掌握情况:
1、所学内容:通过本门课程的学习,掌握了 JavaFX 的 Stage、Scene 基础结构,使用 Button、TextField 等控件布局,通过事件监听实现按钮点击逻辑,运用polygon等来设计多边形等内容。
2、技术认知:在学习中发现JavaFX与 Swing 相比,在可视化组件和图形渲染方面提供了显著的技术优势,提供了一个更加丰富和多样化的组件库,支持现代的用户界面设计,并且在 CSS 样式支持方面做得更为出色
3、欠缺和不足:在学习过程中,发现自己对 JavaFX 动画与多媒体处理能力掌握不足,在实验五中,未能实现图片过渡动画效果,需进一步学习 Timeline、Transition 等动画 API。
三、面向对象技术学习采坑心得总结:
(一)PTA作业踩坑心得:
电梯程序踩坑心得:
1、程序设计逻辑复杂导致超时:最初采用逐层移动的循环(如从 1 楼到 7 楼循环 7 次),导致大量无效计算,程序超时。后采用直接移动到目标楼层,过程中直接打印楼层信息的方法,减少了代码的无谓循环,提醒自己在程序设计时应该尽量减少不必要的循环操作以避免代码运行时间过长。
2、在程序设计中,findtargetfloor()和decideDirection()方法逻辑复杂,嵌套条件过多,可读性差,原因是采用了大量if-else语句的使用,导致逻辑过于复杂。
3、出现电梯状态(移动 / 停止)和方向在请求处理后未正确更新,导致后续逻辑错误的问题,发现代码在不同的位置会导致不同的运行结果,因此,应该明确什么时候应该更新对象的状态来避免类似问题。
航空货运管理系统程序踩坑心得:
1、类职责模糊导致代码耦合:最初将货物体积重量计算放在Order类而非Product类中,导致Order类承担过多职责,后续修改计算规则时需同时调整多个类。从此明白在设计程序前应该想清楚每个类的职责避免出现此类问题。
2、在读取货物尺寸时,未处理输入中的换行符(在scanner.nextInt()后未调用scanner.nextLine()清除缓冲区),导致后续scanner.nextLine()读取到错误的字符串。在后续代码编写中进行输入处理时严格遵循 “数值输入后必用nextLine()清空缓冲区” 原则。
(二)实验踩坑心得:
实验大象放冰箱踩坑心得:
1、在使用归并排序、冒泡排序等方法对电器中的动物进行排序时,发现多次排序结果相同,原始数据被修改。发现原因在于排序方法直接操作了电器类(Electric)中的原始动物列表(animals),导致每次排序后列表顺序永久改变,后续排序基于修改后的数据进行。因此,明确了在要展示不同排序结果时,应该在每次排序前创建一个列表副本,避免在上次排序后再次排序。
2、在运行程序中,出现子类无法访问父类的成员变量(如Electric中的animals列表),提示 “无法访问私有成员”的问题,后发现没必要将父类的属性设为private,将父类成员变量的访问修饰符改为protected后解决问题。
3、动物子类实例化时抛出编译错误,提示 “无法找到父类无参构造函数”,查找资料后发现问题出在编译器自动生成的无参构造函数仅在类未定义任何构造函数时存在,因此若父类无无参构造函数,则必须显式调用有参构造或创造一个无参构造。
对本门课程的改进建议及总结:
一、课程总体总结:
本课程系统传授了面向对象编程的核心概念与 Java 技术体系,通过 PTA 作业、实验项目和课堂讲授的有机结合,有效提升了编程实践能力。特别是多态、集合框架等章节的案例设计贴近实际应用,帮助我建立了面向对象的编程思维。
二、改进建议:
个人感觉实验内容方面过于单调,实验二到五都是在对大象装冰箱这个问题进行迭代,在逻辑思维方面没有特别大的改变,建议可以多方面设计多个实验,避免这个问题。

浙公网安备 33010602011771号