第三次Blog作业
一、前言
这学期的面向对象程序设计课程结束了,回顾学习过程,我有不少收获和体会。
这学期新增的 blog 作业和实验报告不一样。写 blog 得花更多时间,要把编程失败的原因写清楚,方便别人参考。记得刚开始写 blog 时,不知道怎么梳理思路,写出来的内容又乱又不连贯。后来我慢慢摸索,每次做完作业就立刻记录遇到的问题和解决办法,逐渐掌握了写作方法。通过写 blog,我的知识总结能力和表达能力确实有进步。
PTA 作业一共 11 次。对我这种编程新手来说,多做题确实是学编程语言的好办法。PTA 题量够,我基本在题目发布两天后就能做完。除了第一次的电梯题有点难,当时为了弄明白电梯运行逻辑,我画了好多流程图,反复修改代码,花了整整两天才通过测试。其他题我都能很快找到思路,做起来不算费劲,做完也更有信心了。像继承与多态那部分的题目,我一开始理解得不透,就反复看课本例题,还在网上找类似题目练习,慢慢就掌握了。
实验课的题目比 PTA 简单,而且发挥空间大,除了完成指导书上的要求,还能自己加功能。不过实验提交系统不能复制粘贴,也没自动纠错和补全功能,写代码速度比用 Eclipse 慢很多。有次写实验作业,因为一个分号没打对,系统一直报错,又没有提示,我只能一行行代码检查,花了快一小时才找到问题。但也正因为这样,让我更注意代码细节了。
线上和线下课搭配得挺好。线上课可以提前预习,课后还能复习;线下课老师当面讲,有问题能直接问。有时候线上课没听懂的地方,线下课老师一举例就明白了。两种方式结合,学习效率确实提高了。
面向对象设计技术总结
一、封装
在面向对象程序设计中,封装是将数据(属性)和操作数据的方法(行为)捆绑在一起,并通过访问控制限制对数据的直接访问,从而保护数据的完整性和安全性。简单来说,封装就是 "将数据和方法包装成一个独立单元,并隐藏内部实现细节"。通过pta第二次第三次作业的训练,我成功熟练掌握了面向对象编程的三大特性之一。

二、继承与多态
继承是面向对象编程中实现代码复用和层次化设计的重要机制。它允许一个类继承另一个类的属性和方法,并可以在此基础上扩展或修改功能。通过继承父类的属性和方法,子类无需重新编写相同代码,在pta中作业图形面积计算中,printArea(Shape shape)方法可统一处理所有Shape子类,新增Triangle类时无需修改该方法,使代码复用与效率提升。

三、抽象类与接口
在面向对象编程里,抽象类和接口都是很重要的概念。抽象类不能直接创建对象,它通过抽象方法定义规范,要求子类必须实现这些方法,同时也能包含具体方法供子类复用,体现的是 “is - a” 关系;而接口比抽象类更抽象,里面只有方法签名和常量,没有方法实现,一个类可以实现多个接口,解决了 Java 单继承的局限,体现 “can - do” 关系,常用于定义行为规范。两者相辅相成,抽象类适合作为基类复用代码,接口则适合实现灵活的插件化架构,在复杂系统设计中共同构建稳定又灵活的程序结构。比如在期中测试的王者荣耀英雄伤害计算中,我们就可以通过Comparator接口进行排序比较,让我们的代码变得更加灵活。还有在之前的航空系统的迭代作业中,还可以定义一个支付方式的接口类,使我们的代码更加清晰有逻辑。

四、集合框架
在课程学习中,Java 集合框架也是重要的一环。集合框架就像是一个 “数据收纳箱”,为我们提供了一套处理数据的标准工具和方法。它包含了多种数据结构类型,比如 ArrayList、LinkedList 这类 List 接口的实现类,就像一个有序的 “数据队列”,可以方便地按顺序存储和访问数据;HashSet、TreeSet 这类 Set 接口的实现类,如同一个 “去重仓库”,能自动剔除重复元素;还有 HashMap、TreeMap 这类 Map 接口的实现类,类似 “数据字典”,通过键值对的形式高效存储和检索数据。使用集合框架,不仅可以大幅提高数据操作的效率,还能让代码更加简洁和规范。在 PTA 作业和实验中,当需要处理大量数据,比如存储学生信息、管理商品库存时,集合框架就发挥了巨大作用,让数据的增删改查变得轻松许多。
五、异常
在面向对象程序设计的学习过程中,异常处理是保障程序稳定性的关键环节。异常就像是程序运行时突然出现的 “意外状况”,比如文件读取失败、数据类型转换错误等情况。合理的异常处理,能够让程序在遇到这些 “意外” 时,不会直接崩溃,经过不断练习,我现在已经能够对常见的异常情况进行基本处理,确保程序不会因为一些小问题就直接终止。但异常处理远不止于此,异常体系的深入理解和灵活运用还有很大的提升空间。例如,根据业务需求自定义异常类,并对异常进行合理分类,以便更精准地定位和解决问题,这些都是我未来需要加强学习和实践的方向。
六、javaFX
JavaFX 也是这学期接触的重要内容。JavaFX 是 Java 的一个图形界面开发工具包,它就像是一个 “可视化魔法师”,能帮助我们创建出各种美观、交互性强的图形界面。通过 JavaFX,我们可以轻松地设计出窗口、按钮、菜单等各种界面元素,还能为这些元素添加丰富的动画效果和交互逻辑。在课程学习中,我们从基础的界面布局开始学起,逐步掌握了如何使用场景图、控件、事件处理等知识。我们是以翻转课堂的形式来学习javafx的各个ui组件的,三个人一个小组,采用学生互评的方式来给各个小组打分,最后还有一个gui的大作业,用javafx的组件来编写pta作业9的航空运输管理系统。




