第三次Blog-课程总结

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

前言

说实话,一开始接触这门课的时候,就觉得这门课难度很大,课程安排特别紧凑,每周都像在赶作业,前脚刚交完这周的作业,后脚新的知识点就跟着来了,完全不给人喘息的机会。这种快节奏的学习,真的时刻提醒着我,得绷紧神经,稍不留神就容易掉队!​

拿 PTA 作业来说:

别看每次布置的题量不算大,可每一道都跟这周学的知识点息息相关。像学完类的封装和单一职责那阵子,PTA作业里就是各种用类的封装性和单一职责进行拆分,要是上课没听懂,课后不琢磨,根本无从下手。而且这作业难度设计得 “刚刚好”,属于那种努努力能做出来,但又得动点脑筋、把知识灵活运用才行。我就吃过亏,有一回想着 “还有两天才截止,不着急”,结果临到最后关头,对着题目一直死磕,代码写得乱七八糟,差点没按时交上,从那以后我不敢再拖延了。每次做完作业,看着代码顺利通过测试,那种把课上学到的知识转化为实际操作的成就感,真的超满足,也让我明白实践真的太重要了!​

实验作业更是让人又爱又恨:

整个实验就像在搭积木,从最基础的面向对象编程开始,一点点往上加新内容,继承、多态、抽象类、接口…… 随着实验需求不断升级,之前写好的代码就得跟着 “升级改造”。我印象最深的就是做大象装冰箱,之前写代码是抱着只要能通过就行的原则,不管后续的修改等,随着实验的迭代,这下可好,原本的代码结构根本撑不住,只能硬着头皮一遍遍重构。在这个过程里,我算是深刻体会到了什么叫单一职责原则和开闭原则,要是代码写得不够规范、扩展性差,到后面修改起来简直是灾难,每一次改代码都感觉在 “渡劫”,但熬过之后,编程思路也清晰了不少。​

课程设置:

课程设置上的线上线下联动模式,一开始我还有点疑惑,觉得会不会多此一举。结果学下来才发现,这简直是 “王炸” 组合!线上课程每节时间不长,十几二十分钟,特别适合利用一些碎片时间看。老师会把知识点掰开了、揉碎了讲,还配着小例子,像讲设计模式的时候,单例模式的动画演示,一下就让我明白了为啥一个类只能有一个实例。线下课就更 “硬核” 了,老师会现场让我们编写代码并且要检查,把线上那些基础概念再深挖拓展。要是只听线上课,总觉得知识点不够扎实;只听线下课,又会跟不上节奏,只有两边都认真学,学习效率才会 “蹭蹭” 往上涨!​

Blog 作业:

一开始我觉得就是个任务,随便写写应付了事。后来慢慢发现,这简直是个 “宝藏”!每次写完一个阶段的 Blog,回顾自己学过的内容,才惊觉原来踩过这么多坑。分析完才意识到自己对题目的理解得不够透彻。通过这样的复盘,我清楚知道了自己的不足,也找到了改进方向,后面学习的时候就更有针对性了,感觉学习之路都变得明朗了许多!

面向对象技术总结

类的封装

认知:

将数据属性与操作数据的方法行为封装在类中,通过访问修饰符号 private,protected,public 控制外部访问,隐藏内部实现细节。例如,类的属性用 private 修饰后,外部无法直接修改,只能通过类提供的 getter,setter 方法操作。

作用:

数据保护:防止外部非法修改数据,如用 private 修饰年龄属性,避免传入负数。
简化接口:外部仅需通过方法调用使用功能,无需关心内部逻辑(如航空货运的计算价格方法,无需知道价格计算细节)。
代码维护:内部逻辑修改不影响外部调用,如修改属性存储方式,只需保证方法签名不变。

继承

认知:

子类继承父类或基类的属性和方法,可扩展新功能或重写父类方法。Java 中通过 extends 实现,且仅支持单继承即一个子类只能有一个父类。

作用:

代码复用:子类直接使用父类功能,如 Elephant 类继承 Animal 类的 getName 方法。
类的层次结构:形成 “is-a” 关系(如 “大象是动物”),使代码结构更清晰。
扩展便捷:新增子类时无需修改原有代码,如电商系统中商品父类下,新增电子产品子类只需继承并添加特有属性。

多态

认知:

同一方法调用在不同对象上产生不同行为,分为:
编译时多态(方法重载):同一类中方法名相同,参数列表例:类型,顺序,数量不同,编译时根据参数匹配方法。
运行时多态(方法重写):子类重写父类方法,运行时根据对象实际类型调用对应方法。

