OO学习最终总结

0.前言:本次主要是针对第三阶段的三次做业以及整个课程学习的总结,这三次做业主要是针对对程序进行重构使得程序能够对功能进行扩展的训练以及对类的设计,因此在此阐述在练习过程当中的问题以及感悟。正则表达式

1.做业总结编程

  1. 三次做业的难度相差不大,但因为这三次没有给出参考UML类图,所有类的设计都须要本身思考设计因此会比给了类图的相对麻烦一点。前两个阶段的做业主要注重基础知识的训练以及理解,如继承封装、多态以及类的聚合等等。该阶段的三次做业都是本身设计类而且对程序进行重构使得能够对功能进行扩展,加深对单一职责原则和“开-闭”原则以及对面向对象过程的理解和体会。层层深刻,让咱们从中学习以及理解。数组

  2.第一次做业的雨刷程序功能扩展设计相对比较麻烦的就是功能扩展部分,须要用到抽象、接口、继承,整个类的设计也是利用类的单一职责将每一部分封装成一个类而且继承各自的抽象类,且一个类只负责该类的职责,类与类之间的聚合来实现整个过程,加深了我对单一职责和“开-闭”原则的理解。Dial类、Lever、Brush类、Agent类各自继承自本身的抽象类,若是不用继承就会发现其实他们之间不少代码都是重复的,用了继承给他们之间创建一个联系,这样就能够减小代码的冗余,并且也能更加体现他们之间的关系,更加符合实际,且可以对功能进行扩展,需求变了只需再new一个新的Agent类就能够了,不会影响以前的需求,这就是“开-闭”原则。接下来的第二次是本身设计类实现统计Java程序中关键词的出现次数,经过此次做业加深了我对于字符串的相关方法以及知识点的学习以及运用,还有让我对于面向对象的设计有了更深的体会。第三次在第二次的基础上更加麻烦一点,须要使用堆栈以及正则表达式,用正则表达式来判断表达式的合法性,用堆栈来计算表达式的值,而且对设计作修改,将它们继承抽象类实现扩展性和复用性,这就是对修改关闭,对扩展开放的“开-闭”原则。总之,三次做业最主要的就是学会本身设计类,以及运用“开-闭”原则使程序的功能完善且实现扩展性。post

  3.第一次做业的雨刷程序功能扩展设计中老是报空指针和数组越界的错误,这两个错误相信并很多见,常常都能遇见,是真的烦人。因此异常处理的优点就凸显出来了,一个异常处理就能够解决,让他遇到异常跳出继续执行下面代码,不对异常处理,能够规避不少异常状况,很是方便。单元测试

  第二次做业的统计Java程序中关键词的出现次数一开始我始终通不过所有关键字测试,后来发现个人53个关键字中有一个不是关键字,也就是关键字找错了一个才致使这个测试点过不了。还有两种注释的测试也没过,几回检查发现是少考虑了/**这种状况。最后一个正常测试到最后也过不了,目前还没发现是哪里的问题,各类测试都没有问题,可是就是过不了该测试点,非常无奈。学习

  第三次做业的表达式求值开始的时候堆栈使用不太好,老是报错,否则就是出现空栈的错误,一次次尝试,一次次修改,终于可以正常运行了,因为以前的屡次做业都运用过正则表达式判断,因此在判断过程花费的时间很少,也相对熟练了一点,整体上也没有很大问题就写完了此次做业。测试

  4.三次花费时间比例为2:6:2。第二次花费时间主要是在最后一个测试点上反复修正,仍然没有发现到底问题出在哪。编码

  5.编程首先就得仔细看清楚需求分析,这个颇有必要,看的越仔细,后期就会花更少的时间来检查这方面的问题;其次须要屡清楚你要作的是什么,怎么作,须要什么,怎么分解成一个个小问题,把这些小问题逐个封装成单独的类,再经过接口以及它们之间的联系创建相应的关系,完成初步设计,在对其针对单一职责和“开-闭”原则对设计做进一步的调整,达到复用性高,设计严谨;再者就是须要提早对异常状况作预判以及处理,亦或者规避,保障程序在任何状况都能正常运行,由于测试的工做老是巨大并且相对片面的,并不能彻底检测出全部的异常状况,因此及时作一些异常处理的规避仍是颇有必要的。固然保证功能的完整正常还不够,还须要对程序进行改善,对功能设计分工明确,使得代码的可以实现复用性以及可扩展性,减小冗余。spa

2.OO设计心得
设计

  1.每个单独的部分经过封装成类,封装的类能够经过继承抽象类或者接口来实现多态性。多态必需要求有继承,抽象类就是为了继承而生,而它们的基础都是类的封装。

  2.单一职责原则:一个类就专一地作一件事。“开-闭”原则:对修改关闭,扩展开放,就是当某个类的方法不知足需求了,不会对其方法进行修改,而是建立一个抽象类让其继承于该抽象类,再另外写一个子类继承它来实现新的需求。

  3.面向对象的思想就是在解决问题过程当中分解成一个个小问题,再把这些小问题做为一个单独的个体来对它们进行处理,它们有本身的功能和状态以及与其余个体之间的联系,而后它们之间相互做用来解决问题。这样的设计方法比较符合现实,其实每一个大难题都是由一个个小问题组成的,因此只要把它们分解成小问题,再逐个解决就能够了。这也是相似的道理。

  4.类主要仍是要坚持单一职责原则,一个类就干一件事,分工明确才有秩序,不会乱成一团。固然也要考虑到“开-闭”原则,加强代码复用性以及扩展性,使得设计更加灵活多变。

3.测试的理解与实践

  1.经过测试能够检查程序的功能是否能在各类情况下正常运行,保障功能正常运行,固然测试的目的并非单纯的为了找错误,而是经过分析错误产生的缘由和错误的发生趋势,能够帮助项目管理者发现当前软件开发过程当中的缺陷,以便及时改进,这样能够保障代码的质量以及程序功能的稳定。只有编码质量有保证,功能才能稳定,才能受到广大用户的好评。因此测试是保障编码质量的重要手段。

  2.使用Junit进行程序的测试是可行的,它能够经过编写一系列的测试来对项目全部的接口或者方法进行单元测试,启动后,自动化测试,并判断执行结果, 不须要人为的干预。只须要查看最后结果,就知道整个项目的方法接口是否通畅。而且各个测试之间是相互独立,互不干扰的。因此使用Junit进行测试仍是一个不错的可行方法。

4.课程收获

   这三个阶段的OO编程训练,一次次的加深我对其思想和设计的理解和体会,更加理解面向对象的含义。在练习过程当中也会碰到不少问题,逐步认识到本身的不足 。学习到OO编程须要始终遵循单一职责原则和“开-闭”原则,这样能够更好地检查代码的错误以及使你设计的代码有更好的复用性和扩展性,减小代码冗余,保证代码的质量。测试也是不能少的,它能够帮你更加全面的检查代码功能问题,减小本身逐篇检查代码逻辑的时间和工做量。

 5.课程学习总结

课程对每一个重要的知识点进行有针对性的学习和训练,让咱们在训练中学习理解,可以学以至用,更好的掌握它们。大致的知识基础有了后,接下来就是学习新的知识和进一步完善每一次设计,保证代码的扩展性和灵活性,让咱们对于面向对象有了更深的理解和感悟。该门课程区别于其余课程,是一个须要日积月累的代码量堆积起来的,达到必定量才会对OO编程有更深一层的理解和感悟,光靠理论知识的堆积是远远不够的,固然也要是有质量的代码量才可以提升本身的编程水平。咱们在课堂上可以学到的,学进去的也不太多,仍然须要课后的学习积累以及训练才能更好的学习该门课程。

相关文章
相关标签/搜索