java面向对象第一次作业周期的总结

前言:大一下学期开始接触了java这门课,表示有点慌,但是经过这几周的学习,我感觉一切还好,这次的博客主要是主要针对java前三次作业的知识总结,在这三次作业中遇到的问题,对java语言的体会,对java面向过程与面向对象的相关比较,同时也是做一下知识总结,对这几周学习java的感受和今后更好的学习这么课。

1、作业过程总结:

(1)、总结三次作业之间的知识迭代关系:

三次作业环环相扣,每一次作业主要为下一次作业做准备,写下一次作业的时候就会发现前一次作业的重要性,前一次作业主要是为了下一次作业打下一些知识以及想法的基础,同时这三次作业的难度也是在不断上升的,第一次作业主要是java的相关语法,第二次作业在第一次作业的基础上增加了相关难度,同时也出现了java的方法使用,但是有了第一次作业的相关语法使用,第二次作业做起来有了知识的基础。第三次作业的跳转还是比较大的,使用了java的类以及方法了,总体上来说第三次作业的难度还是比较大的,但是第二次作业的然我先了解到了java相关方法的使用,同时再结合老师上课的知识,所以还是有很大的知识相连的,总的来说这三次作业的知识迭代就是java基础语法——java编程的严谨以及规范——java初步面向对象的设计;

(2)、如何通过作业逐步从面向过程过渡到面向对象:

 

第一次作业体现的是java的面向过程,主要是为了让我们知道java基础的相关语法知识,掌握一些java语法使用的规则,第二次作业开始有了一点向面向对象上的过渡了,第二次作业使用了java中关键的一个重要点——方法,同时第二次作业在使用方法上在不断的细化,条件的改变就去改变方法的使用,从写题中感受到的就是当你要增加条件的时候就比较更加方便,第三次作业的跨度就比之前的两次作业更大了,第三次作业使用到了类,方法,以及属性,从第三次作业中体会到了java的面向对象的思想同时也感受到了面向对象考虑的不在是面向过程的那个了,三次作业跨度有点大,但是在面向过程过渡到面向对象这个过程中还是有非常帮助,写这三次作业中,个人习惯和思想在不断的改变,慢慢的就考虑面向对象这个过程,三次作业总的来说第一次主要是以步骤来完成作业,第二次作业我感觉主要还是步骤,但是体现了一点面向对象的功能划分,而第三次主要体现的是以功能划分来解决一个问题。

(3)作业过程中遇到的问题以及解决方法:

这三次作业遇到的问题主要是一些新的知识问题还有就是一些细节问题,比如说保留小数点后几位的问题,这对于我来说是一个新的知识点后来上网查了一下知识点找到了几种方法

方法一:String的format方法(推荐)

double f = 111231.5585;

System.out.println(String.format("%.2f", f));

 

方法二:DecimalFormat的format方法

double f = 111231.5585;

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));

方法三:BigDecimal的setScale方法

double f = 111231.5585;

BigDecimal bg = new BigDecimal(f);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);

 

方法四:NumberFormat的setMaximumFractionDigits方法

double f = 111231.5585;

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(f));

然后再研究其中的的方法最后选用了这样的表示方法“

DecimalFormat df = new DecimalFormat("0.0000");
System.out.print("The equation has two roots: "+df.format(roots[0])+" and "+df.format(roots[1]));
再有就是强制转化和一些使用java中的数学函数这些问题了,我选择了老师发给我们文件中找一些相关的知识来,然后写第三次作业的时候有遇到算法上的问题,对于这个问题我试一步步剖析里面的方法,并且使用调试的方法来查找哪里出了问题,再有就是相关类里面方法的使用,以及方法和属性的使用,这写解决方法就是看一些关于这些知识的视频和文章最后一步步解决这些问题。
(4)每次作业花费的时间比例:
第一次作业由于有学习c语言的基础做起来比较简单,大概4-5个小时,第二次作业涉及到了相关算法,我大概花了6个小时左右,第三次作业由于多处算法出现错误,我大概花了半天的时间将这次作业写完,但是这三次作业花的时间还是比较值得,让我学到了不少。
(5)对编程过程的严谨性的认识及教训
在这三次编程过程中对于严谨性让我学到了不少,其中有多次错误就是因为不严谨而导致错误,特别是条件句的时候,有些条件的输出类容大致相同结果没有重视,最后导致找错的时候花了不少时间,还有就是数据超出类型范围这一方面考虑的不过,比如有一个int的数据范围由于没有考虑到结果导致测试点过不去。所以因为自己的不严谨导致花了很多不该花的时间,但是也给了涨了不少的教训,所以你编程的时候一定要看清题目要求,要考虑周全要注意到题目给的比较难以关注的点,这样你才能更好的编程设计。
 
