oo第十二次作业

  1. 前言
      本次博客针对的是整个学期所有pta的作业,意在总结所有学过的内容,对学过的内容进行汇总并构建起一个知识框架以加深理解,同时思考接下来以后学习应该注意的问题。
  2. 作业过程总结
    ①总结作业之间的知识迭代关系;

前三次的作业通过运用“面向过程”的知识来逐渐想“面向对象”的理念过渡,通过构造类并在类中使用方法,来帮助我们熟悉掌握类的使用,然后是一个日期类的简单应用帮助我们进一步巩固所学的知识。中间三次的作业主要运用到字符串处理类,正则表达式,和类的继承和多态性以及接口的应用的知识。最后三次作业运用了简单工厂模式来做一个雨刷系统,还要map和list数据结构来处理数据,最后则是通过表达式求值帮助我们理解并使用“栈”;

②如何通过作业学习面向对象的知识

  应用就是最好的学习方法,每一次的作业都具有较强的针对性,通过每一次的作业都能够帮助我们尽快理解和掌握这一部分知识的要点最后融会贯通。比如通过前三次的作业虽然涉及的知识不是非常的深,但能够帮助我们学会学习方法,掌握通过互联网自学的能力并且学会看懂UML图,根据需求打造程序,这为未来的工作打下一个良好的基础。中间三次作业则是教会了面向对象的封装性、继承性与多态性三大技术特性,这三大特性大大增加提高了代码的模块性、安全性、可复用性同时降低了代码的耦合性,便于后期的开发和维护,降低代码的重复使用。图形卡片排序游戏帮助我们更好地理解面向对象多态地特性,圆形,三角形,矩形,梯形都是shape类的子类,但具体要调用哪一个并不是在编写代码时决定的,而是由运行程序时决定,这样不用修改程序代码就能让程序选择运行多个运行状态。最后三次作业学会了工厂模式的使用,工厂模式可以使模块清晰化,每个部分都各司其职,分工明确,代码就实现最渐层意义上的“可维护”。Map list tree的数据结构的使用大大降低了数据处理的难度,是必不可少的。最后则是表达式求值,通过求逆波兰表达式和使用逆波兰表达式计算逐渐掌握理解栈的使用。

 

③作业过程中遇到的问题及解决方法

  1. 开始对于构造的类中的方法不知道怎么使用。

解决方法:在主方法中构造对象实例,然后使用类中的方法。

  1. 对于object类型的方法不知如何构造,该返回什么

解决方法:通过不断实验和查找资料发现返回的是一个类

  1. 图方便,写方法时直接复制前面的方法,出现逻辑错误

解决方法:沉心静气,仔细思考找到错误,同时吸取教训,不再图方便,以后经过仔细思考后再写方法。

 4. 问题:水文数据校验及处理一题中匹配数据的正则表达式

  解决方法:查阅相关资料,仔细研究正则表达式的规则,根据题目要求一个一个写出正则表达式。

 5. 问题:在不同的类中输入会导致一些输入的问题

      解决方法:在Main类中定义一个静态Scanner对象,这样在其它类中如果想要使用该对象进行输入,则直接使用Main.input.next输入数据

    6.  问题:如何使用Comparable 接口进行对象的排序

      解决方法:通过查询资料,知道要先重写CompareTo()方法,根据自己所需要用来排序的依据来重写,然后使用Collections.sort(list);实现类从小到大的排序

7.问题:完全不会使用“栈”来求逆波兰表达式并且求值

解决方法:查阅栈的相关资料,了解栈的作用和基本方法,最后根据老师给的ppt求逆波兰表达式并且在这个过程中领会理解“栈”的用法。

    ④每次作业花费的时间比例

    理解题目:2%  编写代码:35% 调试代码:58% 查阅资料:5%

 

 

 

⑤对编程过程的严谨性的认识及教训

         代码的编写从来就是一件非常严谨的事情,这是对自己的负责,也是对其他人员的负责,如果在编程的过程中没有严谨性,程序就很容易出现逻辑错误,同时对于后期调试,修改也会造成一个巨大的麻烦,如果是由其他人员进行后期修改,毫无章法的代码无疑是一个噩梦。比如有一题写图形卡片排序游戏这一题时要在不同的类进行输入,因为不够严谨没考虑到这个问题,导致输入一直有问题而无法通过测试。还有一题直接复制前面代码的时候没有做修改导致逻辑错误。

2 .OO设计心得

①  面向过程与面向对象的比较

面向过程是针对需要达到的目的一步步完成代码编写,而面向对象则是根据需要实现的对象构造一个个的类,将对象抽象化。相比面向过程,面向对象在后期维护的更加方便,而面向过程则在维护时需要更改的地方非常多,非常的不方便

2对面向对象三大技术特性之间关系的理解

封装性:将类型私有信息隐藏起来,不能让客户修改,只能通过一些接口进行调用,这一特性提高了程序的模块性和安全性,同时降低了代码的耦合性。

继承性:子类继承父类所有的属性和方法,也可以拓展自己的属性和方法,或者重写父类所拥有的方法,这一特性提高了代码的可复用性。

多态性:同时拥有多个子类,但具体调用的子类不是在编写代码时决定而是由程序运行时确定,这一特性使得程序可以选择运行多个运行状态。

3面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

单一职责原则:各司其职,一个类或者一个方法“只做一件事”,这一原则可大大降低代码的耦合度,在后期修改时不会因为一个地方的修改而导致多处地方出现错误而一起修改。

开闭原则:开:代码的拓展是开放,闭:代码的修改是关闭的。这一特性使得代码在修改是只需添加新的代码而不用去修改以往的代码,可以减少因代码修改而带来的错误。但同时我们应该注意的是,代码修改并不是完全的而是有限制的,如果完全不能去修改代码那带来的后果将是程序的“臃肿”。

4OO编程思维的理解

参照现实世界,将一个个对象高度抽象化为类,把对象的特征变为属性,把对象能完成的事变为方法。在把类new出一个个对象实例进行操作,这使得面向对象在后期的维护非常方便。类还有封装性便于使用保证安全,继承性提高代码复用性,多态性提高程序拓展性。

5类设计心得

类的设计应做到单一职责原则,一个类只是一个东西的抽象,类里的一个方法只完成一件事,将类做的尽量简单独立。

  1. 测试的理解与实践
    ①测试对于编码质量的重要性

测试对于编码是非常重要的,逻辑错误是非常难发现的,只有通过一次次的断点测试验证过程中数据的正确性,才能够找到逻辑错误,提升代码的质量。

  1. 课程收获
    总结这学期来在OO方面的教训及收获

这个学期学会了面向对象思想的基本特性和基本语法,掌握了继承,抽象类,接口,多态,聚合,匹配,栈,数据结构,模式等知识,完成了面向过程到面向对象思想的过渡。同时学会了自学的能力,因为有很多的知识老师在课堂上是不能全部讲完的,需要自己动手去查找学习,并且以后的技术发展迅速,或许现在所学的语言到了毕业时已不再是主流,但只要我们掌握了自学的能力,一切困难都不再是问题!

 

    

posted @ 2020-06-09 22:56  氮化  阅读(116)  评论(0)    收藏  举报