第三次blog作业

一、前言
经过一个学期的学习,也是匆忙的学习了java这门课程,这门课毫无疑问是举有难度的,这也为我带来了不少烦恼和压力。总的来说这门Java课程贯穿了PTA编程作业、实验项目、线上自学和线下课堂、Blog写作多个环节。整体来看,工作量着实不小。PTA作业平均每周花费数个小时完成,题目集从基础逐步提升难度,早期的电梯调度题就耗费了大量时间研究算法逻辑,而后期的题目则更考验知识的迁移应用能力。实验项目最耗时间,特别是涉及JavaFX和实验,javafx虽然刚刚学习,可它的代码复杂性属实是让人头大,实验也是令人头疼,每每做完之后,还要花费相当的时间输入到实验提交系统,完整做下来可能要用上好几天,从需求分析、设计、编码到测试都需要深入思考。线上课程为我提供了理论学习资源,而线下课则侧重知识点精讲和疑难解答,两者结合有助于打牢基础。Blog则需要花几个小时整理知识并输出,是系统的知识复盘。整体难度梯度设计合理,从基础语法过渡到面向对象核心思想(封装、继承、多态),再到集合框架、异常处理和JavaFX等高级应用,挑战性是层层递进的。
总之课程设计是比较合理的。初期侧重Java基础语法和简单类设计,难度相对平缓。中后期复杂度显著提升:PTA作业深入探讨多态、抽象与接口的应用,综合题目要求更高的逻辑思维能力;实验则从“图书馆管理”等基础系统逐步升级到涉及文件IO、集合框架高效运用乃至基于JavaFX构建完整交互界面的项目。以及后期JavaFX组件,都体现了进阶阶段的挑战。整体而言,学习负荷较重,但随着持续的实践和问题解决,编程能力和面向对象思维都得到了扎实的提升。
接下来是我对这门课的一部分总结。
二、面向对象技术总结
封装是面向对象编程的核心概念之一,通过将数据和行为捆绑在类中实现。
通过private修饰符隐藏内部数据,提供public方法进行访问控制,使用getter和setter方法管理属性访问
将相关操作组织在同一个类中,减少代码耦合,使代码模块化且易于维护。
总结:在初学时,容易滥用getter/setter,导致访问错误对象的情况出现,不过在多次题目练习后,不禁感叹封装的简便与实用。

继承是允许子类复用父类的属性和方法,形成"is-a"关系。
它通过extends实现单继承(Java不支持多继承),支持方法覆盖(Override)来修改父类行为。
构造方法调用遵循链式规则:子类构造函数默认调用super()初始化父类,可以使得代码更加简洁,不冗余。
总结:刚开始学时不是很理解在何时用到继承会更好,容易过度使用继承导致高耦合​​。

多态指同一操作对不同对象产生不同行为,分静态和动态两种:
静态多态通过同名不同参实现;动态多态通过继承+方法覆盖实现。
总结:这确实是比较难以理解且比较抽象的,在多次练习后,逐渐理解了一些,比如点线面问题中,通过Element类型引用调用display()方法,自动委派至Point、Line等子类的具体实现。

抽象主要用abstract定义,不能实例化,可包含抽象方法和具体方法。
它为子类提供通用模板,如Shape抽象类含抽象方法calculateArea()。
与接口的关键区别是:抽象类可包含字段、构造方法和非抽象方法。继承抽象类必须实现所有抽象方法。
接口是纯抽象的,通过interface定义。类通过implements实现多个接口。
接口侧重行为约定,如Comparable接口定义compareTo(),实现类必须重写所有抽象方法。
接口适用于构建松耦合系统,支持多重继承关系。
总结:我觉得难点主要在与何时使用抽象类和接口,至今还是难以分辨。

集合框架提供标准化容器,核心接口包括:List有序可重复,如ArrayList、Set无序且唯一,如HashSet、Map键值对,如HashMap。
通过泛型保证类型安全List。迭代器Iterator实现遍历,Collections类提供排序等算法
不同实现类在性能ArrayList随机访问,LinkedList插和特性TreeMap自动排序上各有侧重。
总结:主要是使用ArrayList;其他的几乎没怎么用过。

异常处理采用try-catch-finally机制:try监控代码块,catch捕获指定异常,其中Exception是所有异常的基类,finally确保清理逻辑必执行。
抛出异常用throw,声明异常用throws。
分为检查异常,这是必须处理的,比如IOException;非检查异常RuntimeException,可以忽略,没咋用过这个。
自定义异常需继承Exception类,规范处理异常能提升程序健壮性。
总结:用的较少,不是很熟练,但还挺好用的。

