面向对象总结性Blog_03:期末总结

一、前言:对课程整体的回顾与概览

本学期的Java课程是我正式接触面向对象程序设计(OOP)的开始。作为一名软件工程专业的大一学生,在过去的学习中,我主要掌握了C语言等过程式编程语言,而Java课程的学习,不仅是语法的转变,更是编程思维的全面提升。从结构化到面向对象,Java让我初步体会到了“构建系统”而不仅仅是“写程序”的思想。

整门课程的教学活动包括了多个维度:线下讲授课程、PTA在线作业平台、课程实验、JavaFX图形界面实验、博客撰写任务、阶段性测验等,学习任务繁重而系统,尤其需要时间投入和思维转变。

1. PTA作业工作量与难度

PTA平台上的作业题目覆盖了从Java基础语法、类与对象、封装、继承、多态,再到接口、集合框架、文件操作等各个知识点。题量大且递进性强,大多数题目都需要动手实现多个类、掌握构造函数、覆盖方法、逻辑控制,尤其是期中之后的题目,比如“雨刷系统功能扩展”、“航空货运管理系统”等,已经不仅仅是语言语法的练习,更要求具备面向对象建模的能力。

这些作业难度适中但任务繁重,经常需要我多次调试、反复查阅API文档才能完成,尤其在处理继承关系或多态调用时,稍有疏忽就可能导致输出不一致或者运行时异常。但也正是这种练习,使我对Java语言的特性有了更为深入的掌握。

2. 实验部分的体验

课程实验注重图形界面与综合项目能力的训练。其中JavaFX实验让我第一次尝试将前端界面与Java代码结合,在冰箱装动物、电器嵌动物的实验中,不仅需要构建类之间的关系、实现多态性,还要用FXML或纯Java代码实现图形显示与交互。

实验工作量较大,尤其是在图形设计与布局方面,由于不熟悉JavaFX组件结构,前期我经常因为一个按钮定位或事件绑定调试很久。但完成实验后的成就感非常强烈,我清晰地认识到图形界面设计是程序开发的重要一环,也更理解了MVC思想的初步体现。

3. 线上与线下课程的协调

线下课程讲授是理解概念的核心环节,教师会引导我们梳理知识框架,演示实际代码,讲解细节陷阱,而线上学习(如超星平台)更多是辅助性复习与拓展知识的手段。线上线下配合良好,尤其是部分课后拓展视频与随堂小测,帮助我巩固知识。

整体来看,这门课程覆盖面广,任务密集,但也正因为它系统全面,使我对Java语言的理解更为扎实,同时初步建立了面向对象编程的基本思维模式。


二、面向对象技术总结

面向对象程序设计(Object-Oriented Programming, OOP)是本门Java课程的核心理念。课程通过PTA练习、实验项目与课堂讲授,逐步引导我理解并掌握了封装、继承、多态、抽象类、接口、集合框架、异常处理、JavaFX图形界面等关键知识点。以下将逐项进行总结,并结合我的学习体验与体会,分析掌握情况与不足之处。

1. 封装(Encapsulation)

封装是我在C语言中几乎没有接触过的概念。在Java中,我逐渐理解到“类就是对现实事物的抽象,而对象的状态应当被保护”的设计哲学。

在实际PTA作业中,比如“航空货运管理系统”、“魔方问题”中,封装体现在我们要将类的属性设置为private,并通过getter、setter方法访问和修改它们。这让我明白了封装不仅是语法约定,更是为了程序的安全性、模块的独立性服务。

封装也促使我养成了模块化编程的习惯:每个类只负责管理自己的数据和逻辑,外部只通过提供的方法访问。这种设计思想,在面对稍复杂的系统建模时非常有帮助。

2. 继承(Inheritance)

继承是Java语言提供的重要机制,用于类之间的代码复用与层次结构构建。

在“点线面问题重构”以及“魔方问题”中,我通过编写Point、Line继承自抽象父类Element,以及RubikCube继承自抽象立体类,体会到了继承所带来的代码简洁性与统一接口设计的优势。