学习总结:
通过这门课程,我系统掌握了面向对象编程的核心概念,包括封装、继承、多态、抽象类和接口等,并能将其灵活运用到实际编程中。在异常处理方面,从最初常忘记处理受检异常,到现在能够对常见异常进行基本处理,保障了程序的稳定性,但对于自定义业务异常的深入应用仍需加强。同时,课程培养了我的问题解决能力,面对复杂问题时,我学会了拆解问题、绘制流程图,并通过查阅资料和请教他人寻找解决方案。
然而,学习过程中也暴露出不少问题。在理论知识方面,对设计模式、泛型等高级内容理解不够深入;实践操作上,开发大型项目时,代码的架构设计和模块化能力还有待提高;时间管理方面,遇到难题时容易花费过多时间,导致后续任务进度紧张。
踩坑心得:
在 Java 语法使用上,常因细节疏忽导致错误。例如,在定义类的属性时,误将private修饰的成员变量直接在类外访问,忽略了封装特性的访问限制,导致编译报错;使用switch语句时,忘记在每个case分支后添加break,使得程序出现意外的贯穿执行;还有在for循环中,错误地在循环体内修改集合元素,导致ConcurrentModificationException异常。这些问题源于对语法规则掌握不扎实,后来通过反复查阅文档、编写测试代码验证规则,才逐渐减少此类错误,还有就是算法上的问题,比如在 PTA 第一次的电梯题中,由于对电梯运行逻辑理解不透彻,最初设计的算法存在漏洞,导致电梯运行不符合实际要求。我通过绘制状态转换图、模拟电梯运行过程,逐步完善逻辑。另外,在使用继承和多态时,曾错误地将子类特有方法调用放在父类引用上,违背了多态的使用原则;在实现抽象类和接口时,忘记重写所有抽象方法,导致程序无法正常运行。这些问题让我意识到,理清类与类之间的关系、明确方法调用的逻辑至关重要。异常处理方面,初期我经常忽视受检异常的处理。在进行文件读写等 IO 操作时,未使用try-catch块捕获IOException,导致程序运行时一旦出现文件不存在、权限不足等问题就直接崩溃;有时虽然捕获了异常,但只是简单打印错误信息,没有进行有效的补救处理,影响程序的正常功能。还有一次在自定义异常类时,错误地继承了RuntimeException,导致调用方无需显式处理异常,埋下了潜在的隐患。经过不断练习和反思,我才学会根据业务场景合理选择异常类型,并妥善处理异常。
改进建议以及总结:
1、虽然掌握了面向对象编程的基础概念,但对于封装、继承、多态等特性的高级应用理解不够深入。比如在踩坑过程中,对父类引用和子类方法调用的关系处理不当,说明对多态的运行机制还需进一步钻研。后续应深入学习设计模式,理解这些概念在复杂项目中的实际应用,加强对泛型、反射等进阶知识的学习。
2、尽管现在能够对常见异常进行基本处理,但在异常处理方面仍存在不足。自定义异常类时错误地继承RuntimeException,反映出对异常体系的整体把握不够。未来需要更系统地学习异常类的层次结构,根据不同业务场景准确选择合适的异常类型,并学会自定义业务异常,完善异常处理逻辑,让程序在面对各种意外情况时更加健壮。
3、编程逻辑梳理能力有待提高,在处理如电梯运行逻辑这类复杂问题时,容易出现算法漏洞。需要加强逻辑思维训练,多做一些综合性、具有挑战性的编程题目,学习使用状态机、流程图等工具辅助分析问题,培养严谨的编程思维,提升解决复杂问题的能力。
4、在学习过程中,遇到难题时容易花费过多时间,影响整体学习进度。后续应改进学习方法,遇到问题先尝试独立思考,若无法解决,及时查阅资料或向他人请教,避免陷入长时间的困境。同时,制定合理的学习计划,合理分配时间,提高学习效率 。
浙公网安备 33010602011771号