Java第二周期作业总结

0.前言

针对第5-8周(共三次)的作业发表的总结性博客

1.作业过程总结

第一阶段主要是让我们从面向过程过渡到面向对象,第二阶段则是按照老师设计的UML类图来进一步理解什么是面向对象,以便于我们更加熟练得去运用。

第4次作业个人感觉是最难的,有一个水文数据校验,并且运用到了刚学的但还不熟悉的知识——正则表达式。一开始写这个题目,没有任何思路,甚至连某个类某个函数是干什么的都不知道。这次的作业比较依赖于同学,很多思路和方法都是询问同学了之后才了解。因为写过了第4次作业最难的题目,第5次作业相比于第四次,显得简单了一些,主要是考察类继承和多态,虽然子类很多,但先拆解开一个个写,最后再拼接起来,整个题目显得也是非常容易的,这次作业中让我感到棘手的仍然是正则表达式。第6次作业在第5次的图形的继承和多态的基础上,加了一个梯形类,并且要用到Comparable接口,由于老师在课上已经讲过这些知识。所以也不是很难。但是通过第6次作业,发现封装性非常重要,如果第5次写的好,那么第6次只需要加一个继承与shape的子类即可,不用将整个程序进行更改,十分方便。而继承性中,子类也是父类的对象这一个特点使得很多函数不需要重新定义参数,让整个程序简单了很多。

在第4次作业中遇到的问题主要是正则表达式以及不知道类之间的关系(对UML类图还不太熟悉),询问同学才得以解决。第5次作业问题主要是不知道怎么将图形面积进行排序,对Arrylist不太熟悉,最后是将面积存入list里面,采用list.sort解决的。而第6次问题主要是一开始不太理解ArrayList<Card> cardList,不懂数组里的数据都是Card类是什么意思,自己思考之后慢慢理解了,接着就是在计算面积的时候我的代码由于和第五次的不同(第五次是将面积的数据存入,是double类),因此不知道如何在cardlist里调用GetArea()方法。最后是知道子类是父类的对象,因此可用cardList.get(i).shape.getArea();来得到面积的大小。、

花费的时间比例:6:3:2

除了第4次和第5次外,写代码的时间都不是很多,第六次由于我输出的list是小写,而题目要求是大写,而我本人不知道,以为是代码有错误,因此花费了很多时间。以后在这些细节方面要注意,更严谨一些,让每一项按照规定的输出规范输出,把所有的情况都考虑在内。

2.OO设计心得

面向对象三大技术特性之间关系的理解:

封装就是类可以把自己的属性和方法藏起来,不容易让外界改变自己的值;

继承是子类不但可以包含父类的属性和方法,他还可以派生出自己特有的属性和方法,并且还能重写父类的方法。

多态是同一个行为具有多个不同表现形式或形态的能力,个人的理解是一个函数在不同类中最后的结果是不同的。

面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

单一职责原则:每个类都应该有自己的单一的功能,并且该功能应该由这个类封装起来,同时这个类变化的原因只有一个:他自己本身代码的修改。同时,修改这个类不会对其他的类造成影响。

“开-闭”原则:每个类应当对扩展进行开放,对修改进行关闭。

OO编程思维的理解:我认为,首先应该确定解决这个问题需要有几个类,这些类之间是什么关系,类的功能是什么。之后分别把这些类的内容写出来。最后再通过Main函数将这些类的功能表现出来。

类设计心得:每一个类要独立,不受其他类的影响,类要单一职责,并且尽量能做到重复使用。

3.测试的理解和实践

测试是完成一个整体设计之后的过程,测试要去想测试的方法,测试的用例,首先需要题目要求的验证基本功能是否都被实现,然后针对时间复杂度和空间复杂度去进行去优化。只有当各种测试都能通过,且程序不会崩掉时,代码的质量才是好的,代码才是健全的。

Junit,可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。且在启动后,自动化测试,并判断执行结果, 不需要人为的干预。只需要查看最后结果,就知道整个项目的方法接口是否通畅。并且每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。添加,删除,屏蔽测试方法,不影响其他的测试方法。 开源框架都对JUnit 有相应的支持。

4.课程收获

通过这四周的学习,让我学习到了如何去设计一个类,也学会了类的继承,多态以及什么是抽象类,什么是接口。对类之间相互调用也变得更熟悉,同时也认识到了类的单一职责和封装多么重要。进一步理解了面向对象,以及面向对象相较于面向过程的优势。

5.对课程的建议

希望在题目这方面,难度和题量成反比,每个人的能力和基础不同,我的编程能力就不怎么样,一些最基础的知识也不是很会,每次遇到难点都得很多时间去百度。题量若一多有点应付不过来。此外希望PTA的测试用例可以给得全一点,每个人的理解不同,输入特殊值(比如0)的结果也可能不同,(有的可能直接输出0,有的可能是wrong format)希望在这些方面测试的用例可以给全。

猜你喜欢

转载自www.cnblogs.com/zzk-1115736756/p/12807614.html