特别是在“航空货运管理系统(继承与多态)”项目中,为“客户类型”和“货物类型”分别设计了父类与多个子类,使我切身体会到了继承在处理“共性+个性”问题时的强大能力。但在使用继承时也发现,如果设计不合理,类之间会过度耦合,因此我也意识到继承应当适度,避免滥用。

3. 多态(Polymorphism)

多态性是我认为Java中最优雅且实用的特性之一。它允许我用父类引用指向子类对象,并在运行时动态调用实际对象的方法。

通过多个练习,如:

Element element = new Point();
element.display();

我深刻理解了“写代码面向抽象而非具体”的原则。多态的使用,使得我可以统一处理不同类型的对象,比如在容器类中保存ArrayList,然后通过统一的display()方法进行输出,不需要分类型处理,大大简化了逻辑。

不过,我也发现自己在刚开始使用多态时容易出错,比如忘记方法声明为abstract、忘记在子类中正确覆盖toString()方法等,这些问题在调试中逐步得到解决。

4. 抽象类与接口

抽象类和接口是实现多态的关键工具之一。在课程中,我们主要通过抽象类来设计公共父类(如Element),让子类重写抽象方法以实现具体行为。

我学到了抽象类不仅可以统一接口,还可以在其中定义公共逻辑(如构造方法、通用函数),而接口则更侧重于行为的规范。在课堂讲解的“飞行器接口”示例中,多个类实现了同一个接口,从而具有统一的行为定义,这让我意识到接口是未来构建大型系统中极其重要的部分,也是实现依赖反转(DIP)的核心机制。

不过,我在使用接口时仍存在一些不足,比如接口和抽象类的适用场景区分不够清晰,设计类结构时容易犹豫用哪个,需要更多的项目实践来巩固。

5. 集合框架

集合框架是我接触 Java 后非常欣喜的一部分,它远比 C 语言的数组灵活。在“点线面问题再重构”与“航空货运管理系统”中,我使用ArrayList存储多种对象,并通过for-each循环进行遍历。

掌握了集合后,我不仅能更好地处理“多个对象”的逻辑需求,也开始尝试使用Map进行键值对存储(比如临时存储用户数据),了解了Set用于去重等操作。

集合相关类库庞大,学习周期较长,目前我仍主要集中在ArrayList、LinkedList的基本使用上,对HashMap、TreeMap等了解尚浅,这也是我今后需要补足的知识点。

6. 异常处理

异常处理是我认为 Java 最体现工程化的一部分特性。在实验中,如果不对输入内容进行格式校验或异常捕获,程序极容易中断崩溃。

通过学习try-catch-finally结构,我掌握了如何让程序更健壮地应对用户输入错误。比如在航班订单录入中,当发现重量超载时,程序应及时中止并返回错误信息,而不是继续执行。

我也尝试过自定义异常类来处理特殊情况,这让我理解到异常不只是“捕错”,更是程序逻辑中一种“分支控制方式”。

目前我掌握的主要是异常的捕获与处理,对 Java 的异常体系(如运行时异常 vs 编译时异常)了解还不够系统,需要进一步巩固。

7. JavaFX 图形界面开发

JavaFX 是这门课程后期引入的内容,也是我第一次接触图形界面开发。相比之前的命令行程序,JavaFX 提供了丰富的图形组件与事件绑定机制,让我感受到了 GUI 程序的魅力。

实验中,我通过编写代码展示“电器与动物”的关系,实现了按钮事件触发、动画播放、文字说明显示等功能,逐步掌握了界面布局、事件响应、Scene 和 Stage 的使用。

JavaFX 入门门槛略高,尤其是在控件层级嵌套与布局管理上容易出错。但通过不断调试,我逐步掌握了核心组件如 VBox、GridPane、Label、ImageView 等的使用方法。

小结
总的来说,这门课程中涉及的面向对象技术我已基本掌握,能够灵活应用于项目实践中,尤其是在类结构设计、继承、多态使用、集合管理方面进步较大。但也还存在一些技术短板,如接口体系理解不够深入、异常处理结构应用还不够优雅、JavaFX界面编程尚需练习等。接下来的学习中,我会继续补足这些知识点,并尝试在更多项目中加以应用。