作用:

灵活性:通过父类引用操作子类对象,如 Animal animal = new Elephant (),调用 animal.roar () 时实际执行 Elephant 的吼叫方法。
接口统一:不同类对象可通过相同接口交互,如集合框架中 List 接口可存储 ArrayList、LinkedList 等实现类对象。

抽象类

认知:

用 abstract 修饰的类,不可直接实例化,需被子类继承。抽象类可包含抽象方法仅有声明,无实现和普通方法。

作用:

规范子类行为:抽象方法强制子类实现,如 Shape 抽象类定义 getArea 抽象方法,子类 Circle 和 Rectangle 必须实现该方法。
代码复用:抽象类中可封装通用逻辑,如 display 方法,子类直接继承使用。

接口

认知:

用 interface 定义的抽象类型,方法默认 public abstract,属性默认 public static final。接口支持多实现即一个类可实现多个接口。

作用:

解耦与模块化:接口定义 “能做什么”,实现类负责 “如何做”,如attackable接口定义是否具有攻击性,Elephant 和 Tiger 类分别实现。
弥补单继承限制:类可同时实现多个接口,如 Animal 类可实现 Compareble 和 attackable 接口。

集合框架

认知:

Java 中用于存储和操作数据的接口与类,位于 java.util 包。核心接口包括:
Collection:单列集合顶层接口,分为 List(有序,可重复,如 ArrayList)和 Set(无序,不可重复,如 HashSet)。
Map:双列集合,存储键值对(如 HashMap)。

作用:

根据需求选择合适集合:需快速查询用 HashMap,需有序存储用 LinkedList,需去重用 HashSet。

异常处理

认知:

程序运行时的错误事件,Java 通过异常类体系(Throwable 为顶层父类)和 try-catch-finally 机制处理。

作用:

增强程序健壮性,如文件读取时捕获 FileNotFoundException,避免程序崩溃,改为提示用户 “文件不存在”。

JavaFX

认知:

Java 的 GUI 框架,用于构建跨平台富客户端应用,支持 2D,3D 图形、动画等,替代传统 Swing。

作用:

提供现代 UI 体验,如按钮悬停动画、平滑过渡效果,可通过 FXML 和 Java 代码结合实现界面交互如点击按钮触发数据更新。

缺陷

经过这个学期的面向对象学习我发现我在集合框架、异常、和JavaFx方面存在很多问题,不能灵活的进行运用,后续学习应加重这部分的学习和多上机实践操作以提高自己在这部分的编程水平。并且在内部比较器和外部比较器这方面存在一些问题,容易混淆Comparator与Comparable的职责,如在实体类中错误实现Comparator接口,而非Comparable。在接下来的学习中,更需要对两种比较器加以区分,还是要多上机实践操作以巩固。

踩坑心得

1.不要一来就直接写代码,一定要先理解需求,并且做好设计,一定要做好设计,不然很容易写错方向。
2.算法要尽可能的简单高效,这样可以避免很多不必要的麻烦,并且可以提高效率。
3.要学会自己设计测试用例以及代码的调试,不然很难发现比较隐秘的错误,陷入循环时调试尤其重要。
4.编程是团队合作,切忌单打独斗,可以多多交流自己的观点和算法,再和其他人的进行比较。

改进建议和总结

总结

通过这学期的面向对象课程学习,我从最初对类、对象、封装等概念的模糊认知,到逐步理解并实现继承、多态、设计模式等核心思想,编程思维发生了本质性转变。最深刻的体会是:面向对象不仅是语法规则,更是一种化繁为简的架构思维 —— 通过封装隐藏细节、继承复用代码、多态应对变化,让复杂系统的设计从堆砌代码升级为区域化代码。
在实践中,PTA 作业的 “小题大做” 让我学会用单一职责拆分类,实验课的 “大象装冰箱” 重构逼着我理解开闭原则,Blog 复盘则帮我把碎片化知识串联成体系。尽管现在写代码仍会踩坑,但至少明白了为什么错 和如何改,这比单纯写出能运行的代码更有价值。

改进建议

尝试用 JavaFX 开发简易 “航空货运系统”,存储用户数据、异常处理、比较器(货物重量排序)等知识点;

posted @ 2025-06-18 16:00  翻斗花园突击手胡图图  阅读(19)  评论(0)    收藏  举报