The second blog

第二次发博,主要是为了总结一下这三次JAVA作业的学习效果、情况以及心得。

  第四次作业主要考了JAVA中的正则表达,以及JAVA基础的有关继承的语法。第五次作业需要我们对继承有一定的熟悉程度随后对使用JAVA中的多态性去写题会轻松许多,同时这也是对JAVA学习的一种考验。第六次作业则考验了对JAVA的封装性、继承性和多态性掌握程度。通过前两次对继承和多态的掌握去更好的写这一次的作业。而且本次作业还有一个对算法进行优化的加分题。本题是求素数练习,考查算法设计与优化。输入一个整数,输出小于等于这个整数的所有素数及数量。刚开始时只是按照普通的排除法一个一个的去选取素数。然而在PTA上运行超时了,去网上搜了一些优化的算法才得出较好的算法,同时对所谓算法以及算法的优化有了更深的认识。

  这三次作业对JAVA中的封装性、继承性和多态性有了更深的理解。首先,封装性是面向对象的第一大特性,封装是面向对象的方法所应遵循的一个重要原则,封装的概念好比一辆汽车,你学开车的时候只需学会诸如踩油门、刹车,转方向盘即可,无需去了解它的发动机是如何发动。封装就像是把所有的东西放进一个密封的盒子里,所有东西合并成了一个整体,你需要用什么,得看这个盒子开了什么样的口。封装性的两个含义就是“合”、“藏”,把对象的属性和行为“封装”成一体,并且将不让外界知道的信息藏起来。封装机制可为整体内的变量及方法规定不同级别的“可见性”或访问权限。而继承则是面向对象方法中的重要概念,用来提高软件开发效率的重要手段。通过继承使得子类获取了父类中声明的属性方法。使程序的开发效率有了很大的提高。通过作业加深了多态性是对象的多种表现形式看法。同时了解了多态的一些性质,可替换性:多态对已存在代码具有可替换性。可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。灵活性:它在应用中体现了灵活多样的操作,提高了使用效率。简化性:多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

  三次作业遇到了很多问题,第四次作业时对继承其实还不太明白,对此请教了同学还参考了他的写题方法。第五次作业时通过反复观看慕课视频和在度娘的帮助下完成了本次作业。第六次作业时一是算法题的优化并不太明白上网解决。第二是对一些继承和输入上的方法有了更深的认识,遇到问题解决问题提高编程能力,第三是测试点上有个别始终过不去在群里讨论后了解了解决方法。每次作业花费的时间比例大概是2:2:1,因为熟悉了继承和多态后最后一次作业比较熟练就较快以及较好的完成了。通过这几次作业深刻认识到了一段好的代码是需要有很好的复用性的。

之前对单一职责原则看到一段话说软件设计真正要做的事,就是发现职责,并把这些职责相互分离。确实,就一个类而言,应该仅有一个引起他变化的原因。当一个类承担了过多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当设计变化时,设计会遭受到意想不到的破坏。而对于开闭原则,对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。要知道一个较好的实践方式是等到变化发生时立即采取行动。在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。

 

对OO编程的理解上加深了对以对象为主体的编程理解。对类的设计要使职责单一化使代码复用性提高。一个程序是否合格符合要求,这肯定是需要检验的,而如何检验,如何快速检验是否合格有时不是那么容易做到的。PTA的检验感觉算是比较全面,通过测试一些特殊的例子和几个普通例子尽量对这个功能实现全覆盖。如果让我来做测试点的检测我觉得尽量多加入平时正常会遇到的情况,而一些特殊的测试点也需要但有些比较极端的测试可以免除。

使用junit进行测试是可行的。

这三次作业对JAVA的封装性、继承性和多态性有了更深的理解。熟悉了继承和多态等的思维。熟练了对类的继承等的代码练习。同时对JAVA中的语法有了更多的认识和更深的理解以及更好的去使用的想法。

通过这这几周对OO的学习让我对编程的理解进一步的提高了。同时通过对面向过程和面向对象的学习的比较得到了更多解决问题的方法。同时不得不感叹当初发现问题和发明这么更方便的方法解决问题的那些人,他们是人类的瑰宝,是文明进步的力量。以此激励自己好好学习,为人类文明科技的进步做出自己所力所能及的贡献。

第三阶段的作业我建议降低难度提高题量这样更能使我们一步一步的去学习和熟悉JAVA。

课程内容上觉得老师讲的很好,很有趣,同时具有启发性,让我们更具发散性思维。但希望有些PTA的题目老师也可以讲一讲这样通过对比来提高我们自身的编程水平和更好的认识自己的问题。

 

  

 

posted @ 2020-05-01 21:48  挺离谱的  阅读(97)  评论(0)    收藏  举报