第二阶段作业总结

第二阶段作业总结

0. 前言:

此阶段作业就完成度来说,完成的很不好,三次作业得分都很低。第一次作业得了27分,第二次作业得了4分,第三次作业得了58分。第一次作业由于第一题“水文数据校验与处理”确实太难,实在是不知道怎么编写,而这一道题便占了50分,后两题一共50分,但是我写完后总是会有部分答案错误又一直找不出来问题所在;第二次作业是因为自己时间没安排好,在要交作业的最后几小时才开始写作业,虽然只有两道题,但是还是没来得及,当写完第一题时间就差不多了,而恰好第一题又因为一点小失误导致很多错误,在作业截止后经过我仔细的筛查才发现了错误之处,原来是printprintln的问题,我之前很多时候一直会默认使用println,以为他们两是一样的,但在遇到这道题之后我才发现他们两个之间是有区别的,而第二题也因为手忙脚乱去写,写的一塌糊涂,很多地方出现不该犯的错误,导致了这次4分的极低分;而第三次作业还好,在自己查资料、上网搜索的情况下得了58分,虽然不高,但对于自己亲手编写,亲手测试,亲手提交的过程,还是比较满意的,我认为这就是一个提升!下面是三次作业情况的截图:

 

 

1. 作业过程总结:

(1) 三次作业的重点基本都在于封装、继承、多态、接口,这四个点我认为对于我来说是比较复杂的,在理解和运用上相对有一定的困难,于是我在“菜鸟教程”里找到了相关的学习资料,学习了相关的知识,但由于没有仔细听老师讲课,导致理解不深刻,运用不到位不熟练,因此编写这方面代码的能力较弱,这是我JAVA学习中的薄弱点;虽然三次作业中第一次作业的第一题比较有难度,但是总体来说,三次作业的难度是由浅及深的,这个难度体现在代码数量、运用技巧和题目设置上,而知识结构也更是环环相扣,此次作业能大的提升我

们对于这四个点知识的理解。

(2) 对于三大特性封装、继承、多态的理解,我想说的是,对于我们而言封装作用性不大,因为可以用封装的代码也可以不用封装,封装通过settergetter方法来对属性的值进行设定和获取,其目的是增加代码的安全性,增强类的信息隐藏和模块化,当然我不是说它不重要而是对于我们现在来说不重要,但其作用同样不可忽视;继承对我们来说还是很有作用的,它实现了代码的复用和拓展,子类可以继承父类的非私有成员变量和方法,并可以重写非私有成员方法,对我们一段代码的编写很方便也很有逻辑性;对于多态而言,我实在是现在都还没能完全理解它,只能心领,却体会不到它真正的核心思想。之前在CSDN博客中看到一篇博客,网址是:https://blog.csdn.net/kuangsonghan/article/details/80461968

(3) 第一次作业第一道题真的完全不会,我看题看了五遍才知道大概是个啥意思,编写思路更是没有了,在作业结束后问同学要了第一题的代码,我突然发现同学们编写程序的思路都不是很清晰,看着乱糟糟的结构和顺序也不知道他的思路是什么,和同学讨论由于不能当面也会受到影响,实在是让我很难受,而后两道题中有一道答案有错误,其中一道便是被坐标的数学计算弄昏了头,代码看起来冗杂,实在很头大;第二次作业便是之前提到的printprintln的区别了,我错误地理解了两者之间的区别,导致本来全对的题只得了十分之一的分,在知道后让我后悔莫及,不过也给了我一个教训,知道了printprintln之间的区别,以后也不会再犯类似的错误;第三次作业有一个选做题挺简单得了30分,不过前两题由于我时间没分配好,都只是得了一部分的分。

(4) 每次作业花费的时间一般都是从作业开始到结束,每天都会看几个小时,在头脑里有思路的时候马上打开eclipse编写代码,写不下去的时候又停下来,不会死死纠缠,还是比较轻松。但是由于在这次作业的时间里,家里有一些事情发生了耽误,延误了时间,所以下次还是要提前计划好时间,不过这也是没有开学的弊端,在学校里绝对不会发生类似的事情。但还是暴露出了我时间安排上的问题,值得去深思。、

(5) 上面提到过第二次作业的第一大题printprintln的区别,这么一个小小的问题,导致了几十分的丢失,实在很不应该,这体现了编程的严谨性,实在值得我们注意。

2. 设计心得:

(1) 三者之间的关系,我觉得大多时候是多态里运用封装和继承,在继承里实现封装。

(2) 单一职责原则目的在于提高编译效率,旨在一个类的功能要单一,也便于我们维护修改代码;“开-闭”原则的理解是如果有一个代码模块,那么它在扩展性方面应该是开放的而在更改性方面应该是封闭的,就是能够易于修改并且修改时,不改变另一模块的结构和功能。

(3) 软件开发的核心问题之一就是实现代码的重用,面向对象程序设计通过封装、继承和多态提供了巨大的灵活性、模块化、清晰化和可重用性。之前在网上看到一篇博客,里面是这么说的:人可以砍树,这就是一种服务功能,有输入也有输出;它可以提供给外部,而行走,则是自我功能,没有输入也没有输出,外部环境和内部组织,以及环境数据和原料性数据之间的区别。从思维上来讲,面向过程更强调细节,忽视了整体性和边界性,但这与现实世界有很大的出入,因为现实世界中,这种过程都不是孤立存在的,而是从属于某个对象,因此,面向过程虽然反映了现实世界的而一个方面(功能),但无法更加形象的模拟或者表示现实世界。他在博客中还提到:比如,你要吃饭这个动作,在c语言看来,你要先去买锅,煮水,买菜,洗菜等等一系列过程动作你才可以完成,而java这类提倡面向对象的思想,就是你要吃饭,那就让快递送过来。不关心你是怎么做的,我只要吃饭这个动作完成就可以。”出自CSDN博主「东方鲤鱼」的原创文章,看了他对JAVA编程思维生动形象的理解,我有一点点感同身受,我认为编程语言的发展,出现了那么多不同的语言,其根本目的就是为了方便、简化编程的任务,面向对象强调的是整体性且具有更强更简洁的对现实世界或者某一特定任务的表达能力,增强了编程的组织性、重用性、灵活性。便于我们的程序更好地为对象服务,增强程序的可用性。

(4) 类设计的心得其实也没有什么多的总结,总之就是按照代码功能划分,一类一类地分开、细化,进行详细地编写,坚持单一职责原则,高效地划分代码区域提高效率。

3. 测试的理解与实践:

(1) 总之,测试是必须进行的、测试也是代码编写到最后运用的一个关键环节,是不可避免的,毕竟软件测试还是一专门的工作,一种是测试工程师、一种是测试开发工程师,编程能力不一定很强,但是一定要会自动化测试工具的开发。

(2) 建议在网站里看一下Junit的用法,比较有用https://blog.csdn.net/qq_41701363/article/details/86748708

4. 课程收获:

做作业之前一定要安排好时间要多看教程,注重JAVA基础和编程思想,这段时期也掌握了一定封装、继承、多态的基础知识技能,知道了蒙特卡罗仿真方法,还知道了正则表达式,虽然都掌握不精,不过有着基本的能力,能够运用在代码编写之中。

5. 对课程的建议:

建议老师降低一些难度,题量可以多,但一定不要太难,没有必要,尽量能够让我们得分,这样才能激发学习兴趣,对于成绩提升才有促进作用,建议上课不要空讲,能够在每节上课前提前告知内容,做到预习才有好的效果。

 

posted @ 2020-05-02 15:39  我醒着做梦友  阅读(122)  评论(0)    收藏  举报