JavaFX是替代Swing的GUI框架,采用Stage、Scene和Node的层级模型。
核心特点包括:FXML用XML描述界面,CSS样式定制外观,绑定机制同步数据与视图。
事件处理通过EventHandler响应动作。包含丰富控件和动画API,支持3D图形和多媒体播放。
可通过模块化打包成独立应用。
总结:代码太复杂,光是运用各种UI组件就非常让人头大了。

主要收获
掌握了封装对数据安全性的保障及其提升的模块化程度,访问权限的精确控制有效隔离实现细节。
继承和多态机制显著提升代码复用性与扩展能力,处理点线面等层次化对象时,动态绑定展现出设计灵活性。
抽象类与接口的应用差异明确:抽象类支撑含共享状态的对象体系构建,接口聚焦跨结构行为契约的定义。
集合框架虽以ArrayList为主实践,但深入理解不同容器实现机理为性能优化奠定基础。
异常处理通过规范化流程增强了程序健壮性。
JavaFX实践验证了数据绑定与FXML分离在GUI中的价值。
收获还是很多的,虽然有些内容掌握不够熟练,比如接口与集合框架,以及javafx的使用,但还是有一些成就感的。

三、采坑心得
1.总得来说我总是在一些没有意义的角度上花费大量时间去写代码,一般就是拿到题目啊上手就是做,缺乏在做题前与做题中的思考,经常导致代码出现大量问题,
花费大量时间在代码的重新修改上,有一次因为代码过于复杂,以及报错过多,直接删除重写,白白花了这么多冤枉时间。
所以说在写代码之前一定要有一个大致的框架,不熟练代码时一定要先构思在写,不然会导致部分代码之间没有联动性,以致整体报错。
2.我写打代码时,经常会用一些简短的字词用作类名,经常写着写着,忘记是什么意思,在修改代码时,遇到相当的困难,
我也没有写注释的习惯,总是偷一些懒,有时新运用一些方法时,不去注释,导致事后根本看不懂,尤其是在报错且不知道哪里出了问题的时候。
所以在写代码的时候要养成写好类名,勤加注释的习惯。
3.我在学习新东西时太急了,有时只想着尽快弄完作业和项目,没有去搞懂基础的内容。
比如学集合框架和JavaFX那会儿,急着把任务做完,怎么运行的这些都没细琢磨,没有花费时间在这些方面。结果是不够熟练在修改代码上花费了更多的时间。
所谓欲速则不达,学习代码需要耐心,要从手上来练习,多打代码,才能更加熟练。
4.我在初期对单一职责、继承、多态等理解不足,导致了显著的代码质量问题。未能遵守单一职责原则是最突出的问题之一,具体表现为单个类承载过多方法。
这使得方法本身修改困难、维护成本高昂,同时由于外部多处引用这些方法,任何变动都影响广泛,进一步加剧了修改的复杂性和时间消耗。
此外,冗杂的类结构增加了不必要的内存开销,并为未来的维护埋下隐患。最根本的后果是代码设计思路混乱、算法低效,未能实现简洁优雅的解决方案。
认识到问题的根源后,我系统性地重新学习了这些核心设计原则,特别是单一职责原则的深入理解和实践。这让我之后的学习中也成功避免了一系列错误。

四、改进建议及总结
老师讲课需要更加注重与学生之间的互动,增加更多的趣味性,活跃课堂氛围。
课程安排有些过于紧张了,有时候一些内容还没有弄明白,新的内容便已经来了,让我学习的有一些匆忙。
在作业和实验方面,希望作业和实验的题目可以更加多样化和贴近实际应用场景,激发我们的学习兴趣和创造力。
至于实验的提交系统真的蛮让人苦恼的,本来设计实验的代码就需要花费大量的时间,之后还一个一个费劲的再敲到实验提交系统中去,有时候漏敲、错敲了一两个
代码,那就更加痛苦了,要花好长时间去修改,查询,这属实是花费了很多无意义的时间。
我希望老师可以在作业和实验结束后,为我们讲解一下主要的方法运用以及出现的错误,让我们能够及时了解自己的学习情况和不足之处,以便进行有针对性的改进。​
此外,对于一些难度较大的知识点,老师可以提供更多的学习资源和辅导,帮助同学们更好地掌握。​
感觉可以增加一些前沿技术和实际应用场景的介绍,拓宽学生的视野,让学生了解Java在实际开发中的应用现状和发展趋势。
在今后的学习和工作中,我将继续学习java,不断提高自己的水平,将所学知识应用到实际的工作中。
从基础概念到高级应用,我构建了面向对象程序设计的大致框架,这让我有了满满的成就感。

posted @ 2025-06-22 23:28  夏宇航  阅读(13)  评论(0)    收藏  举报