三、采坑心得:学习中的弯路与经验反思

学习Java是一段从“写程序”向“设计系统”转变的过程,这个过程中我走过不少“坑”。有的是语言语法上的理解误区,有的是逻辑思维转不过弯,更有的是因为没有良好的编程习惯所导致的调试困难和重复返工。在这里,我将梳理自己在课程各环节中遇到的问题,以及从中吸取的经验教训。

1. 忽视设计,直接上手编码

刚开始做 PTA 作业时,我经常看到题目后就急于打开 IDE 开始写代码,认为“先写起来再说”。结果经常写到一半发现类之间关系没理清、数据流转混乱、变量冗余、方法名冲突。尤其是在多类协作的题目中,比如“航空货运管理系统”,因为一开始没设计清楚类结构,导致写到中期只能不断重构,前面写的代码频繁删改。

经验总结:
Java不是简单的“写出功能”,而是对现实问题的建模。做题之前,应该先画出类结构图,明确每个类的职责和关系,再动手编码。这个习惯的建立,大大提升了我之后完成实验与大型作业的效率和质量。

2. 抽象类与接口混淆使用

在继承与多态相关作业中,我曾错误地把所有父类都定义为抽象类,甚至试图让多个类多重继承,这在 Java 中是不允许的(Java 不支持多重继承,但支持多接口实现)。此外,在实现一个接口时我曾忘记实现其全部方法,导致编译报错,查错耗时。

经验总结:

抽象类用于描述“是什么”(有共性属性),接口用于描述“能做什么”(一组行为)。

接口是能力的集合,适合行为标准化;抽象类更适合建立继承体系。

遇到设计困惑时,可以先写一个简单 UML 类图理清职责。

3. 构造函数重载与默认构造出错

课程中很多题目需要定义多个构造方法,例如默认构造函数与参数构造函数并存。有一次我只写了带参数的构造函数,结果在主函数中通过无参构造创建对象时报错。类似地,在继承结构中调用父类构造方法忘记使用super(),也是我初学时常犯的错误。

经验总结:
构造函数在继承体系中尤其重要,子类必须明确如何初始化父类。需要注意:

一旦手动定义了有参构造函数,系统不会自动提供默认无参构造函数;

在子类构造方法中,需明确调用super(...),以确保父类部分被正确初始化。

4. 对访问修饰符理解不清

在封装的练习中,我曾将属性定义为public,导致类的状态可以被外部任意修改,违反了封装原则。也曾因为将构造器设置为private,使得类在主函数中无法被创建对象,调试了半天才发现问题所在。

经验总结:

一律使用private封装属性,配合public的get/set方法进行访问;

方法默认public,但需要根据调用场景决定是否使用protected或default权限;

在多人合作时尤其要遵守访问控制规则,防止类之间相互“穿透”。

5. 集合类操作中下标越界与类型不匹配

在处理ArrayList时,我曾多次出现下标越界错误(IndexOutOfBoundsException),尤其是在遍历时删除元素。还曾因为未指定泛型类型导致编译器警告、运行时类型转换错误。

经验总结:

遍历时删除元素应使用迭代器(Iterator)或倒序遍历;

泛型不能省略,尽量明确ArrayList,增强类型安全性;

遇到类型强转警告时,应重新审视集合中对象的真实类型来源。

6. JavaFX 初期入门困难

JavaFX 是课程中最具挑战性的部分之一。初学时,我不熟悉布局管理(VBox, HBox, GridPane),导致界面混乱。此外,事件绑定、组件之间通信不清楚,出现按钮无法响应、动画无法播放的问题。

经验总结:

界面布局应先手绘草图,避免一边写一边乱改;

明确每个组件的作用和结构,使用嵌套容器分层组织;

控件事件应以 Lambda 表达式绑定为主,统一逻辑清晰明了;

调试建议配合 SceneBuilder 可视化工具学习,降低上手难度。

7. 对 API 文档依赖不足

刚开始写作业时,习惯性靠百度找用法,很少查阅 Java 官方文档。后来逐渐意识到,很多误解和低效的写法其实在 API 文档中已有清楚说明。

