第三阶段作业总结
前言:本次博客主要是对整门课程的总结,以及收获
1、这三周的作业是主要还是关于面向对象三大原则的,其中那题雨刷的例子更是体现了面向对象原则的扩展性。题目的要求是在所给的雨刷程序中重构(Refactoring),使得程序可以任意添加不同种类的雨刷,符合开闭原则。这道题很典型,你必须完全理解了什么是“开闭”,你才能完全做出。在这三周中的第二周的作业,是关于数据结构的,利用List、Set、Map的一种或多种去统计所给Java源码中关键字的个数,并排序输出。这道题中关键是利用正则表达式去除掉题目要求不统计的情况,后再利用split去进行分词处理,再使用Map。而最后一次的作业中要求使用栈去计算表达式的值,这道题还是得利用正则去匹配掉那些不符合的异常情况,再利用栈去计算,这里面需要注意的是运算符号的优先级的顺序。
2、在这三周的作业中我再一次深刻理解了“开闭”原则,以及Java面向对象中的数据结构的初步使用,以及正则表达式的再一次的使用。其中那题雨刷的例子更加体现了这整门课程的核心,雨刷程序的类图:
3、作业中遇到的问题和解决方法:
1)在雨刷程序中我刚开始直接把所有的处理放在一个类中,结果一半测试点过不了,后面我想了想其实这样没必要,利用继承和多态去编写,其实更适合,而且符合“开闭”。
2)在第二次的作业中对关键字排序输出时,当时我不知道该怎么去排序,后面查询资料发现TreeMap可以排序,可以实现方法去自定义排序规则,也可以默认按照字母的排序顺序去排序。
3)最后一次作业关于栈的使用和计算符号优先级的顺序问题。
心得体会:
做题目的时候不能自己随便想怎么做就怎么做,还是要看清题目所给的要求,以及老师上课所讲的面向对象的那几大原则。那个雨刷的程序就是一个教训,刚开始没看清要求,后面花了一天整整去找错误,到之后才发现是某个细节问题没注意,浪费了大量的时间。所以做任何东西之前,都要看明白所给要求。
4、整门课程的总结:
不知不觉这个学期快过去了,而Java面向对象这门课也到了尾声。从刚识Java安装JDk到编写程序解决问题,已经过去了几个月的时间。在这段时间中,除了完成每门科目的学习,每周还要花费时间去做pta的编程作业。Pta上面的作业难度也一次一次的加大,慢慢的开始有些吃力了,花费时间也变多了。在面对一些题目完全没头绪时或者一些测试点过不了时会产生一些厌倦的情绪,但是做出题目的那种满足感是外人不能感受到的。回顾这几个月的学习,从刚开始的封装性和类与类的关系到后来的继承和多态以及数据结构的使用,题目难度虽在变大,但是总的还是脱离不了这几个概念。从设计程序计算年月日到计算表达式的值,
在做题目的过程中,也慢慢的学会到了一些东西。例如:正则表达式。刚开始去接触正则表达式的时候,总是不能理解,到后面经过几次的作业练习,慢慢的熟悉和使用正则表达式。其实正则表达式在编写程序中非常重要,可以简化代码,有时候你写的几十行的if语句只要一小行正则表达式就可以了,可见正则表达式的效率很高。此外我再自己总结一下我所理解的封装、继承和多态。
1)封装:刚开始的时候完全不理解为什么要把成员属性给封装起来,因为用的时候不能直接调用了,感觉多加了步骤,更麻烦了。到后面才明白封装的重要性,在写代码的过程中,你往往要写多个类去完成这个程序,封装可以阻止别的类对这个成员属性的非法访问。并且可以保护成员属性的信息完整性,以及隐秘性。并且在之后的代码修改中,提高代码的可维护性,这些都是很重要的。
2)继承:在编写程序时,经常会出现一些类存在“父子”关系,这时候如果不用继承,你必须重新写那部分的代码,所以继承的好处是简化的代码,提升了代码的可复用性。
在子类中你可以用super去调用父类的构造方法并重写父类的方法。例如:Circle继承了Shape,并重写了父类求面积的方法。


3)多态:多态就是值不同的对象接收同一个信息做出的不同的反应,就好比学生和老师听到上课铃声,一个去听课,而一个去讲课。多态的好处是提高了代码的可扩展性,父类的引用指向不同的对象,实现子类的方法。多态必须建立在继承之上实现的,没有继承也就实现不了多态。
5、对整门课的建议和意见:
1)上课希望可以多讲一些例题和源码,还有希望在题目中去理解概念。
2)Pta的题目难度可以降下来但是题量可以少量的增多,只有多做题目才能更深刻的理解每个知识点,编程本来就是一个需要多训练的,只有通过不断的训练,在练习中进步,才能真正的学到东西。
3)讲课的时候可以省略掉一些概念
4)在做作业之前,可以给点提示或者题目中要用到某些东西时稍微讲一下相关的知识点
5)希望出一些复习的题目
6、总的收获:在学这门课之前,虽然已经学了C语言,但是这门课和C语言还是有很大的区别的,有些概念是C语言中没有的。在经过这几个月的学习,首先是对编程的理解,编程是一项需要仔细和认真的专业,也需要坚持。而Java面向对象编程,要时刻记得那几大原则,这是面向编程的核心。其实在做题目中,我也在慢慢地去培养出一种自学的能力,这个自学能力对软件这个专业来说非常重要,这决定你这个人的高度。总而言之,这几个月的学习不仅提升了编程能力,也提升了独立解决问题的能力。
浙公网安备 33010602011771号