面向对象课程总结

一、前言
经过一学期关于面向对象课程的学习,我从中学习到了很多。总的来说,这一堂课的课程学习量很大,一开始的学习也令人感到很困难,既有挑战带来的压力,也有掌握新知识、攻克难题后的成就感。但一直坚持到现在回过头来,确实是一次印象深刻的学习经历,而这些具有挑战性的内容,让我在克服困难的过程中实现了编程能力和思维的双重提升,这种能力的提升,不仅体现在代码量的积累上,更重要的是编程思维的成熟,即从面向过程的线性思维,转变为面向对象的模块化、抽象化思维。接下来我将对具体学到的东西进行介绍。
二. 面向对象核心技术总结
封装
类的封装是我们学的第一个面向对象的核心技术,它将数据和操作数据的方法封装在一个类中,通过private和public来控制其他类的访问权限,主要是用来private对类内部的变量进行封闭,通过方法来对外进行连接,这样间接访问可以不让数据被轻易改变,确保数据的安全,也更好进行维护。在PTA作业和实验中,几乎是每一次都要对封装进行使用,通过public的getter和setter方法来访问和修改设置的属性。通过不断实践,我掌握了合理封装类成员的方法。
继承
继承允许一个类从另一个类中获取属性和方法,实现代码的复用和扩展。
继承中的注意事项
要注意类与类之间是否符合继承的定义,有些关系可能将之定义为组合/聚合更好。
在继承的学习过程中,我也踩过几次坑,比如基类中添加带参数构造方法后,子类必须显式调用super(name),通过绘制对象初始化调用栈图,我彻底理解了 "先基类后子类" 的构造顺序。
多态
多态是面向对象编程的核心概念之一,它使不同类的对象对同一消息作出不同的响应。在课程中,通过方法重载和方法重写实现了多态性。例如,在谷仓程序中,定义Granary抽象类,圆柱圆锥等子类继承Granary类并重写其绘制方法。在该系统中,Granary定义了getV()的方法,在具体的子类,根据他们各自计算体积的方法对之进行计算返回,这种方式使得代码具有高度的灵活性,当添加新的形状(如四棱锥)时,无需修改遍历绘制的代码,只需新增类并重写getV()方法,体现了开闭原则。
抽象类
抽象类是一种不能被实例化的类,它包含抽象方法,用于定义一组相关类的公共行为和属性。在实验项目和PTA作业中,我使用抽象类来定义具有共性的行为规范。抽象类的优势在于可以包含抽象方法和具体方法,既定义了规范,又提供了部分实现。
接口
接口是一种特殊的抽象类型,它只包含常量和抽象方法,用于实现类的多继承和定义行为规范。在接口之后,设计类变得更加清晰了,如对于老虎、狮子、大象,三个动物继承动物类,然后老虎和狮子实现有攻击性的接口。
抽象类与接口的选择策略
通过实践总结出选择原则:
当需要定义事物的本质时,使用抽象类
当需要定义事物的能力时,使用接口
当需要提供默认实现时,优先使用抽象类
当需要实现多继承时,必须使用接口
集合框架
Java集合框架提供了丰富的数据结构和算法,用于存储和操作数据。相比于上学期在C语言中学习的数组,集合框架的功能明显要便利很多。有删除,加入,排序等功能。在后期大部分时候,都用到了集合框架如ArrayList等来存储数据。
在这其中,有一个比较重要的要说明一下,即是比较排序的功能(也算是对期末的一个复习了):
通过实现Comparable接口来排序。其中,类一定要实现compareTo方法
其中,compareTo方法的返回值情况如下:
当返回负整数时,意味着当前对象比参数对象小。
返回零,表示当前对象和参数对象相等。
返回正整数,则说明当前对象比参数对象大。
异常
异常处理机制用于处理程序运行过程中出现的错误和异常情况,保证程序的稳定性和可靠性。在编程过程中,我学会了使用try-catch-finally语句块来捕获和处理异常,例如在文件读取操作中,捕获可能出现的文件不存在、读取错误等异常。通过异常处理,能够及时发现并解决程序中的问题,提高程序的健壮性。在PTA的迭代过程中,就在二,三次迭代过程中运用到了异常处理机制,成功提高了代码的健壮性。
JavaFX
总体而言是一个让java从原本的程序变成可视化的功能,在这段课程中老师改变了教学方法,进行翻转课堂,给每个同学分配任务,让每一位同学都进行ppt的制作,案例设置以及上台讲解。而我分配到的任务是关于textarea相关的制作演讲,为了制作生动的案例,我设计了一个简易word程序,实现了文本输入、复制粘贴、字体调整等功能。在课堂演讲时,我通过演示代码和实际操作,不仅向同学们展示了TextArea的功能,这不但提高了我的演讲能力,同时也加深了我对这些知识的印象。但同时,其实对于除了TextArea的其他内容的掌握,并不算好,还有待继续加强学习。

采坑心得
在这一学期的学习中,也有一些不足的地方需要我继续改正和加强。
首先,在编程习惯方面,初期我不注重代码的规范和注释,导致后期代码维护困难。例如,在完成一个PTA作业后,过了一段时间再去修改代码,由于缺乏清晰的注释,很难快速理解代码逻辑,增加了修改的难度和时间成本。这种情况在四月份那段时间的电梯题目尤为明显,涉及的算法难度较高,所以在隔个几天再看会有一种读天书的感觉,所以以后还是要有适当的注释才好。
其次,一开始没有很重视线上学堂在线的课程学习,导致中期遇到了一些题目不太会写,如正则表达式等,是重新看了课程才写出来,所以后期要注意这一点,线上线下要结合起来。
最开始学面向对象编程的时候代码写得很乱,缺乏规范性,在之前电梯的时候尤甚,把一个核心判断全写在while循环加ifelse来实现,而在公司内部这种使用多次条件语句是不被允许的,所以日后还是要多加注意这一方面。
还有就是有关审题的方面,对于PTA的题目一定要仔细审题,不能因为题目审题失误导致最后要整体推倒重来。
改进建议
虽然在初学的时候觉得课程很难有点想放弃,但学到现在觉得收获挺多,所以整体而言我觉得这门课的布置都挺好的。不过还是有几个点我觉得是可以优化一下的:
首先,PTA作业方面可以进行优化,比如提供讨论平台,提倡大家集中讨论一些问题。其次可以多给一些测试的样例,尤其是一些极限取值的情况,这样可以更好的对照与答案有什么不同。
其次,我觉得最开始其实不用直接上算法题,而是放一些中等难度的题,等到中后期的时候可以放一些算法题目,这样可以循序渐进,让学生更有信心学习这门课程。
还有就是在实验方面,那个代码提交的程序我觉得可以像PTA一样加一关键字标红功能,有的时候把代码从IDEA上誊抄过去会出现打错字的情况,这样找出错误会很麻烦,或者加一个代码行数显示功能也行
总结
通过这门面向对象课程的学习,我系统地掌握了面向对象编程的核心概念和技术,提升了编程实践能力和项目开发能力。从理论知识的学习到实际项目的应用,每一个环节都让我对面向对象编程有了更深入的理解和认识。虽然学习过程充满挑战,但在克服困难的过程中,我不仅提高了技术水平,还培养了解决问题的能力和思维方式。
面向对象设计原则对于代码的设计和框架的搭建上都起到了非常大的作用,在未来,我也应该在不断敲代码的基础上,多去思考,更加注重这类统筹性的问题,编写出更加健壮、灵活和易维护的软件系统,成为一名合格的软件工程师

posted @ 2025-06-18 15:02  傅宇川  阅读(23)  评论(0)    收藏  举报