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

前言

在这个学期的Java面向对象程序设计课程的学习旅程中,我学习到了许多的知识。这门课程的学习之旅也充满挑战。课程包括Blog作业,PTA作业,实验,线上课程以及线下课程。
在Blog作业方面,第一次的迭代作业有一定的难度,尤其是第一次的考查了有关算法方面的知识。但只要第一次的完成,之后的就相对轻松了。总体来说,Blog作业是有一定的工作量的,除了要完成编程作业,还要写Blog作业,难度也是有一些的。
在PTA作业方面,PTA作业注重考查我们的编程能力,通过大量的编程作业,提高我们的编程能力,让我们更好的掌握语法等知识,有一定的工作量,难度适中。
在实验作业方面,实验作业将理论与实际相结合,也是通过迭代的形式让我们完成,总体来说工作量不大,难度也不大。
在线上线下课程方面,线上课程提供了丰富的学习资源,讲了线下老师不主讲的Java语法知识。线下课程则通过教师的面对面讲解与互动,帮助我们深入理解重点难点知识。线上课程的学习节奏可以根据个人情况灵活调整,线下课程则注重面向对象程序设计与答疑解惑。整体来看,线上线下课程的结合,在工作量与难度上形成了良好的互补,确保我们全面、深入地掌握课程内容。
总体而言,课程的难度适中,但需要投入大量的时间和精力去学习和实践。通过这门课程,我不仅掌握了面向对象编程的基本理论,还提升了编程能力和问题解决能力。以下是对课程内容的详细总结。

面向对象技术总结

(一)封装

封装是面向对象编程的基础特性,通过将数据和操作数据的方法封装在类中,实现了数据的隐藏与保护。数据隐藏可以保护对象的内部状态,防止外部直接访问和修改,从而保证数据的安全性和一致性。接口暴露则为外部提供了与对象交互的途径,使得对象的功能可以被其他代码使用。在实际编程中,我学会了使用 private 修饰符来隐藏属性,使用 public 修饰符来暴露方法。通过封装,代码的可维护性和可扩展性得到了很大提升,因为修改内部实现不会影响到外部使用。通过PTA作业和实验,深刻体会到封装的重要性。例如将类的属性设置为私有,通过公共的 getter 和 setter 方法进行访问和修改。它将对象的属性和方法封装在一起,隐藏对象的内部实现细节,只暴露必要的接口给外部使用。在Java中,通过访问修饰符来实现封装,有效地提高了代码的安全性和可维护性。在编写代码时,更加注重合理设计类的封装,减少不必要的信息暴露。

(二)继承

继承允许子类继承父类的属性和方法,实现代码的复用与扩展。在课程学习中,通过完成涉及继承关系的 PTA 作业和实验项目,我掌握了如何定义父类和子类,以及子类对父类方法的重写。例如,在点线面问题重构(继承与多态)这一题中,题目要求我们对题目中的点Point类和线Line类进行进一步抽象,定义一个两个类的共同父类Element(抽象类),将display()方法在该方法中进行声明(抽象方法),将Point类和Line类作为该类的子类。在做了这么多题目之后,我认识到继承可以减少代码重复,提高开发效率。子类可以直接使用父类的代码,而无需重新编写,同时还可以根据需要添加新的功能或覆盖父类的方法。然而,在使用继承时,我也注意到了一些需要注意的地方。例如,继承层次不宜过深,否则会导致代码结构复杂,难以维护。此外,过度使用继承可能会导致类之间的耦合度过高,影响代码的灵活性。,在因此设计类的继承关系时,需要权衡继承带来的好处和潜在的问题。但在多重继承关系较为复杂的情况下,我有时会出现混淆,对继承链上方法的调用顺序和属性的覆盖规则理解不够透彻,这是后续需要加强的地方。

(三)多态

多态是面向对象编程的又一重要特性,它允许同一个接口或父类的引用指向不同的子类对象,并在运行时根据实际对象的类型调用相应的方法。在 PTA 作业中,我多次遇到了多态的应用场景。例如,在一个动物电器管理系统中,我定义了一个 Animal 接口,其中包含了一个 sound()方法。然后,我创建了Elephant,Lion 等类实现了这个接口,并在 sound()方法中给出了不同的实现。在主程序中,我使用 Animal 类型的数组来存储不同类型的动物对象,当调用 sound()方法时,会根据实际对象的类型发出不同的声音。
通过这个练习,我理解了多态的两种主要形式:方法重载和方法覆盖。方法重载是在同一个类中定义多个同名方法,但参数类型或数量不同,它在编译时根据参数列表来确定调用哪个方法。方法覆盖则是在子类中重新定义父类的方法,它在运行时根据对象的实际类型来调用相应的方法。多态使得代码更加灵活和通用,可以编写出适用于多种类型的代码,而无需针对每种类型都编写单独的代码。这大大提高了代码的可复用性和可扩展性。

(四)抽象类

