第三次Blog(面向对象设计课程总结)
一、前言:课程学习全景概览
这学期的面向对象程序设计课,真的让我又爱又 “恨”!整个课程学下来,作业、实验、线上线下课程加在一起,任务量较大,但也让我收获满满。
课程里一共有 11 次 PTA 作业。刚开始的 4 次作业还挺简单的,都是设计一些基础的类,比如学生类、图书类。这些题目和上学期学的 C 语言很多地方都差不多,我就把 C 语言里处理数据的那一套,稍微换成 Java 的语法和类的写法,可以完成。每次花一两个小时就搞定了,对 Java 的基础语法和类的结构有了初步了解。
可到了第 5 - 7 次 PTA 作业,我直接被难住了,作业变成了设计电梯程序。我完全没想到电梯运行的逻辑会这么复杂,什么多楼层响应、优先级分配,还有新请求加进来怎么处理,我的代码跑起来全是错的,有很多错误。没办法,我只能一边啃题目,一边在网上疯狂学习List、ArrayList 这些集合框架的用法(不习惯用课本 网上大神讲解更详细更、),想办法用它们来管理电梯运行的数据。虽然每次作业前两题不是特别难,但整体作业难度和要花的时间一下子就上去了。那段时间,我经常眼睛都看酸了,还是弄不明白电梯程序到底怎么写,最后也没能完整做出来。
第 8 - 9 次 PTA 作业是航空货运管理系统,相比电梯程序,难度稍微降了一点,但新问题又来了。货运订单要处理的信息太多了,发件人、收件人、货物信息、运输路线,变量多得数不过来。我好几次把发件和收件人的信息搞混,一个小错误就能让整个程序出大问题。后来我学着画 UML 类图,把各个类之间的关系和数据流向画出来,才慢慢搞清楚程序该怎么设计。这两次作业还对应着两次 Blog 作业,要求也越来越高。第一次只要总结学习难点,第二次就得详细说清楚自己的解题思路、类是怎么设计的,以及遇到问题怎么解决的。写这些 Blog 虽然费脑子,但也让我对学过的知识有了更深的思考。
第 10 次 PTA 作业专门考继承和多态,这部分我本来就学得不太好,做起题来特别吃力。比如有个图形绘制的题目还要用继承关系把它们联系起来,再通过多态实现不同形状的绘制。我写代码的时候,子类方法重写老是出错,父类和子类之间的转换也搞不明白,网上看了好多视频才稍微有点头绪。实验课也让我印象深刻。五次实验都是围绕动物放进容器来做,难度交大(翘起来也很麻烦),主要是巩固课堂上学的知识。但最后一次实验要用 JavaFX 做图形界面,直接把我难住了。创建窗口、摆放组件、设置按钮功能,试了无数次,才做出一个特别简陋的界面。而且每次实验都要手动把代码输入到系统里提交,一写就是四五个小时,手都敲麻了,但看到程序跑起来的时候,又觉得特别有成就感。
线上和线下课程各有好处。线上课我可以随时看视频,不懂的地方反复学;线下课老师会结合生活里的例子讲,像用汽车举例讲类和对象,一下子就让我明白了抽象的概念。不过翻转课堂对我来说真是个挑战,轮到我组上台讲,都要提前一周准备。不仅要把自己负责的内容学透,做 PPT,还要认真听其他同学讲,准备课堂上交流。虽然过程很煎熬,但也锻炼了我的自学能力和表达能力。
总的来说,这门课难度是慢慢增加的,任务越难,要花的时间就越多。虽然学得很辛苦,但我的编程能力、自学能力还有解决问题的能力都有了很大提升。
二、面向对象技术总结:知识掌握与认知深化
(一)核心概念与技术掌握
1.封装:学封装的时候,感觉就像给类上了一把锁。比如我设计长方形类,把长和宽设成私有属性,外面的代码就不能随便改它们的值了。要是想获取或者修改长和宽,就得通过我专门写的 get 和 set 方法。这样一来,数据就安全多了,别人不能乱改,程序也更好维护。我在写代码的时候,慢慢养成了封装的习惯,感觉代码结构清晰了很多。
1.继承与多态:继承就像 “子承父业”,子类可以用父类的属性和方法,能少写很多重复代码。在电梯程序作业里,我先写了个通用的电梯父类,包含电梯基本的属性和方法,然后再根据客梯、货梯的特点写子类,子类直接继承父类的功能,再加上自己特有的东西就行。多态更有意思,同一个方法在不同子类里能有不同的表现。比如在货运系统里,计算运费的方法,飞机类、火车类可以按照自己的运输规则来重写。不过在复杂的继承和多态场景里,我还是会犯错,比如方法调用不对,类型转换出错,还得再多练习才行。
1.抽象类与接口:抽象类就像一个模板,规定了子类必须实现的功能。在做货运系统作业时,我建了个抽象的货物类,里面有计算运费的抽象方法,不同类型的货物子类就必须实现这个方法。接口则像是一种约定,一个类实现了接口,就必须完成接口里规定的所有行为。我定义了一个可追踪接口,快递类、货运代理类实现这个接口后,就能实现货物追踪的功能。用抽象类和接口,能让代码结构更规范,改起来也方便。
1.集合框架:ArrayList 这些集合类特别好用,在处理大量数据的时候帮了我大忙。我用 ArrayList 存电梯的运行记录,用 HashMap 存货运订单信息,查找和管理数据都很方便。但我在使用泛型的时候,经常因为类型不匹配出错;给集合排序和查找,用 Comparator 接口定制规则,我还不太熟练,得再花时间学学。
1.异常处理:异常处理就像是程序的 “保险”。我写文件读取程序的时候,用 try - catch 语句来处理文件不存在、没权限读取这些问题。程序出错的时候,不会直接崩溃,还能给用户提示,体验好多了。不过自定义异常和复杂的异常嵌套,我还不太会处理,以后得加强学习。
有时错的很离谱,比如:(深深的的无力感)

