Java第三阶段学习总结

前言:本次博客是针对第三阶段的学习以及这学期Java课程的一次小结。

一、作业过程总结:

  1.总的来说,第三阶段的作业相比于前两阶段,虽然题目量减少,但是综合性普遍提高,每一道大作业都需要运用大量Java的基础知识以及锻炼我们缜密的逻辑思维,比如第一题关于雨刷类的扩展,其中用到的类的封装、继承、多态,抽象类接口等等,虽然难度不大,但内容较繁琐,需要全方位地考虑可能出现的各种情况。第二题难度大大提升,导致花了很长的时间却依旧没有拿到自己满意的分数, 统计Java程序中关键词的出现次数这道题需要运用Map、List以及正则表达式等知识,而这些恰好是我的弱项,没有很熟练地掌握,而后我花了一些时间去重新学习这部分的内容,对它们有了更好地理解。第三次作业关于表达式的求值,我觉得这道题考察了以下几个点:1)关于表达式格式的校验,可以使用正则表达式或者拆解成一个一个形式去写函数来校验。2)关于表达式求值的算法,这是此题的核心,考察了数据结构以及栈的一些问题,而这些也是我的知识盲区,即是通过网络查询也很难理解。因此没有拿到关于算法部分的分数。

  2.封装在每个类中均有体现,把对象私有化,留下一个公有方法访问,防止对象被篡改。继承在雨刷类中体现,当我们需要添加一种新的雨刷系统时,即可通过不断添加子类来实现,提升了程序的结构化和一体化。多态则运用的较普遍了,如重写(override)、接口(interface)、抽象类和抽象方法(abstract)等等都使用了多态的特性。第三次作业中还使用了栈的相关知识:

  

 1 public class Test {
 2     public static void main(String[] args) {
 3         //初始化
 4         Stack stack=new Stack();
 5         //1.empty()栈是否为空
 6         System.out.println(stack.empty());
 7         //2.peek()栈顶值    
 8         //3.进栈push()
 9         stack.push(new Integer(1));
10         stack.push("b");
11         System.out.println(stack.peek());
12         //4.pop()出栈
13         stack.pop();
14         System.out.println(stack.peek());
15         
16     }
17 }
18   

 

  最后阶段还学习了JavaFX的相关知识:

  

 

 

   这张图是核心,体现了各部分之间的关系,还学习了关于事件(鼠标事件,键盘事件)、lambda表达式、动画以及内部类的相关基础知识

 

 

  3.出现的问题:在完成作业时,对一些内容不熟悉,如Map,List,Stack等,需要通过查阅资料来使用,大大降低了完成的效率,花费了大量的时间,也没有达到预期的效果。最后一些问题还是通过和同学一起讨论得出的结果,还存在一些可能现阶段我还难以解决的问题。

  4.时间比例:第一次作业由于考察的较简单,因此花费的时间相比于后面的两次更少,在第二次作业中(统计Java关键字出现的次数),花费了大量的时间,因为对正则表达式的不熟悉,导致我在开始的时候便无法进行下去,慢慢地这道题就没有完成,打算自己学习到一个新的阶段再回过头去看之前很难完成的题目。

  5.认识:Java是一门需要花费时间与端正学习态度的学科,培养的是一种严密的逻辑思维以及科学的态度,在很多地方均有体现,从正则的校验到每一个数据的读入与输出,我在写作业中就遇到过很多低级的错误导致程序未达到预定的效果,也花费了很多的时间去找,这就告诉我时时刻刻必须有严谨的思维,认真写代码和注释,对自己和别人的阅读都方便。

 

二、OO设计心得:

  1.面向对象设计是那些可以满足应对各种环境的变化,提高复用的一种设计模式。面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达,而我们学习的是针对Java来实现这一面向对象的过程。

  2.面向对象设计模式不像算法,可以照搬照抄,它是更是一种灵活的设计模式。我们进行设计的时候,就是充分的理解和利用OO的几个基本的特征来展开设计(单一职责、开放封闭、里氏替换、依赖倒置、接口隔离、迪米特法则),所以我们必须在进行设计前,要熟悉和掌握面向对象的技术,形成面向对象的思维,夯实Java等面向对象编程语言的基础。

  3.我们在设计一个类是,应该多方面考虑其继承性,可复用性等等,对类内的变量进行封装,对类内的方法选择性公开。类的功能尽量单一化,一个类完成自己本类的工作即可,无需干预其他类的情况。

三、测试的理解与实践:

  1.一个完整的程序,要能实现它的作用,必须要能通过各种测试,通不过测试的代码将毫无作用,如PTA的测试点一样,你通过不了测试,你就拿不到分数,也许你当时没有发现,但如果长时间使用就会发现其存在的bug,到那时候就为时已晚了,这也从反面印证了测试对于代码质量的重要性。

  2.在设计测试代码时,应从多方面考虑,大量的常规测试,边界值测试可以保证代码的质量。

四、课程收获:

  1.对面向过程的理解更深入了,很少会犯低级的语法错误了,敲代码的速度有了提升。

  2.经过了一个学期的学习,感觉从java这门课程的学习中还是收获了许多。从一开始从语言面向过程,到现在Java的面向对象,我发现我更喜欢这种面向对象的设计风格。从开始的什么都不懂,到现在慢慢看到一道题会有自己的设计思维与设计方式,这样的转变对我来说还是很大的。从开始对Java基础知识的学习,到到一些简单的结构使用,再到现在JavaFX的学习,我感觉这门课程教会了我很多的东西,不光是知识量的丰富,更主要的是一种思维模式,要求我时时刻刻以一种严密的逻辑思维以及理性的角度去看待问题,这种思维模式对我的影响巨大,我想,这对我今后学习其他语言乃至进入工作之后都有积极作用。我们一个学期的Java学习就这样结束了,今后还会学习一些关于Java的其他内容,但如果今后在工作中想从事Java相关的工作,还需不断地学习,在现在这个知识更新迭代很快的时代,我们作为将来的程序员,更应时刻保持学习。

五、对课程的建议:

  1.感觉这种不考试的教学模式值得延续下去。

  2.增加实验的比重

  3.多发一些教学的源码(带注释)

  4.每次作业过后能讲解一下关于作业的内容

  

posted on 2020-06-07 17:27  Max'  阅读(248)  评论(0)    收藏  举报