抽象类为子类提供了一个通用的框架,其中可以包含抽象方法和具体方法。在PTA作业和实验中,我学会了如何定义抽象类和抽象方法,并通过子类继承抽象类来实现抽象方法。例如,在实验中,通过将不同的动物的相同属性和方法抽象成一个动物抽象类。我掌握了抽象类在代码架构设计中的作用,我认识到抽象类的作用是为子类提供一个通用的框架和规范,使得子类能够按照一定的规则进行实现。抽象类可以包含抽象方法和具体方法,抽象方法必须在子类中被实现,而具体方法则可以直接被子类继承使用。使用抽象类可以提高代码的可维护性和可扩展性,因为当需要添加新的子类时,只需要继承抽象类并实现抽象方法即可,而无需修改已有的代码。但对于抽象类与接口的选择和应用场景区分,还需要更多的经验积累。

(五)接口

接口定义了一组规范,实现接口的类必须实现接口中的所有方法。在实验和作业中,我多次使用接口来实现不同类之间的功能扩展和行为约束。例如,在设计可排序的类时,实现 Comparable 接口来定义排序规则。通过实验,我我理解了接口的作用是定义一组行为规范,供不同的类实现。接口可以实现多继承,一个类可以实现多个接口,从而具备多种行为能力。使用接口可以提高代码的灵活性和可扩展性,因为接口定义了行为的契约,而具体的实现可以由不同的类来完成。在实际编程中,接口通常用于定义服务接口、回调接口等,使得代码更加模块化和易于维护。但在接口的组合使用以及接口与抽象类的协同应用方面,我还存在知识盲区,需要进一步学习。

(六)集合框架

Java 集合框架提供了丰富的数据结构和算法,方便我们进行数据的存储和处理。在课程学习中,我掌握了ArrayList,LinkLIst 等常用集合的使用方法,通过 PTA 作业和实验,通过使用集合,可以方便的添加和删除对象。然而,对于集合框架中的一些高级特性,如集合的并发操作、自定义比较器的复杂应用等,我还需要深入学习和实践。

(七)异常

异常处理机制用于处理程序运行过程中出现的错误和异常情况。在课程中,我学习了如何捕获和处理异常,以及自定义异常类。通过 PTA 作业和实验,我能够合理地使用 try - catch 语句块来处理可能出现的异常,提高程序的健壮性。理解了异常处理的重要性,它可以避免程序在出现异常时直接崩溃,而是能够给出友好的提示信息或进行相应的恢复操作。Java 提供了丰富的异常类,如 RuntimeException、IOException 等,它们分别表示不同类型的异常情况。在实际编程中,需要根据不同的异常情况选择合适的处理方式,如捕获异常、抛出异常等。同时,还需要注意异常的层次结构,尽量捕获具体的异常类,而不是捕获通用的 Exception 类,以提高异常处理的准确性。但在一些复杂的异常处理场景中,如异常的传播与链式调用、异常处理与业务逻辑的平衡等方面,我还需要进一步探索和学习。

(八)JavaFX

JavaFX 是一个用于开发富客户端应用程序的框架,它提供了丰富的图形用户界面组件和多媒体支持。在课程中,我通过一个简单的 JavaFX 项目学习了它的基本用法。例如,我创建了一个简单的登录界面,使用了 Stage、Scene、Button、TextField 等组件来构建界面,并通过事件处理机制实现了登录功能。
通过动物电器项目和航空货物管理项目,我初步了解了 JavaFX 的架构和组件使用方法。JavaFX 的组件层次结构清晰,可以通过组合不同的组件来构建复杂的界面。同时,JavaFX 提供了强大的事件处理机制,可以方便地处理用户的输入事件,如按钮点击、文本输入等。然而,JavaFX 的学习曲线相对较陡,需要花费一定的时间来熟悉它的 API 和布局管理器。在实际开发中,JavaFX 可以用于开发各种桌面应用程序,如办公软件、游戏等,具有广阔的应用前景。
image

采坑心得

在学习过程中我也踩过一些的坑。
1.代码规范问题,在课程初期,我对代码规范重视不足,代码格式混乱,变量命名不规范,导致后期代码阅读和维护困难。同时代码注释这一问题,我在写代码中写注释写的比较少,导致我之后看我自己写的代码经常看不懂。所以以后写代码时一定有命名规范已经写注释!!!
2.对题目的需求不清楚。在后期PTA作业由于题目变得复杂,以及自己的审题不仔细这些问题,我的题目的需求不清楚,导致需要重新构思,之前写的代码很多都需要修改,因此浪费了大量的时间。
3.逻辑错误排查。在完成复杂的编程任务时,经常会出现逻辑错误,而排查这些错误往往需要花费大量时间。例如,在一个实验项目中,实现数据排序功能时,由于逻辑判断错误,导致排序结果不正确。最初,我盲目地修改代码,却始终无法解决问题。后来,我学会了使用调试工具逐步跟踪代码执行过程,分析变量值的变化,最终定位并解决了问题。通过这次经历,我掌握了有效的错误排查方法,提高了解决问题的效率。

改进建议及总结

通过这门 Java 面向对象课程的学习,我系统地掌握了 Java 编程的核心知识和面向对象编程技术,从语法基础到高级特性,从理论学习到实践应用,每一个环节都让我收获颇丰。但对于JavaFX这一块内容,由于是翻转课堂的形式,虽然是希望学生自己上去讲,培养学生能力,但基本上只掌握了自己要讲的内容,而且一节课讲的内容多而且越到后面越难,很难学懂。课堂上学不到很多东西。
以上是我对课程的总结。

posted @ 2025-06-16 21:34  周凌建  阅读(34)  评论(0)    收藏  举报