面向对象编程第二单元(5-8周)作业总结

前言

本次作业共计三次小作业时长大约一个月,本次作业难度比上次作业大,且得分情况不大理想,充分暴露出不足与弱项。

  1. 作业过程总结

     ①总结三次作业之间的知识迭代关系:这三次作业主要围绕String类、正则表达式、类的继承、多态性、集合进行编程的,这些知识点相互贯穿于题目中,类的继承、多态性以及集合往往需要用到String类、正则表达式进行编程,通过这三次题目,既可以熟悉String类、正则表达式知识又可以熟悉类的继承、多态性、集合知识点。

     ②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装而继承性就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为同样多态性是指每个子类的实例都是父类的实例,但是反过来不成立。而这三次作业恰到好处,通过求Π的估计值,求图形面积等等,正是要应用这三类面向对象的封装性、继承性和多态性,很好地把他们表达出来了。

     ③作业过程中遇到的问题及解决方法:在水文数据处理作业中,遇到了很多麻烦比如正则表达式的写法、如何写出判断正确的正则表达式的方法等等,一切都是自己上网查询资料以及回顾老师上课所讲内容,继而有所思路得出答案;在蒙特卡罗方法求圆周率时,对于三角形面积求法,考虑到正弦余弦定理过于麻烦,在网上搜索得到了海伦公式求解三角形面积 公式中a,b,c分别为三角形三边长,p为半周长,S为三角形的面积就将公式简化论了;除此之外,任意随机数的求法,即使Math.radom()不能取到1,但是作为随机数而言并不影响最后Π的估计值;还有利用正则表达式来一元多项式求导的表示判断正则表达式格式问题等等都是通过询问同学,网上查阅资料获取的。

     ④每次作业花费的时间比例:这几次作业难度相仿,都是一个难题配多个简单题,因而每次作业都是33%左右的时间比例。

     ⑤对编程过程的严谨性的认识及教训:编程过程严谨性毫无疑问时非常重要的,很多情况下,代码如果编译不成问题,最主要的还是严谨性不过关,比如求圆周率那一题,被除数必须写成小数形式,结果才是小数,否者结果就是整数,还有类的多态性是否将对象引用转换等等,这些都是需要很强的严谨性,否者就只能在后面不断debug发现错误,既费时间又废精力。

2.OO设计心得

     ①对面向对象三大技术特性之间关系的理解:面向对象三大技术特性分别是封装性、继承性、多态性,封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面多态性是指允许不同类的对象对同一消息作出响应对象的一个新类可以从现有的类中派生,这个过程称为类继承。。这三者之间相辅相成,共同构成了面向对象编程的核心,是面向对象学习的基础和重要成分。

     ②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则):单一职责:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中“开-闭”原则开闭原则是面向对象的可复用设计的第一块基石,是面向对象设计的目标。一个软件实体应该对扩展开放对修改封闭,也就是说再设计一个模块的时候,应当使得这个模块可以在不被修改的情况下进行扩展,即实现再不修改源代码的情况下通过实现或者继承扩展系统。为了满足开闭原则,我们需要对系统进行抽象化设计,抽象化是实现开闭原则的关键。

     ③OO编程思维的理解:面向对象编程思维不同于面向过程思维,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

     ④类设计心得在本月,我进一步学习了面向对象编程中的类继承、抽象类以及接口,我懂得了如何运用他们解决一些问题,如何用继承、抽象类以及接口完成对应问题。

3.测试的理解与实践

     ①测试对于编码质量的重要性:测试对于代码重要性不言而喻,可以说,没有经过测试的代码就等于零。没有经过测试就不会知道那里出现问题,哪里该进行进一步修改,这样对于代码质量的提高起着非常重要的作用。

     ②查阅资料,假设使用Junit进行程序的测试是否可行:查阅资料可知,如果用先下载相应的 JUnit 相关的 JAR 包,使用简单的 @Test 注解实现我们的测试方法的编写和执行也是可以测试的。

4.课程收获

     总结这四周来在OO方面的教训及收获:在这将近一个月时间的对面向对象编程的学习,我意识到,面向对象编程并不是想象的那么简单,它也需要学习许多知识,学习不同的解题模式等等,但是在面向对象过程中我意识到一定要多做笔记,多积累知识,一定要把每一个重要的知识点都要学透,而绝对不是走马观花,只有这样才能打下坚实的解决问题的基础,之后还需要每天坚持的练习,认识算法,积累不同的解决问题的方案,如此,我认为才能得到良好的进步。再收获方面,我初步认识到了类继承、抽象类、接口以及集合、String类方面的知识,还有类与类之间的联系问题,虽然都懂了,但是或许只是学了一些皮毛,我还会坚持去重复学习,重新认识他们以温故知新。

5.对课程的建议

     ①第三阶段作业难度、题量的建议:第三阶段作业有些难度有些确实大,甚至整个题目下来都没有思路,因而我建议多把题目设置在难度中等或者中等偏上,个人认为我们现阶段不是为了练习难题,而是为了巩固所学的东西,明白他们的用处和使用方法,或者只是在每一阶段最后一次作业留下难题让我们有足够的练习后再接触难题,就不会轻易畏难而退了。

     ②课程内容讲解方面的建议:课程讲解方面我建议需要先给同学们学习的一个框架,明确知道学习的进程、脉络和方式,也方便找到对应哪个方面没有学习好,就能快速查缺补漏。

 

 

 

猜你喜欢

转载自www.cnblogs.com/yh3366/p/12818826.html
今日推荐