经验总结:

熟悉使用 IntelliJ IDEA 的快捷键(如Ctrl+Q 查看文档、Alt+Enter 快速修复);

主动查阅 Java SE 官方文档([(https://docs.oracle.com/javase/8/docs/api/)]),有助于快速准确地理解类的方法定义和用法;

良好的文档阅读能力,是成为专业程序员的前提。

小结

走过这些“坑”之后,我逐渐认识到,学习编程不仅仅是学会语法,更是一种思维方式的训练:要学会结构化分析问题,要有耐心调试代码,要注重规范和可维护性。每一次踩坑虽然让人沮丧,但也逼着我反思、优化、进步,是我整个学习过程中最宝贵的财富。


四、改进建议及总结

通过一整个学期的学习,我从一个对面向对象编程一无所知的新手,逐步成长为可以独立分析并构建中小型 Java 应用系统的学习者。回顾课程的全过程,课程设计整体严谨、内容安排合理,教学模式结合线上线下资源,覆盖面广且实践性强。以下从课程组织、教学内容、作业安排和学生学习角度出发,提出若干思考与建议,并做出整体性总结。

1. 对课程整体的综合评价

内容系统性强,理论与实践并重
课程从 Java 语法基础讲起,逐步过渡到面向对象的三大特性(封装、继承、多态),再到高级特性(抽象类、接口、异常、集合框架),最终进入图形用户界面(JavaFX)与综合系统建模。课程结构呈现出“螺旋上升、由浅入深”的特点,有助于知识内化和逻辑系统的构建。

同时,大量作业和实验要求学生动手完成项目,强化了实际应用能力,这对我们的编程技能成长具有直接推动作用。

教学节奏紧凑,课堂互动适中
线下课程节奏把握较好,教师讲解有条理,能够结合案例引出抽象概念,尤其是在面向对象三大特性方面的讲授,通过生活化类比和代码对比,帮助我理解了“类的本质不是语法结构,而是模型思维工具”。

但同时,由于教学内容复杂且进展较快,有时对个别概念的讲解略显抽象,建议适当增加一些可视化的类图、交互动画、流程图等辅助讲解方式,尤其是在讲“多态”、“接口”、“JavaFX 事件处理”等难点时,有助于提升理解效率。

2. 作业与实验安排的建议

PTA作业递进性强,是非常重要的学习环节
PTA平台的作业由浅入深,题型设计体现了对学生抽象建模和编码实现能力的逐步培养。前期作业注重语法规范与基础能力训练,中期则开始引入继承、多态的系统性题目(如点线面、魔方问题),后期则转向综合性强的项目设计(如航空货运管理系统),具有很强的教学逻辑。

建议:

在每个章节后,可以增加“反思题”或“简答题”,帮助学生总结设计思路,提升对结构的认识。

部分题目的测试点过于隐蔽,调试困难,建议增加提示信息或样例数据说明,减少因格式误差带来的调试压力。

实验内容创新度高,但上手门槛略高
JavaFX 图形界面实验是整门课程最具挑战性的部分,也是最具成就感的环节。通过实际操作按钮、控件、图层,我不仅学到了 GUI 编程基础,也初步理解了 MVC 架构的思想。

总结
整门Java课程不仅让我掌握了一门现代编程语言,更重要的是,它引导我从过程式编程思维转向了面向对象建模思维,使我初步具备了将现实问题结构化、抽象化并实现为可维护程序系统的能力。

我从一开始只会“写语句”的新手,成长为能够独立思考类设计、灵活运用继承与多态、处理复杂数据结构、甚至开发简单图形界面应用的学习者。每一次作业与实验的完成,都是对认知的挑战与提升。

这门课程让我意识到,软件开发不是“代码技巧的堆砌”,而是思维模式的塑造和工程能力的积累。未来,我将继续在更复杂的项目中锤炼自己,在实践中深化理解,向成为一名真正具备系统思维与代码表达能力的开发者迈进。

posted @ 2025-06-22 20:54  Asukaaa  阅读(33)  评论(0)    收藏  举报