oo第二单元作业总结
0.前言
(1)这一阶段的作业主要围绕图形设计与正则表达式的应用的相关知识,总体难度加大,更加深入得锻炼我们oo思维的代码设计。
1.作业过程总结
(1)本阶段的三次作业第一次的水文数据校验是正则表达式的应用,并且初步锻炼了图形继承求圆周率等简单的图形应用,第二次的图形继承与多态则更深入学习了Java继承与多态的知识应用,同时求导题目也更加深入地使用了正则表达式,第三次图形卡片的排序则是最后对图形的继承与多态的考察,使我们加深对该类设计的理解。
(2)关于Java的封装性,继承与多态,本阶段的作业主要通过对图形类设计的一步步加深来实现我们对相关知识的慢慢熟练与掌握,例如第一次的图形继承则是简单锻炼我们对继承知识的掌握,第二次则在原来基础上加上对多态的应用,第三次则将三种设计思想综合起来,让我们体验Java编程的多样性,加深对相关知识的了解。
(3)对于在作业中遇到的问题,正则表达式则是遇到的一大困难,在这之前没有学习正则表达式也没有用过,所以第一次写时的确不知道怎么下手,在用正则表达式时,多次用到CSDN等软件查阅正则表达式的资料,还有通过老师上课讲解,自己写代码验证等办法,终于是对正则表达式有了初步的掌握。第二则是在使用类数组时,不知道new出数组之后每一个对象还需要new,导致使用类数组一直过不去,最后通过查资料才得知。还有排序等算法的生疏,都导致自己花了大量时间来自己写代码验证实践。
(4)每次作业难度都差不多,每次作业的难度对自己来说都是偏大的,第一次的水文数据题最让自己头疼,第二次的求导个人感觉也很费时间,三次作业都花费了大量时间来完成。
(5)编程的严谨性依旧是十分重要的,要理清输出格式,不能让输出的东西杂乱无序,同时自己的代码也要层次分明,这样在找bug时才能准确定位哪里的问题,不然又要花费大量时间来找bug,得不偿失。在用自己不熟悉的方法时,要事先查阅好资料,自己代码验证再用,不然很容易让自己代码崩掉。特别是设计多层循环,循环中还带着判断,更加需要认真审视代码,理清关系,不然很容易出错,同时能精简就精简。
2.OO设计心得
(1)封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。多态可以消除类型之间的耦合关系,多态好处有可替换性,可扩充性,接口性,灵活性,简化性。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个十分方便。
(2)单一职责:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中。
开闭原则:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。
(3)oo设计主要是在设计时,先将找到要处理的各个对象,再找到各个对象的共同的祖先,逐层抽象。最后确立各个类之间的继承关系。
(4)Java的类设计都需要遵从单一原则和开闭原则,这样每个类,每个对象才能有效快速地实现自己的职责,自己的代码才能符合oo设计,同时代码也能有机地结合起来,而不是杂乱无章。同时要清楚明白各个类的继承关系,把关系的类结合,可以减少代码量。
3.测试的理解与实践
(1)代码的测试一直以来都很重要,关乎代码运行时不会出问题,还要考虑运行时间的问题,提高效率,在写代码时也需要注意规范,这样查bug,看代码才能更加方便。测试时要针对边界数据测试,这样可以看看自己判断语句的界限有没有出错,可以综合测试,能快速找到自己代码中的问题。
(2)通过查阅资料,使用junit测试是可行的。
4.课程收货
通过这四周的学习,我深入地学习了三大特性以及单一原则与开闭原则,在写代码时遇到很多困难,正则表达式,类数组的设计,类直接关系的整合等,这些都需要时间去自己实践,但是三次成绩都不算太理想,总是有些测试点过不去,例如第三次作业图形设计,每种图形的测试都能过去可是所有图形合起来测试却不能,这让自己很苦恼,因为找不到原因去解决,正则表达式掌握也不太透彻,这让自己更加明白自己学习的不足,也体会了Java编程的多样和灵活,今后的学习中要更加认真,这样才能真正学懂Java。
5.对课程的建议
(1)该阶段作业的难度个人感觉还是偏大的,虽然可以完成但是分数却不怎么理想,但是依旧有人可以拿满分说明我们都应该有这个能力去做好这些题,题量正常,我觉得可以降低难度,让更多同学能慢慢去理解Java编程。
(2)关于课程内容,我觉得Java特殊的编程方法与特性需要多加讲解,这样才能让我们更加熟悉Java,可以稍加多和同学互动。
浙公网安备 33010602011771号