第三次blog作业——java课程总结

一,前言

这一学期的面向对象课程对我这个编程小白来说是学到了很多的,了解到了很多东西,也加强了自己的编程能力,也了解和应用了很多规则,从一开始的畏惧这个Java课程以及代码作业到适应,经历了很多。Blog的工作量还有难度相对来时是比较小的,虽然要求的字数很多,PTA的作业也有一些难度,但写完之后的感悟相对来说是比较大的,足够写一次Blog了,第一次大作业的电梯题目对我来说可谓是天梯,尝试了很多遍还是无法做到,跑不出来,挫败感很重,但也让我深刻的体会到了自己的不足,自己还需要不断的练习来鞭策自己,来加强自己的编程能力,也发现了自己写代码的速度是比较慢的,之后的几次大作业的难度相对来说减轻了不少,至少我可以完成这个大作业,不再是第一次的大作业的那种挫败感,而是一种自己会的错觉,有了这个错觉就放松了自己,也就不会去想练编程,直到遇到了javafx,对于简单的界面以及规则是比较和理解的,无非就是创建一个Stage然后再是Scene,然后是界面的排列然后将UI控件加入到其中,我以为只是了解这个,并不会要我们做什么,但实验五的当头一棒,让我慌的不知道怎么办,实验的工作量不是很大,难度也还行,是一次一次实验代码的迭代作业,类似与PTA的迭代大作业,实验四的代码对我来说是很难的,因为我对Comparable和Collections不是很会也不是很能理解,所以写的过程中出现的问题也是层出不穷,实验五再结合一下javafx更是幻神,还要出现动画,这个javafx的动画实现老师在课堂上是没有讲的,需要课下自己去学,最终也就完成了一点。之后出现的航空货运管理实现javafx的界面显示更是地域级别的难度,对此我不知道我是该如何下手,java的线上慕课应该来说是让我最找了解到java的,工作量和难度不是很大也好理解

二,面向对象技术总结

封装

封装是面向对象编程的三大特性(封装、继承、多态)之一,指将数据(属性)和操作数据的方法(函数)捆绑在一起,形成一个独立的 “对象”,并通过访问控制机制隐藏内部实现细节,仅暴露必要的接口与外界交互。在编程中应用封装可以增强对代码的维护性,以及通过一些修饰符来控制访问权限来提高代码的安全性

继承

