java作业总结2

JAVA作业总结2

作业总结过程

第一次作业开始涉及到JAVA的一个特性——继承,这次作业的难度由难到易,第一题的难度在我看来比后面两题难的多了,第一题主要涉及到正则的使用,花了大量时间在讲代码规格化上,然后可能这是这个学期第一次接触这种要求比较多,然后输入输出又需要规格化的题目,实在是做起来很棘手。第二题相对而言比较简单,是求圆周率的题目,看了指导书之后仔细理解之后会明白没那么难,里面用到了随机数来表示范围。第三题是这学期接触的第一个关于继承的题目,关于shape类的继承,用到的都是最常规的继承知识。第二次作业的第一题涉及到更深一步的继承与多态,也涉及到了Arraylist的使用。第二题是一个关于使用类的继承、多态性编写程序对简单多项式的导函数进行求解的问题,感觉题目难度比第一题大,工作量更大,而且逻辑性更强,且更复杂。第三次作业主要还是关于继承与多态的问题,也涉及到了抽象与接口的问题,前两题的内容与考察点基本相同,题目类似。第三题是一个关于素数的加分题,关于素数的代码是不难的,但是题目所需要的是一个运行时间短的代码,需要查阅资料才能有想法。

在网上看到一个关于JAVA的咱中特性的举例,感觉很利于理解,示例如下

下面是我的理解

对于封装,就是需要将你所写的方法或类包装起来,然后留一两个出入口也就是接口用来与其他的类之间进行交流。

对于继承是最好理解的一种特性,就是你的子类将会继承父类的特性,就像人类遗传一样,如果是父子必然是有相同点的,但是这种遗传是完全遗传,即父类的所有都可遗传给子类,子类也可以有自己的特点,在继承里面又包括了抽象类和接口类。

对于多态,继承是多态的基础,而父类引用指向子类对象就是多态。

在第一次作业中碰到的主要问题就是关于正则表达式的使用,因为这题对输入输出的要求挺严格的,然后就很容易在输出上出问题,而且错误还比较难找,主要题目的要求也很多,写了好多次都没对,就很容易暴躁。还有一个问题就是不太记得随机数的使用,需要百度才可以。第二次作业中碰到的问题就是不知道如何拆分多项式,及圆类的继承中关于如何去通过Arraylist数组来进行生成几个子类及将子类放入,再通过数组里的元素来调用相应对象的方法实现题目要求。在第三次作业中,并没有碰过什么太大的困难,第三次实验只是对继承及多态的

深入理解,唯一一个最大的困难就是那个加分题,本来以为是最简单的一个题目,后来才发现用普通方法写无法测试10000000这么大的测试点,就算勉强能过,运行时间也很长,没有加分的可能,后来在网上查询才发现有很多可以缩短时间的方法。

第一次作业差不多花了三天吧,而且还没完全写出来,第二次作业共花了两天半,第三次作业的话相对比较简单,花了半天,综上所花时间比例为651

⑤通过几次作业我真正认识到在编程的过程中严谨性真的很重要,当你的代码结构比较简单时也许感受倒不会那么深刻,就像第次作业,因为结构比较简单且功能比较单一,所以改起来并不是那么麻烦,只要加上相应的功能就行,但是到了第次作业,有太多方法和类,他们之间相互有联系,如果在写代码时漏写了几种情况,在最后补充修改时就会很麻烦,牵一发而动全身,可能会改的很晕。
2.OO设计心得

①对于封装,就是需要将你所写的方法或类包装起来,然后留一两个出入口也就是接口用来与其他的类之间进行交流。

对于继承是最好理解的一种特性,就是你的子类将会继承父类的特性,就像人类遗传一样,如果是父子必然是有相同点的,但是这种遗传是完全遗传,即父类的所有都可遗传给子类,子类也可以有自己的特点,在继承里面又包括了抽象类和接口类。

对于多态,继承是多态的基础,而父类引用指向子类对象就是多态

我对单一职责的理解就是一个类的功能最好单一一些,不要太过于复杂,但是我的理解好像比较片面,下面是我在博客上看到的一篇关于JAVA的单一职责及开闭原则的描述

 

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。在面向对象中,必须理解其的单一原则及开闭原则,这样才会使得代码的条理更加清晰,易读,然后还必须要牢记JAVA的封装,继承及多态几个特性,并在代码中实际运用上,能更加深刻的理解面向对象这么一个理念。

④关于类的设计,首当其冲的必然是单一原则,一个类不应该用来实现太多的方法,然后在设计类的时候,应该先首先分题目要求,将类的共同特征提取出来,形成一个父类或抽象类或者接口类,这个得视题目的具体情况而定,还有一个就是要使你写的代码有较高的复用性。

3.测试的理解与实践

 ①因为在编码时可能出现很多种情况,出现需要的结果的方式可以有很多种,当你的代码可以运行出你所需的一种结果时,并不代表说你的这个程序可以完成要求的功能,可能输入新的数据可以有不符合要求的结果出现,所以就需要有准确的测试来确定编码的质量。

查阅资料可知,可以使用Junit进行程序的测试。

  1. 课程收获

就首先一定要清楚的划分出面向对象及面向过程的不同,就是在写题目的时候总是很容易用面向过程的方法去解题,然后在面向对象方面没有什么进步。再一个就是总是没办法满足单一原则,总是很容易再 一个类里面写很多方法,然后后面如果出错的话,改起来又很麻烦,而且代码的复用性不是很高。

  1. 对课程的建议

 ①对于第三阶段的话还是建议多出继承方面的题目加强联系,也可以综合性稍微强一点,题量的话跟前两次差不多就行。

课程已经讲的很好了,老师很会举例子,而且对代码的讲解也很细致,但是每次的作业感觉都会有一些超出已学范围,在做作业时出现困难,还希望老师能偶尔多扩展一些基础内容.

猜你喜欢

转载自www.cnblogs.com/yuyating/p/12783633.html
今日推荐