0.前言
此次作业周期主要是针对JAVA中类的继承、多态性的使用方法、以及接口的应用,同时也包含了利用JAVA正则表达式对输入字符串数据进行合法性校验及计算。
1.作业过程总结
①三次作业之间的知识迭代关系
在这一次大作业周期中明显要比第一次作业周期的难度要大,主要是涉及了Java中类的封装、多态、继承等重要知识点的考察。其中作业四第二题的 "图形继承" 和作业五的第二题 ”图形继承与多态“也是都用到了类继承的知识点,同时作业五在作业四的题目背景下增加了对多态的考察。
除此之外,作业六也更是在作业四和作业五的基础上增加了对类的封装的考察,并且通过对接口的实现逐步形成类似于“图形卡片排序“和”图片卡片分组“的小游戏。 这一周期的三次作业之间的知识迭代关系也强调出了类的继承、多态和封装重要性。
②通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性
面对对象的封装性:通过这几次作业我认为面对对象的封装性是将类成员的属性和方法打包成一个整体,然后只向外提供访问接口。这样就避免了外部操作对内部数据的影响,以达到程序安全的目的。
面对对象的继承性:通过这几次作业中的图形继承有关问题我认为面对对象的继承性是指子类可以继承父类的所有属性和所有方法,使得子类具有和父类相同的行为,这样可以大大减少代码的重复,减少编写代码的时间。
面对对象的多态性:通过这几次作业我认为面对对象的多态性是指一个抽象父类可以被多个子类继承,其中这多个子类可以对父类的方法进行重写或重载,从而表现出不同子类之间的多样性。
③作业过程中遇到的问题及解决方法
在作业四的“水文校验及数据处理”的题目中正则表达式使用错误和类图中的一些类的用法和联系搞不清楚导致这一题对于我来说难度很大,在题目提交上屡屡碰壁。
对于题目中的Arrarylist的使用掌握不足,导致在编写代码的时候经常出现错误。解决方法:通过在网上进行有关知识点的查询,开始逐渐掌握Arrarylist的一些基础用法,并在写作业的过程中理解这一知识点的便捷之处。
在作业四的求圆周率的题目中对于产生随机数的用法理解不够深,导致产生的随机数的范围错误。解决方法:通过Math.random()*((coordinate.getAbscissa()+rectangle.getWidth())-(coordinate.getAbscissa()))-Math.abs(coordinate.getAbscissa());成功在一定范围内产生随机数将问题解决。
在作业六中的求素数的题目中最开始写的时候代码运行时间超时,后来在网上对有关知识点进行查询,不断将代码运行时长减短,最后答案正确。
④每次作业花费的时间比例
这三次作业的时间比例大概为5:2:1
⑤对编程过程的严谨性的认识及教训
在这几次的作业中我认识到JAVA是一门十分严谨的编程语言。在对方法的命名时要遵循驼峰原则,输出格式 也要注意规范和仔细。否则教训是花了大量的时间修改代码时才发现错误只是少了个空格或多了个空格。同时在类的设计上注意对象的创建避免出现空指针的情况。而且,一个严谨的代码可以使得程序的多用性提高。
2.OO设计心得
①面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
单一原则:意思是在一个类中就只执行一个功能,当想执行另一个功能的时候应该重新设计另外一个类。这样可以减少因为一个类的修改而导致其他类的错误。
“开-闭”原则:这原则就是对扩展进行开放,对修改进行关闭。使得程序代码实用性提高。
②OO编程思维的理解
我的理解是OO编程思维强调类和对象,我们首先应该把类的设计完善,再进行对象的构建。同时确定好类与类之间的联系,避免出现关系混乱。
3.测试的理解与实践
①测试对于编码质量的重要性
测试是代码编写的必不可少的步骤之一。当代码长度较大功能较多的时候,就需要测试这次代码的功能实现状况和代码运行情况,测试是否出现bug或其他的相关问题。当缺少测试,代码的安全性和正确性就会大大降低。
②查阅资料,假设使用Junit进行程序的测试是否可行
可行。使用Junit进行程序的测试可以大大减少我们对代码出现的错误所进行修改的时间。
4.课程收获
在这次的作业周期下明白了算法精简的重要性,同时在作业的思考与练习下,了解了面对对象中的类的三大技术特性的有关基础知识,锻炼了自己思考问题的严谨性,培养了基本的面对对象的思维。
5.对课程的建议
①第三阶段作业难度、题量的建议
可以适当降低难度,适当提高题量。
②课程内容讲解方面的建议
可以回顾并讲解上节课的课堂作业,并且能够对重要知识点多讲几个例子。在下课的时候还可以把这节课重要的知识点的代码发送到群聊里面。