2、oo设计心得
(1)、面向过程和面向对象的比较:
通过这三次的作业第一次作业我只是单纯的想将这个点过了,让我感觉的第一次作业只是为了将这个题给完成,能过输出给的样例的结果,一步一步的给完成,第二次作业写得时候开始想怎么实现这一类相关的题,这样下次改个条件那么就不需要改太多,第三次作业写得时候就在想怎么才能实现这个功能,就开始设计更好的编程所以这三次作业。这三次作业让我感觉面向过程就是一个过程一个步骤一个步骤的,然后再使用函数实现,再调用;而面向对象则是向对象这方面考虑,构造类,再在类里面写方法,实现功能化,把题给分解一个个对象,然后再在对象里面实现这个题的相关功能。
(2)、面向对象设计的基本原则理解
对于面向对象设计的基本原则的单一职责原则,在第三次作业中体会比较大,在我看来单一职责原则就是一个类只做它这个类要做的事,每个类做自己的是,你的这个类出现了问题那么你就去找那个类,一个类出现了错,就找出错的那个类的责任,在你设计的时候就要考虑单一职责原则,这样在你修改功能的时候就便于修改也不用改很多。
(3)oo编程思维的理解:
oo编程在我看来就是将一个东西功能化,再将这个东西所需要实现的功能给分离化,再安排不同的类去实现这些功能,再在每个类里设计如何将这个功能实现,并且始终要遵循单一原则,最后再将这些类给聚合在一些实现这个东西的全部功能,这样只要这个东西的那个功能出现了问题,那么就可以找这个问题所在的类,然后再对这个类进行修改。
3、测试的理解和实践:
(1)、测试对于编码质量的重要性:
在我看来测试可以看出一个代码的质量,同时也可以看出一个代码中出现问题,测试可以看出你的代码那一部分不符合你预期要得到的结果,这样你就可以更好的改一下你的程序,同时测试可以比较两个都可以实现相同功能的代码的质量,可以测试出那个代码的运行时间长短,可以看出那个代码的存在的一些bug,我感觉测试可以让你的代码更加完美,质量更高。
(2)、假如让你设计测试用例你会如何做:
我会设置一个数据范围的临界值,和不在数据范围的样例,以及不符合条件的数据,再设计一些和条件但是比较特殊的样例,这样可以保证代码的可行性,和高质量性。
 
4、课程收获:
学习这么课程让我学到的不仅仅是知识还学到很多东西,比如严谨性,做一件事就要考虑周全,写代码的时候一定要考虑周全,这样才能更好的实现功能,同时遇到不会的不要放弃,自己一定要多思考,也要有发散的思维,要想一想还有没有其他的方法,要广泛的学习,平时也要看一些相关知识,以及对待一件事的认真和态度。
 
5、对课程的建议: 
个人感觉这个课程还是挺好的,通过老师的指导让自己事先有个很好的准备,课下布置的作业也给了我们实践的机会,所以我感觉这个课程还是很不错的,虽然比较累,除此之外好像也没啥。
6、之后一阶段的学习计划:
认真学习一些知识,关注关于就java面向对象的的知识,多去了解,多去实际,多去学习。找一下相关题看看,看看其他人的,再结合自己的想想。
posted @ 2020-04-04 19:15  TREE(L)  阅读(133)  评论(0)    收藏  举报