第三次blog

第三次blog总结

前言:

Blog作业:

blog作业我认为是一种对知识点的复习和再次审查,能对每次作业中的知识点以及不足之处进行一次“反省”。工作量不算大,只要是自己认真写的作业,最后总结的时候一般都是行云流水(但有时真忘了踩坑点在哪里。。。。所以一定要记得要保存错误点QAQ),难度就同写作文一样,不再赘述。

PTA作业:

PTA是主要的课程作业,包括了对各个知识点的实践以及复习,我认为这是一个很好的教学方法,我通过PTA把大部分课上的知识都记住了(除了某些完全概念的知识),工作量一般,如果不理解某些知识或上课没有认真听讲有时就会写的很吃力,要查阅资料(例如CSDN,或者询问豆包deepseek,一定不要用AI写PTA!!!PTA如果不自己写这门课多半是什么都没学到!!!),难度方面仁者见仁智者见智,我觉得大部分的题都不是什么难题,类图也都给出了,只要照葫芦画瓢就行了,除了某些需要计算的题目,有时候不理解其中的逻辑导致公式推导不出来(比如矩形围谷仓那题),就会导致耗时较多,但公式出来了难度就不算大了。

实验:

实验我认为更类似一个开放性工程,老师所给出的类图和条件都比较开放模糊,没有太限制你要用什么结构,什么方式来完成,当然这种模式给了大部分(包括我)这种循规蹈矩的学生一次不小的考验,面对大象装冰箱的时候第一次实验的代码程序有大量可以精简的部分,这也让我认识到自己的不足之处。工作量相较于PTA来说大了不少,先不谈实验系统无法粘贴复制,由于是开放性的工程,所以最终成品总是自己不满意,这就导致了我不断修改修改然后损耗时间。难度方面难度中等,毕竟实验只要完成实验要求,包含实验条件,其他没有什么限制,所以难度是由你自己来定的。

线上线下课程:

课程方面,只要你好好听,打好基础,我认为不挂科是没有什么问题的,工作量自然就是上课时间,对于我来说还好,一周两节课程,网课自己找时间看,所以工作量是正常难度一般,没有什么十分晦涩难懂抽象的知识,都是大白话,当然也是因为我还没有学到精深的部分,才刚刚入门。

面向对象技术总结:

一、封装

学到的内容:

封装是将数据和操作数据的方法封装在类中,通过private修饰符隐藏内部状态,通过getter/setter方法暴露访问接口。

如currentFloor属性使用private修饰,并提供get,set等方法。

示例如下:

认知:
封装确保了数据的安全性和一致性,避免外部直接修改属性导致逻辑错误。在示例中用private修饰属性,以保证其封装。

欠缺:

我的部分类的属性虽使用了封装,但缺少数据检验,例如某些数据没有对负数等不符合条件的值进行验证。

二、继承

学到的内容:

通过extends关键字实现类的继承,子类继承父类的属性和方法,并可重写(Override)父类方法。

示例中CubeGranary继承Granary,使用super关键字调用父类构造方法和属性,如super(length, height)。

示例如下:

认知:
继承实现了代码复用,这里CubeGranary继承Granary并且使用其getLength和getHeight方法。

欠缺:

继承层次较浅,复杂场景下的多级继承(如多层抽象类继承)应用较少,未体现abstract class与普通类的多层继承场景。

三、多态

学到的内容:

多态体现在方法重写和父类引用指向子类对象。例如Granary抽象类的getVolume()方法在子类中被重写。

通过Comparable或者Comparator接口实现排序多态,如Granary重写compareTo方法,使不同类型的粮仓可按体积排序。

认知:
多态使代码具有灵活性和扩展性,例如ShapeUtil类处理AbstractShape类型的对象,无需关心具体是Circle还是Ball,体现了 “接口复用”原则。

示例如下:

欠缺:

对部分多态的理解不够深刻,对于final等其他多态缺乏实践。

四、抽象类

学到的内容:

抽象类通过abstract关键字定义,包含抽象方法(无实现)和普通方法。例如Granary抽象类定义getVolume()抽象方法,由子类必须实现。

抽象类不能实例化,需通过子类继承并实现抽象方法。

认知:
抽象类用于定义类的共同接口和部分实现,例如AbstractShape抽象类定义getArea()和show()方法,使得子类必须实现该方法。抽象类也可以可包含构造方法(如Granary的构造方法),然后统一调用。

欠缺:

抽象类与接口的区别理解不够透彻,例如在某些类中对于类应包含实现的方法于不该包含的方法区分不清,导致类显得臃肿且职责不单一,这是后续应该精进的点。

五、接口

学到的内容:

接口通过interface定义,包含抽象方法和常量,类通过implements实现接口。示例中Comparable<Granary>是接口的应用,实现对象比较功能。