在学习继承前,我写的代码有大部分都是重复的,在运用了继承红藕,可以降低重复代码的出现率,来提高编程效率,特别是在对一些具有相同特性的物体或问题,它允许一个类(子类)继承另一个类(父类)的属性和方法,子类可以继承父类,可以扩展新特性或重写父类方法,但是要注意的是Java 中一个类只能直接继承一个父类(但可多层继承,子类可访问父类的public和protected成员,无法访问private成员,继承也有传递性,但是继承父类修改可能影响子类,耦合度较高,滥用继承会导致类层次结构复杂,降低可读性。

多态

多态允许不同类的对象通过统一的接口进行调用,从而实现 “同一操作,不同表现”,多态可以通过方法来实现。运用多态降低耦合度:通过父类或者现,代码更灵活。提高可扩展性:新增子类时,无需修改现有代码。代码复用与简化:通过统一接口处理不同对象,减少重复逻辑。但是构造器不能多态,构造器用于创建对象,不可被继承或重写。

抽象类

抽象类是Java中一种特殊的类,它不能直接被实例化,只能作为父类被继承。其核心作用是为子类提供统一的接口规范和部分实现,在定义抽象类需要在类名前加上abstract修饰,还有抽象方法:声明时无方法体(以分号结尾),必须由子类实现,普通方法:提供默认实现,子类可继承或重写。
抽象类的构造方法用于初始化成员变量,子类构造器必须通过super()显式或隐式调用父类构造器。合理使用抽象类可以构建灵活、可扩展的系统架构。

接口

接口 是 Java 中一种抽象类型,它定义了一组方法签名,但不包含方法实现。接口的核心作用是为类提供统一的行为规范,实现多态和松耦合。在声明时需要用到interface ,在实现接口类时需要用到implents来修饰,一个类可同时实现多个接口,以及接口中的方法默认是抽象的,无需显式声明abstract。实现类必须提供所有方法的具体实现,合理使用接口能大幅提升代码的灵活性和可维护性。

集合框架

Java 集合框架(Java Collections Framework) 是 Java 语言提供的一组用于存储和操作数据的类与接口,他可以提供统一的接口和规范,简化数据操作。提高代码复用性和可维护性。优化性能,针对不同场景提供高效的数据结构。集合框架有两大接口派生,Collection接口和Map接口,Collection接口还是比较了解的,可以实现集合的基本操作,比如添加元素,删除元素等,还有List接口,Set接口,Queue接口等等,但是对Map接口我了解的不算多,也不怎么会用,集合框架对动态数组和链表的处理是比较方便的,Java 集合框架通过统一的接口和丰富的实现类。

异常

异常是从方法抛出的,方法的调用者可以捕获并处理异常,在抛出异常时常常会出现throw语句就是抛出一个异常。抛出异常时,正常执行流程中断,throw语句类似与方法的调用,但他调用的时catch块(捕获异常)。
异常可能时通过try块中的throw语句直接抛出,或者调用一个可能会抛出的异常的方法而抛出
异常分为三种主要类型:Error,Exception和RuntimeException。rror是java虚拟机抛出的是内部的系统错误,Exception是你的程序和内部环境所引起的错误,这些错误可以被程序捕获和处理,Runtime Exception是程序设计错误,例如错误的类型转换,访问一个越界数组等。
除此之外异常是可以自己声明的,以及捕获和抛出异常
使用异常处理可以是方法抛出一个异常给调用者,是调用者可以处理该异常,可以讲检测错误和处理错误分开,提高代码的可维护性。

JavaFX

JavaFX 是一个用于构建富客户端应用程序的 Java 库。它提供了丰富的 UI 控件、图形和媒体功能,使开发者能够创建现代化、交互性强的应用界面。
核心组件,舞台(Stage):应用的主窗口,包含标题栏、边框等,场景(Scene):包含所有可视 UI 元素的容器,节点(Node):所有 UI 控件的基类,如按钮、标签等,布局(Layout):控制节点排列方式,如 VBox、HBox、GridPane 等。
界面的最终结果就是核心组件的结合,通过这个课程我初步了解了javafx的运用以及他最终是要怎么样的,还有初步了解了按钮的点击事件的处理但是对其他的一些知识和规则还是不是很了解和运用,如:javafx中的多媒体和其他的UI控件以及事件驱动编程和动画后续还需多多看慕课多练习来增强这方面的编程能力

综上

我对集合框架和异常处理还有javafx等知识的掌握有欠缺,还需要加强。

三,踩坑心得

在这门课程开始时,对一开始的编程作业我还一直都是上个学期的面向对象的编程思路,对单一职责和封装等规则和技术不是很理解,然后看到题目也都就是直接就是开始编写代码,但是得到的收益少之又少,让我走了不少的弯路,所以在之后学习新的东西时,首先需要将之前的思维放开,将自己思考问题和编程的方式转化为适合的方法可以避开很多弯路,在看到问题时,不要着急就上去开干,先理清楚题目需要做什么需要达到什么样的目的再开始编程,不然就算是一看到题目就开始编程到最后还是要重新来一遍,之前的代码就是无用功还浪费时间
再是写代码时记得加注释,不然后面自己去看代码时完全不知道一些语句在那里是要做什么的,为什么会出现在那里,在后面的几次题目集中的前面的题目有一些是要在前面的题目集的基础上来写代码,我之前的代码没有写注释,导致我在完成后面的题目时画了很多时间去理解我之前的代码
要学会画类图,分析题目再画类图可以为编写代码时省下很多时间和精力,自己写代码的思路也不会突然就中断,虽然写了这么多次大作业,自己画类图的时候只有几次,在写电梯时就很难受,但是后面的题目集老师都给出了类图,有类图我也是看一会儿类图就开始编写代码了,这样子就很舒服不会像之前一样绞尽脑汁,也会很有思路,知道自己需要做什么需要设计什么类是否要用继承等
在对属性和类的命名时,尽量用原本的英文,如果只是随意的A,B,C等类名或者属性名,你写到后面的代码时完全不知道这个符号代表的是什么,后面再去改的时候经常会改的不完全出现问题,不仅浪费时间还搞心态。在航空货运管理的大作业中,我在写计算运费的方法时直接就命名为Money,结果我做题目集9时想回去看一下之前的代码看了好多遍才知道这个Money是干嘛的以及在哪里用到了这个,所以在写类和方法的名字时可以写的直接一点可以直接是英文的翻译。

四,改进建议及总结

对与面向对象课程的线下课程,在讲一些难理解的知识时可以举例子来说明讲解,PTA作业的一些测试点可以写清楚一些,让人知道时哪里出问题了,有几次看哪个提交结果,测试点都是t0,t1,t2等等,让人很难知道自己的问题出现在哪里,对java实验,希望可以开通复制粘贴功能,将实验提交系统打开,电脑自带的复制粘贴可能都禁用了,而且在实验提交系统手敲代码的时候由于一些属性和类的命名会比较长,在IDEAL上编写代码时,至少会有快捷方式更不会那么容易出错,在实验提交系统上当你画一两个小时将实验敲完,结果运行之后发现很多方法和属性的名字打错了,或者少打了,那是很影响心态的
总结:通过面向对象程序设计这门课程我学到了很多东西,加强了我自己的编程能力和写代码的速度
培养和加强了我独立思考的能力,希望在之后的学习中自己还可以不断的进步

posted on 2025-06-16 21:22  aioyh  阅读(26)  评论(0)    收藏  举报

导航