面向对象的学习总结
l 前言:
相较于第一阶、段第二阶段来讲,我们已经是学习和练习了相对很长一段时间的Java了。“单一职责原则”、类设计的复用性、继承与多态、接口的调用、“开-闭原则”和“依赖倒置原则”等这些具有面向对象特征的设计理念在我们的设计中已经是很熟练了。
l 作业过程:
1) 这次作业开始要求我们设计算法。在写作业的时候通过自己去设计UML类图可以很直观锻炼我们的设计能力,看看能不能做到每个类的功能都不冗余。我们自己做的类设计的复用性以及继承与多态的使用在本阶段作业中都得到了考验。接口的调用、“开-闭原则”和“依赖倒置原则”等原则是依然要去满足的。整个学期我们的作业难度和要求都在循序渐进,我们所掌握的知识也在增加。
2) 在写次作业的时候,主要是类的设计,开始的话不能将UML类图和功能和实现方式结合,后面仔细研究了一下才对每个类的功能有了一定的认识,然后再去设计类图。一开始代码写的很长,方法之间的冗余量很大,再有就是处理数据类没设计好,导致我的数据结构都进行了修改。
3) 这个阶段遇到的第一个问题就是正则表达式的书写,一开始是怎么改都达不到预期的目的,后面只能通过把复杂的表达式拆成很多简单的表达式一步一步去校验,才慢慢克服了这个问题,而且就是每次正则表达式书写都要花费大量的时间。再有就是类的设计,自己设计类是真的比想象的困难;再就是算法设计,后面的题目都需要设计算法,算法设计和自己选择怎样的数据结构是很重要的,同时也是很难的。
4) 这个阶段的每次的作业都花了大量的时间,具体比例记不到了,反正都是花了好几天去设计和修改。感觉这个阶段的作业难度整体上要远远超过前几个的作业难度,花费的时间是巨大的。
5) 主要是检验输入的正则表达式,正则表达式太难写了,而且写完了检验正则表达式是否书写正确也很麻烦,只能慢慢去调试;然后类的设计也是难点之一,自己要去设计真正的好用的类图是真的很困难,很多时候都没有想清楚每个类是要干嘛,设计了又修改,重新来过这样的,而且自己设计的类有时候会没有注意到三大技术特性,这就很麻烦,这给后面代码的实现增加了大量的工作量;再有就是算法设计,算法设计往往要和数据结构联系在一起,选择怎样的数据结构往往影响你的算法设计,有时候算法设计好了但是和选用的数据结构不契合,这样改起来就很麻烦,往往要推到重来。每次问题都花费了大量时间来解决,主要是通过查博客问同学来解决的。
l 设计心得:
1) 我觉得对面向对象的三大技术特性是最重要的,设计是需要满足这些特性的,这些特性服务于Java的设计原则,同时基于Java语法,是我们在设计的时候要经常去想的。
2) 单一职责原则:我认为它是Java封闭性的一种表现,类的设计要满足单一职责使代码的实现不那么冗余,使类的复用性得到体现。
“开-闭”原则:我认为“开-闭”原则是面向对象设计的一个很重要的原则,Java很多语法的都是服务于“开-闭”原则的。
3) 这一阶段的题目对于算法设计的要求是远远高于前几次的。
4) 要满足面向对象的三大技术特性,同时要去援护面向对象设计的基本原则,这样的设计才能满足面向对象设计的基本要求,同时要对于算法设计有一定侧重。
l 测试的理解和实践:
1) 测试对于代码来说是至关重要的,代码功能和稳定性的检测都需要靠测试来实现。代码不仅仅要完成对需求的功能上的实现,还应该对特殊情况给予相应的处理,要能在各种情况下提供反馈,Java也提供了异常处理的类和相关的方法。我们编写代码是功能上的实现,但是功能的实用性、稳定性、还有在其他因素影响下的可执行性都需要通过测试来调试。只有能通过数据的测试,代码才算完整。
2) 是可行的,但是要自己去想一些测试点,和一些很偏的特殊情况。其实主要还是我们要去思考需求和异常的一些情况,然后去设计测试点,再用Junit去测试。
l 课程收获:
经过一个学期的学习,Java作为我第一个接触到的面向对象设计的语言,确实开阔了我对于编程的眼界,让我对于我们这个专业有了更深的理解。就Java本身而言,通过学习,我掌握了Java的基本语法和面向对象设计的编程要求,算是一门编程语言的入门。同时,在Java的学习过程中,让我对于面向对象设计的编程很感兴趣,我自己是准备去看看python。虽然整个的Java课程就快要结束了,但是对于Java的学习才刚刚开始,课堂上的东西只是一些基本的面向对象的设计所需要注意的,但Java作为时下最流行的编程语言之一,是必然有它的一些广泛的适用性,像Java的网络编程、io系统等我们还需要自己去学习。
l 课程建议:
希望课程评分给高一点。
浙公网安备 33010602011771号