初学Java,Java是我们学的第二门编程语言,所以对于一个编程能力弱的我是有点怕的。java又叫面向对象的编程语言,上学期我们学的c语言是面向过程的编程语言,初来java,思想还是面向过程。这次周期作业总的来说还是没有太大的困难,首先我来做个总结。
第一次作业主要是熟悉Java的基本语法,其实是和c语言差别不大的,例如switch语句,if else语句,数组等等,这里有点不同,就是第四题判断三角形的类型这里float的精度问题,源码为a*a+b*b-c*c<1e-6,如果是a*a+b*b=c*c编译器就过不去,原因就是计算机不能识别除了二进制数据以外的任何数据,计算机先把数据十进制转换为二进制再进行读取,所以在这个转换过程中发生了精度的丢失,所以这就解释了这个问题。在数据类型方面,在Java里面char类型是一个字节,而c语言里是两个字节,Java里面有long类型,而没有long int类型这里我们需要注意。在初步学习了java之后,我们都知道java里有类和对象,在circle这次课堂作业中图如下

这次的错误原因是类不能包含类,这里需要注意。
下面我们来看看第二次作业,第二次作业已经开始向面向对象的思想靠近了,但因为多次使用static,就感觉还是像面向过程。在这里还有一个问题就是如下图:
原因就是static方法只能调用其它static方法,所以编译器才会报错。其他的就和第一次作业差不多,就是要细心,明白算法就好了。
下面进入第三次作业,第三次作业是在第二次作业基础上里面向对象更近了一步,因为很明显例如第二题
这里new了两个对象,而第二次作业里是没有的,并且会发现static几乎没怎么用到。第三题第四题则是在第二题基础上分了类,就拿第三题来说
这里分了五个UML类图,分别是Day,Month,Year,DateUtil,Main四个类,在UML类图中查看属性和方法等基本信息要比直接查看Java源代码更方便一些。这里虽然做的时间虽然比前几题的时间感觉长了不少,但是这个思路清晰,而且非常满足面向对象的思想,而且如果以后要用到相关的代码就可以拿过去,改也好改,第四题类似。
以上就是我的总结,下面我来谈一谈我的心得。
首先是面向过程与面向对象的比较,这两个差别很大,个人理解面向过程的思想就是拿到一个题不管三七二十一,直接设计,题目怎么说就怎么设计,主要实现功能就行,而面向对象思想是拿到一个题先分类,每个人都有自己的思想,所以分的类不一定是一样的,从这几次作业来讲,面向对象做题显然比面向过程做题来的慢,但是面向对象思路更清晰,例如老师上课讲的农夫过河问题:面向过程和面向对象都可以做这道题,但如果我下次改个条件:羊要什么条件才能过河,如果用面向过程那么这题就要重做了,但面向对象就只要在羊这一类改一句话就可以,这里面向对象的优点就体现出来了。本人对面向对象设计的基本原则理解就是单一原则,所谓单一原则就是一个对象有且仅有一种功能,同时也仅有一种功能需求的变更能够引发该对象实现的修改。然后就是OO编程思维的理解,首先拿到一个问题,我们首先要对它进行需求分析,然后就是设计,设计类,对象,方法等,最后就是实现。
现在是测试的理解与实践,代码它运行时有时间效率还有空间效率,如果没有测试,客户拿到一个没有经过测试的产品,用起来bug不断,那他心里会怎样想,在专业上测试代码专门开了一个专业,由此可见测试对于代码质量的重要性。加入让我来设计测试用例,就拿第三次作业的第二题
来举例子,首先测试是否输入错误,除了选择错误外,还有平年二月二十九,天超过当月所在的天数,月份超过十二;在求下n天中正常值设置两个测试,整型数最大值,最小值测试;在求前n天中同前n天设置一样;在求两个日期相差的天数设置日期小的在前和在后,测试是否出现负数的天数差,最大最小的整型数天数差。
我的课程收获就是从面向过程到面向对象的思想过度的收获,学会分类,画UML图,对复杂问题简化的分析,最重要的是收获耐心(因为测试点写作业花的时间太多了)。
因为课老师教的很好,作业量也还好,所以我对这门课很满意,没有什么建议。
下一阶段的学习就是学会把类分的更好更精准。
浙公网安备 33010602011771号