面向对象程序设计课程总结
一、前言:课程整体概要性总结
一学期的Java课程马上就要结束了。通过本学期的学习,我对编程的认知和实践能力都有了显著的提升。通过 Blog 作业、PTA 作业、实验、线上课程以及线下课程等多种学习模式,我不仅收获了知识,也锻炼了我的语言能力和学习能力。Blog作业主要是对每次PTA大作业的一次总结,要求我们自己进行代码分析,设计过程以及知识总结。Blog作业不仅加深了我对知识点的理解,更是锻炼逻辑表达与知识梳理能力。PTA作业共有53道题目,涵盖了面向对象课程的几乎所有的知识点,从基础语法到类的设计,再到接口的使用,每一道题目都是一次对知识点的熟练运用。PTA作业通过题目的模式,让我们能够更好的将所学到的知识运用带实践中去,加深了我们对知识点的理解以及灵活运用。其中大作业的难度最大,题目的情形比较复杂,代码量大,能够更好的锻炼我们的面向对象编程的思维方式。五次实验主要围绕着“大象装进冰箱”展开,从控制台程序到JavaFX应用开发,这种五次迭代式代码能够很好地锻炼我们的工程能力。线上课程主要讲解了Java的语法知识,与线下课程相互补充,不仅提高了课堂的效率,也方便了我们自由安排时间学习。整体来说,本学期的课程相比上学期C语言的学习难度更大,但收获颇多。在这学期的学习当中,我们不仅掌握了Java语言的语法知识,还学习到了面向对象编程的思想以及工程能力,也让我对未来的编程学习充满了信心。
二、面向对象技术总结
1.面向对象技术知识点总结
- 封装:通过 PTA 作业中对类属性私有化并提供公共访问方法的练习,我深刻理解了封装隐藏内部实现细节、保护数据安全的作用。在实验中,将数据和操作封装在类中,不仅增强了代码的安全性,也提高了代码的可维护性。例如,在设计学生类时,将学生成绩设为私有属性,通过getter和setter方法进行访问和修改,有效避免了非法数据的写入。
- 继承:继承机制允许创建的子类复用父类的属性和方法,极大地提高了代码的复用性。在实验中,以交通工具类为父类,派生出汽车类、飞机类等子类,子类继承父类的基本属性和行为,并根据自身特点进行扩展。通过这种实践,我掌握了继承的语法规则和使用场景,但在多层继承关系的设计和理解上还需加强。
- 多态:多态是面向对象编程的重要特性,通过 PTA 作业中对不同类型对象调用相同方法产生不同行为的练习,我理解了多态的实现方式,包括方法重载和方法重写。在实验中,利用多态实现了图形绘制功能,不同图形类(如圆形、矩形)重写父类的绘制方法,根据具体图形进行绘制,增强了程序的扩展性和灵活性。
- 抽象类与接口:抽象类作为一种特殊的类,为子类提供了一个通用的框架,包含抽象方法和具体方法。接口则是一种完全抽象的类型,用于实现多重继承。在学习过程中,我掌握了抽象类和接口的定义和使用方法,例如在设计游戏角色系统时,使用抽象类定义角色的基本属性和行为,使用接口实现角色的特殊技能。但在选择抽象类还是接口的场景判断上,有时会出现混淆。
- 集合框架:集合框架为数据存储和处理提供了多种数据结构和算法。通过实验和作业,我熟练掌握了ArrayList、List等常用集合类的使用,能够根据不同的需求选择合适的集合类。但对于一些高级特性,如集合的泛型使用和自定义集合类,还需要进一步学习。
- 异常处理:异常处理机制使程序能够在运行时捕获和处理错误,提高了程序的健壮性。在 PTA 作业和实验中,我学会了使用try-catch-finally语句捕获和处理异常,以及自定义异常类。例如,在文件读取操作中,使用异常处理机制处理文件不存在或读取错误等情况。然而,在异常的合理分类和处理策略上,还需要更多的实践经验。
- JavaFX:JavaFX 用于创建富客户端应用程序,通过实验学习,我掌握了 JavaFX 的基本布局管理和控件使用,能够创建简单的图形用户界面。但在复杂界面设计和交互逻辑实现上,还存在较大的提升空间,对 JavaFX 的动画效果和数据绑定等高级功能了解较少。
2.技术掌握欠缺之处
尽管对上述技术有了一定的掌握,但在实际应用中仍存在一些问题。对于设计模式与面向对象技术的结合应用不够熟练,在复杂项目中难以合理运用所学技术进行架构设计;对Java的一些语法知识掌握不牢,难以按照面向对象编程的思维进行设计。这些都还有待进一步学习提升。
三、采坑心得
在整门课程的学习过程中,我走过不少弯路,遇到不少令我抓耳挠腮的问题,但也从中吸取了宝贵的经验教训。
1.概念理解不深入:在学习初期,对封装、继承、多态等概念只是停留在表面理解,导致在实际编程中出现错误。例如,在使用继承时,没有正确理解子类与父类的关系,随意修改父类的方法,破坏了程序的稳定性。因此,在学习新技术时,要深入理解概念的本质,结合实际案例进行分析和实践。
2.代码规范问题:在编写代码时,不注重代码规范,如变量命名不规范、代码格式混乱等,导致代码可读性差,后期维护困难。通过多次被指出问题后,我意识到代码规范的重要性,养成了良好的编码习惯,使用合适的命名规则和代码缩进格式。
3.调试能力不足:当程序出现错误时,不知道如何进行调试,往往花费大量时间查找问题。后来通过学习调试工具的使用,如断点调试,逐步提高了调试能力。在遇到问题时,要学会使用调试工具,逐步跟踪代码执行过程,定位问题所在。
4.缺乏系统学习:在学习过程中,过于注重知识点的学习,忽视了知识体系的构建,导致知识零散,难以形成完整的编程思维。在后续学习中,我开始注重知识的系统性,通过总结归纳,将各个知识点串联起来,形成自己的知识框架。
5.充分理解需求:在完成作业的过程中,急于设计并编写代码,却没有认真的理解题目的要求,往往会产生事倍功半的效果,甚至于导致整个程序崩溃。例如,在完成航空订单管理系统时,我错误地将按重量获取费率理解为整个订单所有货物的重量,这就导致了运行的结果始终与标准答案对不上。通过认真理解题目的需求,能够更好地帮助我们进行设计,提高效率。
四、改进建议及总结
1.改进建议
- 教学内容方面:增加更多实际项目案例的讲解,将面向对象技术与实际应用场景相结合,帮助学生更好地理解和应用所学知识。
- 教学方法方面:采用更加多样化的教学方法,如小组讨论、项目驱动等,提高学生的参与度和积极性;增加课堂互动环节,及时了解学生的学习情况,解答学生的疑问。
- 作业与实验方面:优化 PTA 作业和实验的题目设置,增加一些具有挑战性和创新性的题目,培养学生的创新能力和解决实际问题的能力;提供更详细的作业和实验指导,帮助学生更好地完成任务。
2.课程总结
总的来说,本学期这门课程系统地讲解了 Java 面向对象技术的核心概念和相关技术,通过理论讲解、PTA 作业和实验等多种教学方式,使我对面向对象编程有了深入的理解和实践能力。课程内容涵盖全面,从基础概念到高级应用,逐步引导我们掌握 Java 编程技能。我不仅掌握了 Java 面向对象技术,还培养了编程思维和解决问题的能力。同时,我也认识到自己的不足之处,在今后的学习和实践中,我将不断努力,进一步提高自己的编程水平。希望以上建议能够对课程的改进和优化有所帮助,使更多的学生受益于这门课程。