但每次都成功按时完成了(nice..........)

1.JavaFX:JavaFX 是用来做图形界面的,我在实验课上第一次接触,感觉既新奇又头疼。刚开始连窗口怎么创建、按钮怎么摆放都不知道,布局乱七八糟,按钮点击也没反应。我一点点摸索,才慢慢学会根据界面需求选合适的布局,写对事件处理逻辑。但现在我也就掌握了点皮毛,离做出好看又好用的界面还差得远。
(二)学习收获与不足
学完这门课,我从一个 没听过Java的 ,变成能自己写点微型代码的新手了。我掌握了面向对象编程的核心技术(一丢丢),逻辑思维和调试代码的能力也变强了。不过我也清楚自己还有很多不足。继承和多态在复杂场景下的应用,我还不太熟练;集合框架的高级功能,像并发操作、和流的结合使用,我都没怎么学过;JavaFX 做界面,我只能做最简单的,离专业水平差得远。这些都是我以后要重点攻克的地方。
三、采坑心得:经验教训与成长轨迹
这门课我可没少踩坑,但每一次踩坑都让我学到了很多。
做电梯程序作业的时候,我太着急了,没仔细分析题目,也没设计好程序框架,直接就开始写代码。结果代码越写越乱,各种错误不断。尤其是处理电梯多线程调度,因为没设计好线程同步,程序经常卡死。我只能推倒重来,浪费了很多时间。从那以后,我明白了编程前一定要先把问题想清楚,设计好方案,不然只会事倍功半。
航空货运管理系统作业,因为变量太多,我偷懒没好好命名,也没写注释。等程序出了问题,我自己都看不懂代码,调试起来特别费劲。后来我学习了规范的命名方法,写代码的时候也认真加注释,再看自己的代码,清楚多了,和同学交流代码也方便。
JavaFX 实验我一开始觉得太难,就一直拖着不做。直到快交作业了才开始着急,手忙脚乱地赶工,最后做出来的东西很粗糙。这次经历让我知道,遇到难的知识不能逃避,要早点动手学,多找学习资源,不然最后吃亏的还是自己。
四、改进建议及总结:课程优化与自我反思
(一)课程改进建议
1.实验指导加强:实验课里 JavaFX 这样的新技术太难了,光靠我们自己摸索很费劲。希望老师能在课上多讲些示例代码,现场演示操作过程,或者录些视频教程给我们。再组织我们成立实验小组,大家一起讨论问题,这样学习起来就能轻松一些。
2.翻转课堂支持:翻转课堂虽然能锻炼我们,但准备起来太不容易了。学校可以办一些培训,教我们怎么讲课、怎么做 PPT。老师也多给我们一些指导和反馈,再建个优秀案例库,让我们有参考,这样翻转课堂的效果肯定会更好。
(二)学习总结
回顾这一学期的学习,真的是酸甜苦辣都尝遍了。这门课虽然难,但让我学到了实实在在的编程技术,也让我学会了怎么自主学习、怎么和同学合作解决问题。每一次克服困难,我都感觉自己进步了一点。
以后我会针对自己的不足,制定学习计划,把继承多态、集合框架高级功能还有 JavaFX 好好学一学。希望你我IT人都能在编程的世界里找到乐趣,实现自己的想法!
浙公网安备 33010602011771号