第三次blog作业
Java 面向对象编程课程总结
前言
在本学期的 Java 面向对象编程课程中,我经历了一系列富有挑战性的学习任务,包括 Blog 作业、PTA 作业、实验、线上课程以及线下课程。这些学习环节不仅让我对 Java 编程有了更深入的理解,也锻炼了我的编程能力和问题解决能力。
从工作量上看,PTA 作业和实验占据了较大的比重。PTA 作业的题目数量较多,每个作业都需要花费大量的时间去思考和编写代码。实验则更加注重实践操作,需要在规定的时间内完成特定的编程任务。线上课程和线下课程则提供了理论知识的讲解和学习,帮助我更好地理解 Java 面向对象编程的核心概念。
在难度方面,PTA 作业中的部分题目难度较高,需要深入理解题目要求并运用所学知识进行解决。例如在电梯调度问题中,需要掌握 look 算法的实现,并且要考虑各种边界情况和特殊情况,这对我来说是一个很大的挑战。实验部分的难度相对适中,但在实际操作过程中也会遇到一些问题,需要不断调试和优化代码。线上课程和线下课程的难度则相对较为平衡,通过老师的讲解和自己的学习,能够较好地掌握所学知识。
面向对象技术总结
封装
封装是面向对象编程中的一个重要概念,它将对象的属性和行为封装在一起,对外隐藏内部实现细节,只通过特定的接口进行交互。在本课程的学习中,我深刻体会到了封装的重要性。通过合理地使用封装,可以使代码更加清晰、易于维护和扩展。在 PTA 作业和实验中,我学会了如何将类的属性设置为私有,并通过公共方法进行访问和修改,从而实现了封装的效果。例如,在定义一个学生类时,将学生的姓名、年龄等属性设置为私有,并提供 getter 和 setter 方法,这样可以确保属性的访问和修改都在可控的范围内,避免了直接访问属性可能带来的问题。
继承
继承是面向对象编程中的另一个核心概念,它允许一个类继承另一个类的属性和方法,从而实现代码的复用和扩展。在本课程的学习中,我通过 PTA 作业和实验,对继承有了更深入的理解。我学会了如何定义父类和子类,并通过 extends 关键字实现继承。在继承过程中,子类可以继承父类的非私有属性和方法,并且可以添加自己的属性和方法,从而实现对父类的扩展。例如,在定义一个动物类作为父类,然后定义猫类和狗类作为子类,猫类和狗类可以继承动物类的共同属性和方法,如名字、年龄、吃、喝等,同时还可以添加自己特有的属性和方法,如猫类的抓老鼠方法和狗类的看家方法,这样不仅实现了代码的复用,也使类的层次结构更加清晰。
多态
多态是指同一个接口可以被不同的实例所实现,从而实现不同的行为。在本课程的学习中,我通过 PTA 作业和实验,对多态有了初步的认识和理解。多态的存在使得我们可以使用父类的引用指向子类的对象,从而在运行时根据实际对象的类型调用相应的方法。这种特性使得代码更加灵活和可扩展。例如,在定义一个图形接口,然后定义圆形类和矩形类实现该接口,通过图形接口的引用可以调用圆形或矩形的绘制方法,具体调用哪个类的方法取决于实际对象的类型。在 OOP8 中的第一题中,虽然难度不大,但多态的运用使得代码更加简洁和灵活,通过父类的引用调用子类的方法,实现了不同支付方式的处理。
抽象类和接口
抽象类和接口是 Java 中实现多态的重要方式。抽象类是一种不能被实例化的类,它允许定义抽象方法,这些方法没有具体的实现,需要由子类来实现。接口则是一种更加抽象的概念,它只定义了一组方法,但不提供具体的实现。在本课程的学习中,我学会了如何定义抽象类和接口,并在实际编程中合理地使用它们。通过抽象类和接口,可以定义一组通用的行为规范,然后由具体的子类来实现这些规范,从而实现代码的复用和扩展。例如,在定义一个动物抽象类时,可以定义一个抽象的发声方法,然后由具体的猫类和狗类来实现该方法,这样可以确保所有动物类的子类都具有发声的行为,但具体的发声方式可以不同。
集合框架
集合框架是 Java 中用于存储和操作一组对象的工具。在本课程的学习中,我通过 PTA 作业和实验,对集合框架有了较为深入的了解。我学会了如何使用 ArrayList、LinkedList、HashSet、TreeSet 等集合类,并掌握了它们的特点和使用场景。例如,在处理一组数据时,如果需要频繁地进行插入和删除操作,可以使用 LinkedList;如果需要保证元素的唯一性,可以使用 HashSet。通过合理地使用集合框架,可以使代码更加简洁和高效。
异常
异常是程序运行过程中出现的错误或异常情况。在本课程的学习中,我学会了如何使用 try-catch-finally 块来捕获和处理异常。通过捕获异常,可以避免程序因异常而崩溃,从而提高程序的健壮性和可靠性。例如,在进行文件操作或网络操作时,可能会出现各种异常情况,通过捕获这些异常并进行相应的处理,可以使程序在出现异常时能够继续运行或进行适当的处理。在实验中,我学会了如何自定义异常类,以便更好地处理特定的异常情况。
JavaFX
JavaFX 是 Java 中用于开发图形用户界面(GUI)的工具。在本课程的学习中,我对 JavaFX 有了初步的了解和认识。通过 JavaFX,可以创建各种图形用户界面元素,如窗口、按钮、文本框等,并实现它们之间的交互。虽然在本课程中没有深入学习 JavaFX,但通过一些简单的例子,我了解到了 JavaFX 的基本用法和特点。例如,可以使用 JavaFX 创建一个简单的登录窗口,通过按钮点击事件实现登录功能。
踩坑心得
在本课程的学习过程中,我也遇到了一些问题和困难,走了一些弯路。以下是我总结的一些踩坑心得:
理解题目要求不准确
在 PTA 作业和实验中,有时会因为对题目要求理解不准确而导致代码无法通过测试。例如,在电梯调度问题中,没有准确理解 look 算法的实现细节,导致代码中存在一些逻辑错误。为了避免这种情况,我学会了在开始编程之前仔细阅读题目要求,理解题目中的每一个细节,并在必要时向老师或同学请教。
代码调试困难
在编程过程中,代码调试是一个重要的环节。有时会因为代码中存在一些隐藏的错误而导致调试困难。例如,在处理集合框架时,可能会因为集合的遍历方式不正确而导致程序出现异常。为了避免这种情况,我学会了使用调试工具进行代码调试,通过设置断点、查看变量值等方式来定位和解决问题。
编码规范不严格
在编程过程中,编码规范是非常重要的。不严格遵守编码规范可能会导致代码可读性差、难以维护等问题。例如,在定义变量和方法时,没有使用有意义的命名,导致代码难以理解。为了避免这种情况,我学会了严格遵守编码规范,使用有意义的命名、合理的缩进和注释等方式来提高代码的可读性和可维护性。
改进建议
- 增加代码评审环节
建议在实验课中增加同学之间的代码评审环节,通过互相查看代码、提出改进建议,可以帮助我们发现自身不易察觉的问题,同时学习他人的优秀编码风格和设计思路。 - 提供更多实际项目案例
虽然PTA题目和实验项目已经覆盖了大部分知识点,但如果能提供一些更接近实际应用的完整项目案例(如小型管理系统、简单游戏等),将有助于我们更好地理解如何将所学知识综合运用到实际开发中。 - 加强集合框架的实践
集合框架是Java编程中极其重要的部分,建议增加一些专门针对集合框架的综合练习,如性能比较、复杂数据结构操作等,以加深我们对不同集合类特性和适用场景的理解。 - JavaFX教学可以更深入
JavaFX部分的内容相对基础,建议可以增加一些关于FXML、CSS样式、自定义控件等更高级的内容,或者提供一些扩展学习资源,供有兴趣的同学深入学习。 - 增加设计模式简介
面向对象设计与设计模式密切相关,建议在课程后期可以简单介绍几种常用的设计模式(如工厂模式、观察者模式等),这将有助于我们写出更优雅、更灵活的代码。 - 提供更多调试技巧指导
在实际编程中,调试占据了大量时间。建议可以专门安排一些关于调试技巧的内容,如如何使用调试器、如何阅读异常堆栈、日志记录技巧等。
个人总结
通过这门课程的学习,我不仅掌握了Java编程语言,更重要的是建立了面向对象的思维方式。从最初的面向过程思维转向面向对象思维是一个挑战,但通过不断的练习和实践,我逐渐体会到了面向对象编程的优势所在。
课程中的PTA作业和实验项目设计合理,既巩固了理论知识,又培养了实际编程能力。特别是实验项目,从简单的类设计到复杂的图形界面应用,让我看到了自己的进步轨迹。每次解决一个难题、完成一个项目,都给我带来了极大的成就感。
在学习过程中,我也认识到了自己的不足之处,如对某些高级特性的理解还不够深入,代码设计能力还需要提高。这些都将成为我今后继续努力的方向。
总的来说,这门Java面向对象程序设计课程为我打下了坚实的编程基础,培养了我解决实际问题的能力,也激发了我对编程的浓厚兴趣。我相信这些收获将对我的专业学习和未来职业发展产生深远而积极的影响。
浙公网安备 33010602011771号