总结blog
前言:Java整门课程难度总的来说比较大,每次的PTA作业,实验花费时间都较长,Blog作业这学期一共写了三次,前两次都是关于迭代作业的总结。
面向对象技术总结:
这学期关于面向对象编程的内容有封装,继承,多态,抽象类,接口,集合框架,异常以及javaFX。封装,继承和多态是面向对象编程的三大基本特性。
封装指的是将数据和操作数据的方法捆绑在一起,形成类,对外部隐藏对象的内部实现细节,可以防止外部代码直接修改内部对象数据,可以多次重复使用,易于维护,调用时可以不用关注内部实现逻辑。
继承是允许一个类基于另一个类来构建,自动获得父类的属性和方法,同时也可以添加新的特性或修改继承的行为,子类可以自动会的父类的非私有成员,可以扩展父类的功能,为多态提供支持。
多态允许不同类的对象对同一消息做出不同的响应,即一个接口,多种实现,可以产生不同的执行结果,具体调用哪个方法在运行时决定,不同对象可以通过统一接口被操作。
抽象类介于普通类和接口之间,提供了一种不完全实现的类结构,不能被实例化,只有声明没有实现的方法,子类必须实现所有的抽象方法,除非子类也是抽象类。
接口是面向对象编程中的核心概念之一,它定义了一组规范或契约,规定一个类能做什么,而不关心如何做,只包含方法声明,一个类可以实现多个接口,不能实例化但可以通过实现类使用。
集合框架是用于存储和操作一组对象的标准化架构,提供一套性能优良,使用方便的接口和类,位于java.util包中。
Java中的异常处理机制有try-catch-finally,throws等,可以在程序运行时遇到不会报编译错误,但无法正常运行的地方使用,可以让程序忽略这一段代码的错误,继续向下运行。
javaFX是Java的GUI工具,可以利用如布局容器:BorderPane,HBox,VBox,GridPane,FlowPane,StackPane,基础控件:Button,Label,Slider等。
集合框架和异常处理在平时的PTA作业和实验中都基本没有用到,所以也不能很熟练的应用。
javaFX是以翻转课堂的形式进行讲解的,因为有很多用法,也还不能很熟练的运用各种组件,布局容器和动画,接口因为学的较晚,练的题较少,也还不算熟练;相较于前几个,继承,多态,抽象类的运用会更熟练一些。
几次迭代作业最能展示出这几种内容:
这是简单的点线问题,需要做好类的设计,按照类图写好每个类的方法;
这是一个元素父类,然后点线面三个子类继承自元素父类;
这道题增加了容器类,就相当于把输入的数据存储起来,再依次调用,对每个对象进行各自的要求;
输出未排序的各图形的名称和面积,排序后的图形名称和图形面积,总面积;
需要对图形进行分类,把每个相同形状的图形名称和面积输出完后,再输出下一个形状的,各组面积和分别计算,再输出最大的;
简单的对控制杆和刻度盘进行升档和降档操作,改变当前雨刷的速度;
增加1.2两种不同的系统进行控制杆和刻度盘进行升档和降档操作,改变当前雨刷的速度;
这是本学期最难的迭代题目,第一次只有一个类要实现电梯按照指定逻辑进行运行;
这是第二次迭代的类图,需要对代码进行拆分,分为4个类;
第二次的逻辑要求比上一次更加严谨,测试点更多,要求对电梯运行逻辑更加明确;
这是第三次迭代的类图,总的类划分没有太大改动;
第三次迭代总体逻辑与前两次相差不大,但外部请求由之前的<请求楼层数,请求方向>修改为<请求源楼层,请求目的楼层>,对于外部请求,当电梯处理该请求之后(该请求出队),要将<请求源楼层,请求目的楼层>中的请求目的楼层加入到请求内部队列(加到队尾);
踩坑心得:这学期有很多迭代作业,不仅是PTA上的作业,实验也是一个迭代,后四次实验都是在同一个问题上进行迭代,迭代作业最大的感受就是每次的代码都要为以后扩展做准备,如果开始代码没有写好,后续迭代就会很麻烦,比如电梯的迭代题目在判断电梯运行方向上,我的代码中嵌套了太多if-else语句,导致每次要求有一点改变都需要去改动原代码;实验每次改动都很困难,因为最开始代码总的逻辑没有做好,导致后来要求多了后,增加了很多个数组,命名差别也不大,时间久了自己都忘记每个数组是干什么用的了,导致加了很多数组,就会出现忘记在构造方法中给数组赋值,数组中没有元素为空的情况。还有类划分没有做好的情况,导致后续类做不到职责单一的要求,并且方法功能不明确。
改进建议及总结:线上视频讲解可以更详细一点,PTA上关于学的较晚的内容,比如接口等的题可以更多一点,就像抽象类,继承等因为练的题更多,也会更熟练一点;PTA上也没有关于比较器使用的题目,直接就需要在实验中使用,难度较大。