认知:
接口实现了 “多继承” 能力(一个类可实现多个接口),其他大部分与抽象类一致。接口常用于解耦。

欠缺:

代码中接口的应用较少,主要依赖Comparable等内置接口,未自定义复杂接口,对接口的默认方法、静态方法特性了解不足。

六、集合框架

学到的内容:

使用ArrayList存储对象(如ArrayList<Granary>),通过add、get、size等方法操作集合。

使用Collections.sort对集合排序。

认知:
集合框架相较于普通的数组如int[] arr相比,它由更高的灵活性,其不限制上限与可与类进行一定联系,这导致其可容纳的内容和使用场景十分丰富。

欠缺:

对集合的泛型使用不够规范,以及对数组的知识认知不够精进,例如HashMap和set等其他集合框架类型了解较少。

七、异常处理

学到的内容:

通过条件判断(如if(height <= 0))处理输入异常,输出错误信息并终止程序。

认知:
异常处理区分编译时异常和运行时异常,其保证了程序能正常运行以及运行与使用者想法一致。

欠缺:

对于异常的概念认识不清楚,同时对于异常的来源也不够了解。

八、JavaFX

学到的内容:

布局容器:

了解如何使用GridPane、VBox、HBox、BorderPane、SplitPane等布局组件。例如,在GUI作业中登录界面通过GridPane排列表单元素,主界面使用SplitPane分割未支付订单列表、订单输入区和详情展示区。

基础控件:

了解使用Label、TextField、ComboBox、TableView、ListView等控件。

事件处理:

通过setOnAction绑定按钮事件,使用 Lambda 表达式处理登录、提交订单、支付等业务逻辑。例如,payOrder()方法中处理订单状态更新和支付方式选择。

数据验证:在表单提交前验证输入合法性(如非空检查、数字格式校验),并通过Alert反馈错误(如 “货物名称不能为空”“尺寸必须大于 0”)。

属性绑定:

使用SimpleStringProperty、SimpleDoubleProperty实现数据与 UI 的双向绑定。例如,CargoItem类的nameProperty()、lengthProperty()等属性变化时,TableView自动刷新显示。

ObservableList:通过FXCollections.observableArrayList管理货物列表和订单数据,配合TableView/ListView实现动态数据更新(如unpaidOrdersListView实时显示未支付订单)。

动画组件:

了解使用时间戳,TimeLine的使用方法,以及使用Circle、Line、Rectangle绘制图形和使用color等改变图形颜色等。

认知:

认识到属性绑定对于UI方法缩小的重要性,以及各个动画组件与程序的相关联系,通过程序以及各个控件使得界面更加灵活丰富。

欠缺:

对于JavaFx的许多控件以及工具并没有更多认识,对其了解还比较浅显,同时对于其实践经验较少,在面对复杂工程的时候需要思考时间较长,以及结构了解不清楚。

踩坑心得:

总结整门课程学习过程中走的弯路以及吸取的经验教训等

  1. Comparable认识不清楚

第一次Comparable时与Comparetor区分不清楚,使得重写方法时总是记忆错误,导致程序的书写花费不少时间,以及对于Collection.sort的使用与其联系也不清楚,使得在作业要求按某项条件排序时要重新去查阅资料。

  1. JavaFX使用与原程序联系不清楚

在写JavaFx时,不清楚该如何将程序与组件相联系起来,对于不同组件相关联还缺乏实践经验,不能灵活运用,这需要多做题来获取实践经验以及熟悉。

  1. 题目了解不清楚

写较复杂题目时没仔细查看各个环节的要求,这导致一开始写好的程序却不符合题目条件导致需要多次的修改验证,实在是浪费时间。

  1. super的使用了解不清楚

在子类中再次设置了与父类一致的属性,但构造却为父类,这导致了在后续数组的创建时,数据会保存在另一个数组中,需要使用的数据无法使用为空,最终导致报错。解决方法是用super去引用父类的属性,这既能使程序简洁,也能避免报错。

改进建议及总结:

总结:

总的来说整个课程是为了让学生入门JAVA这门语言,其入门难度不大,只要系统学习,按时按质完成作业对于整个知识体系都不会有太大的模糊。整个课程学习时间较长,同时也会导致部分知识如果在不经常刷题的条件下,就会遗忘。所以在后续的学习中我会不断复习这些知识并逐步尝试新的内容,争取更加精进JAVA这门语言。

改进建议:

主要在于PTA的测试样例,会出现部分测试样例通后提交后却一分都没有得到的情况(实在让人哭笑不得)。对于教师、课程、课上及课下组织方式我认为都很不错,上课风趣,且并没有太多为难学生,都是GOOD。对于实验我希望能开放粘贴复制。。。每次提交实验要再次誊抄千行左右的代码,真的让人崩溃没有动力。。。。。

posted @ 2025-06-22 16:12  桦叶梧桐  阅读(18)  评论(0)    收藏  举报