关于第三阶段学习java总结

0.前言

本次博客撰写是针对于前三次的作业的一次总结性的内容。

1.作业过程总结

①第二阶段第一次作业7-1是雨刷程序功能扩展设计,这个问题看起来很新颖很复杂,还有同时需要我们用到单一职责原则、迪米特法则、合成复用原则的基础上具有良好的扩展性(开-闭原则)、里氏代换原则、接口隔离原则及依赖倒转原则。这个原则看起来确实比较复杂,但是用起来就像是纸老虎,就是唬人,很多原则就是我们平时会注意到的点,而且由于给了扩展前的函数,这个题就简单一点。

第二阶段第二次作业7-1 统计Java程序中关键词的出现次数,这个题目就很复杂了,首先他需要注意到(

1.注释中出现的关键字不用统计

2.字符串中出现的关键字不用统计

3.统计出的关键字及数量按照关键字升序进行排序输出

4.未输入源码则认为输入非法

这些注意的点就让这个题目复杂了特别多,而且又要用到map和正则表达式,现在还未解决。

第二阶段第三次作业7-1 表达式求值,这个感谢老师写的一个PPT,这个让我才对stack栈有比较了解的思路,然后让我开始慢慢摸索了这个题目,慢慢的花时间也写了出来,主要用到了stack和ArrayList数组两个一起混合使用。

单一职责原则:在软件编程中,谁也不希望因为修改了一个功能导致其他的功能发生故障。而避免出现这一问题的方法便是遵循单一职责原则。打个比方,类T只负责一个职责P,这样设计是符合单一职责原则的。后来由于某种原因,也许是需求变更了,也许是程序的设计者境界提高了,需要将职责P细分为粒度更细的职责P1,P2,这时如果要使程序遵循单一职责原则,需要将类T也分解为两个类T1和T2,分别负责P1、P2两个职责。但是在程序已经写好的情况下,这样做简直太费时间了。所以,简单的修改类T,用它来负责两个职责是一个比较不错的选择,虽然这样做有悖于单一职责原则。(这样做的风险在于职责扩散的不确定性,因为我们不会想到这个职责P,在未来可能会扩散为P1,P2,P3,P4……Pn。所以记住,在职责扩散到我们无法控制的程度之前,立刻对代码进行重构。)

里氏替换原则:当使用继承时,类B继承类A时,除添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。

接口隔离原则:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。本文例子中,将一个庞大的接口变更为3个专用的接口所采用的就是接口隔离原则。在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。面向接口编程。

依赖倒转原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

迪米特法则:减少类与类之间的耦合度,就是尽可能的单一写对象,让他们都单一起来,不然更改的时候会很麻烦,出了问题的话,就是把很多类都要改,所以编码是最好执行迪米特法则,不然编码时爽,改码时自己会很麻烦,改的自闭。

开闭原则:这个原则最抽象,他是里氏代换原则、接口隔离原则、依赖倒转原则、迪米特法则及单一职责原则的总称这个法则比较抽象吧。

map集合:Map集合的key和value都可以是任何引用类型的数据。Map集合的key不允许重复,value允许重复。key和value之间存在单向一对一关系,即通过指定的键可以找到唯一,确定的value。Map集合中获取数据时,只要给出指定的key,就可以取出对应的value。主要通过键找值,双向集合,比价特殊,比起list和set会复杂点。

stack栈:这是一个类似于数组的东西,但是他的原则,先进后出,然后还有里面有push进栈功能,pop出栈功能,以及得到栈顶peek功能,这个是一个比较特殊的线性结构,只能看到栈顶元素,所以这里会出现算法的问题,老师帮我们写了PPT来解决这问题。

③遇到的主要问题就是现在没类图不知道动手,每次都是看了很久的题目然后懵了,自己最近也慢慢试着写类图,然后也开始慢慢的解决问题。

④这一次第一次作业自己花了两小时左右写完的,因为有简单的功能,在基础上加功能就行了,还算不难。

第二次作业自己花了几天时间吧,也没把这个题目给整明白,里面的思路比较复杂。

第三次作业主要是老师发了PPT以后自己才开始花了一两天时间慢慢的写好了。

⑤编程过程中的逻辑一直很严谨,自从自己学习C语言开始就发现编程这东西,还是一定要去动手,虽然他比较难,但是自己只要肯花时间去写去想去改去查,一般的作业是难不倒我们的,认识就是写代码就是要静下心来,不能浮躁,自己不会先在纸上写写看或者自己去找视频看看理解一下思路,然后自己一步步的来解决他,教训就是自己一定要多写代码别去无中生有凭空想象,那样会让自己更无法入手导致自己不敢写,还是自己要多动手吧。

2.OO设计心得

编写优秀的面向对象代码并不是一件容易的事情,优秀的OO代码如行云流水,糟糕的OO代码让人觉得浑身起鸡皮疙瘩。编写优秀的OO代码要求程序员有一定的自我修养,能够以抽象的思路看待问题,找到问题的核心并对问题域进行分解。它强调的是一种解题的思路,但这个解不是唯一的。

3.测试的理解与实践

对于第三次作业,对于测试发现了这个重要性,当你无法运行一个程序时,你又觉得他没啥毛病,一定要eclipse去debug它,这玩意很好使,你可以通过他的控制台看到他里面一步步的数据,然后发现你哪步数据与你想象中的不一样,你可以选择去修改它,虽然这是一个漫长的过程,但是对于以后的开发我认为是很有用的。

4.课程收获

通过这几次作业学会了面向对象的六种基本原则、理解了map的使用方法、正则表达式的重要性和stack栈的使用。

5.对课程的建议

希望以后老师布置了比较难的题目,可以放类图在上面,这对我们帮助比较大,然后就是可以像这次一样,将核心知识点然后以一种PPT形式呈现给我们看,我们看到这个至少也知道动手,不然有时候难的时候确实不会动手。

上课时源码多点吧,可以讲点课外的东西,课内的代码带过一下就好了。

posted @ 2020-06-07 23:42  钢铁yang  阅读(136)  评论(0)    收藏  举报