1.前言
在 Java 面向对象程序设计课程的学习之旅中,我经历了知识的积累与思维的蜕变。这门课程通过丰富多样的教学环节,如 Blog 作业、PTA 作业、实验、线上线下课程,帮助我逐步构建起 Java 面向对象编程的知识体系。虽然过程充满挑战,但也让我收获满满。整个课程的学习任务量较为充实,线上课程提供了系统的理论知识讲解,让我能够在课前对知识点有初步了解;线下课程则通过老师生动的案例分析和互动答疑,进一步深化了我的理解。PTA 作业和实验是将理论转化为实践的重要环节,每一次作业和实验都围绕特定的知识点展开,难度循序渐进。而 Blog 作业同样极具挑战性,前两次作业主要围绕 java 编程语言的大题展开,每次题目集都是上一次的迭代,不仅要求对之前的内容进行巩固,还需要更进一步地去完成更多的要求。从类的设计、方法的实现到复杂逻辑的梳理,每一次迭代都意味着难度的升级。这些作业需要我仔细且细心地对待,稍有疏忽就容易卡在某个问题上,反复思考也难以找到突破口。但也正是在不断克服这些难题的过程中,我的编程能力和思维能力得到了极大的锻炼。Blog 作业还要求我对所学知识进行总结和反思,锻炼了我的文字表达和知识梳理能力。整体而言,课程的各个环节相互配合,虽然难度不断提升,但在逐步攻克难题的过程中,也让我获得了强烈的成就感。最后的翻转课堂,在准备阶段就遇到了很多问题,毕竟从来没有接触过,还是很新颖的,一时间不知道如何下手,但是随着与小组成员一步步探索,还是弄懂了我们小组需要讲解的内容,并完成了ppt。在翻转课堂上,也是很有趣的,听着同学门生动形象地讲解,也是受益匪浅。但是javaFX还是不够熟练,学习和练习时间太少了,又加上期末周到了,所以需要分心复习之前学习的课程,总之,后面我还是会找时间慢慢好好地学习javaFX。
2.面向对象技术总结
1.封装、继承与多态
封装是保障数据安全的重要手段,在 PTA 作业和实验中,我学会了合理运用访问修饰符。例如在设计学生类时,将学生的成绩属性设置为 private,通过公有的 getGrade 和 setGrade 方法来访问和修改,有效避免了数据的非法访问。
继承机制极大地提高了代码复用性。在开发图形绘制程序时,我定义了一个图形父类,包含颜色、位置等通用属性和绘制方法,圆形、三角形等子类继承父类后,只需专注于自身特有的属性和绘制逻辑,大大减少了代码重复量。
多态让程序变得更加灵活智能。在实现一个简单的宠物喂养系统时,不同的宠物类(猫、狗等)重写父类的 "进食" 方法,当使用父类引用调用该方法时,程序会根据实际对象类型执行相应的进食逻辑,展现出多态的强大魅力。
2.抽象类与接口
抽象类像是一个 "半成品模板",里面可以定义抽象方法,强制子类去实现。在设计游戏角色类体系时,我把角色的基本属性和通用行为放在抽象类,战士、法师这些具体角色类继承抽象类,再实现各自的技能方法,这样就能规范子类的设计。
接口则是一种更纯粹的抽象,只规定方法签名,不写具体实现。一个类能实现多个接口,相当于拥有了多种 "技能"。在 PTA 作业里,我通过实现 Comparator 接口,自定义了对象的比较规则,让集合里的元素能按特定逻辑排序,特别方便。
3.集合框架
集合框架是 Java 编程中处理数据集合的强大工具。通过学习,我掌握了 List、Set、Map 等常用集合接口及其实现类的特点和使用方法。在实验中,我使用 ArrayList 存储动态数组,通过 add、remove 等方法对数据进行增删改查操作;使用 HashMap 来实现键值对的存储,方便快速地根据键获取对应的值。不过,在处理复杂的数据结构和多线程环境下的集合操作时,我还需要进一步深入学习和实践,以确保程序的正确性和高效性。
4.异常处理
异常处理机制让我能够更好地处理程序运行过程中可能出现的错误情况。通过 try-catch-finally 语句块,我学会了捕获和处理各种异常,使得程序在遇到错误时不会崩溃,而是能够给出合理的提示信息或进行相应的处理。在 PTA 作业中,我经常需要处理用户输入错误、文件读取失败等异常情况,确保程序的健壮性。但在自定义异常类以及更复杂的异常传播和处理场景下,我的掌握还不够熟练。
5.javaFX
JavaFX 是 Java 用于创建富客户端应用程序的框架,通过它我能够设计出美观的图形用户界面。在实验中,我学习了如何使用 JavaFX 创建窗口、布局组件、添加事件监听器等基本操作。虽然能够完成一些简单的界面设计,但在实现复杂的交互效果和优化界面性能方面,我还存在很多不足,需要进一步学习和探索。
三、采坑心得
在课程学习过程中,我走过不少弯路,也积累了宝贵的经验教训。首先,在初期学习时,由于对类和对象的概念理解不够深入,经常出现属性和方法定义混乱的情况,导致程序逻辑错误。后来通过反复阅读代码示例、查阅资料,并在 PTA 作业中不断实践,才逐渐理清了类与对象之间的关系。其次,在使用继承和多态时,由于对方法重写的规则掌握不牢,出现过子类方法与父类方法签名不一致但程序却没有报错的情况,导致运行结果不符合预期。经过仔细检查和学习,我明白了方法重写需要满足方法名、参数列表和返回类型完全相同(协变返回类型除外)的要求。另外,在处理集合框架和异常处理时,我曾因为忽略了一些细节而导致程序出现难以调试的错误。比如在遍历集合时进行删除操作,没有正确使用迭代器,导致 ConcurrentModificationException 异常;在捕获异常时,使用了过于宽泛的异常类型,使得程序无法准确处理具体的错误情况。通过这些教训,我学会了在编程时要更加注重细节,仔细阅读 API 文档,遵循最佳实践。
四、改进建议及总结
1.总结
从对 Java 编程懵懵懂懂,到现在能用面向对象思想解决一些实际问题,这门课真的让我成长了很多。每个学习环节都不可或缺,特别是翻转课堂,不仅加深了我对知识的理解,还锻炼了团队协作和表达能力。在学习过程中,我逐渐养成了严谨的编程习惯,学会从多个角度思考问题,面对复杂的编程任务也不再畏缩。同时,课程中不断出现的挑战让我明白,学习编程需要持之以恒的耐心和永不言弃的毅力,每一次克服困难都是一次自我突破,这种成长的喜悦远比学习本身更有意义。
2.改进建议
在教师教学方面,除了结合实际案例讲解知识点,还可以尝试引入项目式教学方法。比如将课程内容拆分成几个小型项目,让我们在完成项目的过程中,综合运用所学知识,这样既能增强知识的连贯性,又能让我们提前感受实际开发的流程。另外,建议老师在课堂上增加更多的互动环节,例如分组讨论、即时问答等,鼓励大家积极参与,营造更加活跃的学习氛围。同时,针对一些易错、难懂的知识点,可以录制一些补充讲解视频,方便我们在课后反复学习。课程内容设置上,除了增加 Java 新特性的学习,还可以适当引入一些与 Java 相关的前沿技术,如微服务框架 Spring Cloud、大数据处理框架 Apache Flink 等,拓宽我们的技术视野,让我们对 Java 的应用场景有更全面的认识。对于理论性较强的内容,如设计模式,可以安排专门的实践课程,通过实际项目案例分析和代码实现,帮助我们更好地理解和掌握设计模式的应用。此外,在讲解完每个重要知识点后,可以提供一些拓展阅读资料,引导我们进行深入学习。作业和实验安排方面,除了现有的题目和反馈方式,还可以增加一些小组协作的作业和实验项目,进一步锻炼我们的团队协作能力和沟通能力。在作业布置时,可以明确标注每个题目的难度等级和所需知识点,方便我们根据自己的情况选择合适的题目进行练习。对于实验报告,除了要求描述实验过程和结果,还可以鼓励我们分享在实验过程中遇到的问题及解决思路,促进相互学习。同时,建立一个作业和实验的讨论平台,方便我们在遇到问题时能够及时交流和请教。对于翻转课堂,除了给予更多前期指导和范例分享,还可以在课堂展示结束后,组织同学们进行互评,从内容讲解、PPT 制作、表达能力等多个维度进行评价,这样既能让展示的同学获得更多反馈,也能让参与评价的同学更加深入地思考知识点。另外,可以定期举办一些翻转课堂经验分享会,邀请表现优秀的小组分享准备和展示的经验,帮助大家共同提高。