欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java第二阶段学习总结

程序员文章站 2023-09-07 20:38:21
0. 前言 这段时间完成了第二阶段的Java作业练习,第一阶段是入手,那么这个阶段则是这之后的学习打基础;这几次作业主要是加强我们对面向对象的封装性、继承性、多态性特征的理解,下面是我对此次作业的总结分析。 1.作业过程总结 (1) 三次作业之间的知识迭代关系 第4次作业涉及数据检验及处理,类的继承 ......

0.  前言

  这段时间完成了第二阶段的java作业练习,第一阶段是入手,那么这个阶段则是这之后的学习打基础;这几次作业主要是加强我们对面向对象的封装性、继承性、多态性特征的理解,下面是我对此次作业的总结分析。

 

 1.作业过程总结

 

(1)   三次作业之间的知识迭代关系

  第4次作业涉及数据检验及处理,类的继承。要求我们依题设计正确的正则匹配,实现多种数据格式的检验及处理,还有就是理解继承特性。

  第5次作业是在作业4的铺垫下,让我们加强理解类的继承、多态性;第6次作业相对于前两次来说,更加简单,也是在前者的练习过后,更加理解了类的多态使用方法,而且这次作业还加入了接口的应用,让程序处理更加多样了。

(2)   通过作业逐步理解面向对象的封装性、继承性、多态性特征

  作业不会刻意的说用到这几个特征,但代码实现上就会反映出这些特征,这也是面向对象编程的重要体现。理解见下文中的对这三个特性的理解。

(3)   作业过程中遇到的问题及解决方法

  ①作业4中题一对输入的数据进行有效性校验要求较高,因此在应对数据的格式测试上挺让人头疼的。具体如下:

   Java第二阶段学习总结

  既然有这么多种不同的格式,这就需要不断地细分,对一条信息进行数据校验、对各种不同数据进行校验、对不同数据的不同格式进行校验……具体的实现就不一一罗列了,总之就是不断地切分功能,最后整合到一起。

  ②作业5题二、使用类的继承、多态性编写程序对简单多项式的导函数进行求解中。同样是在输入输出的格式上花费了不少功夫。

  Java第二阶段学习总结

  在处理格式时,我的处理方法是这样的:先将输入的多项式以“+”分割成一个个单项,在每个单项进行格式匹配,若匹配成功则进行求导处理,当然得到的还是一个个单项,当所有单项都处理好了之后,将单项串成一个完整的表达式。这只是概要的思路,具体实现还是挺困难的。

 

  ③作业6相对比较简单,无非就是设计对象的实现,以及输出的格式问题,这些问题解决起来还是比较轻松的。

(4)   三次作业花费的时间比例

  (花费时间为实际写代码所用时间)对于这三次作业,也许是难度有所加大,所花时间远比阶段一作业多:作业4所用时间大概是10小时、作业5所用时间大概是7小时、作业6所用时间大概是5小时,前后比例为10:7:5 。

(5)   对编程过程的严谨性的认识及教训。

  数据的格式是十分严谨的,对于不同的需求,我们应该能灵活地做出应对,这也就要求我们在编程时多多思考,考虑到尽可能多的情况。在写一个程序时,多多加上一些注释,也是为之后的检查及修改提供方便。

 

2.oo设计心得

(1)     面向对象三大技术特性之间关系的理解

  三大特性:封装性、继承性、多态性。

  ①所谓封装,就是把客观事物封装成抽象的类,类中的私有属性和方法是无法被访问的,表现了封装的隐藏性,增加数据的安全性。简单来说,一个类就是一个封装了特定属性及方法的逻辑实体。依据某个类创建的对象对其内部属性及方法实行不同程度的保护,根据需要来使用对象中的各属性及方法。

  ②所谓继承,就是让某个类获得另一个类或多个类的属性。子类继承父类。实现了继承之后,子类就可以使用继承来的所用方法,同时可以依据需要重写从父类继承来的方法。实现继承大多通过组合来实现,其中有实现继承以及接口继承,在这几次作业中,我们就用到了这两种继承方式。

  ③所谓多态,是指不同的对象,接收到不同的消息会有不同的行为,就像不同的人听到一件相同的事所做的反应都是不同的。同一个类表现出不同的状态,也就是说一个类具备了多种形态。

  继承与封装,一个让类有了通用、灵活、独立的效果,一个让类与类之间有了直接的联系,这也就为多态打下了基础。把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适用需求不断变化。

(2)     面向对象设计的基本原则理解(单一职责原则、“开闭”原则)

  之前不太了解这些基本原则,但经过这几次的作业练习以后,有了更多的理解: ①单一功能原则,即一个对象只有一个功能,专注一个功能。这样的话,如果需求有了改变,只需对该对象所对应的类进行修改,而且这样不会影响到其他的功能,就是实现功能单一 ②开放封闭原则,即一个类写好了,在更改性方面是封闭的,不改变原本的功能;在扩展性方面是开放的,能够实现新功能的添加。③此外还有以下基本原则:依赖倒置原则,接口分离原则,里氏替换原则。其中,接口分离原则要求各个模块之间通过抽象的接口分隔开;简单来说,就是实现你需要用到哪些方法就调用哪些方法,屏蔽掉不需要的方法,同时也防止实施调用的对象访问了不该访问的方法。

(3)     oo编程思维的理解

  在面向对象编程过程中都以对象为主,即把问题的某些内容抽象为某个对象,然后创建出具有属性和方法的类,依据类中的属性和方法之间的各类关系来实现各种功能,在不同情况下实现各种调用。这种将抽象出对象对应实际问题的某些内容的思维,对于以后的软件开发的可维护性、可扩展性以及可复用性等都是有极大的好处的。

 

 3.测试的理解与实践

(1)     测试对编码质量的重要性

  测试对于编码质量很重要,因为在投入使用前,我们对它的细节要求并不是很清楚,就像作业中所给出的测试点经常要多次调试才能过。而测试则可以让我们对代码进行全面检查,一步一步完善每个功能,实现编码的高质量。

(2)     使用junit进行程序的测试分析

  junit是一个java语言的单元测试框架,junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(how)完成功能和完成什么样(what)的功能。我们在编程时使用junit写一些适当的测试是有必要的,junit有断言功能,如果测试结果不通过会告诉我们哪里测试不通过,如果junit报告了测试没有成功,它会区分失败(failures)和错误(errors),在此基础上进行修改,这大大提高了效率。

  在实践中,编写测试代码会使我们的压力逐渐减轻,因为通过编写测试代码,我们也能对类的行为有更确切的认识。以下是我认为比较有必要掌握的技巧:①确保测试与时间无关,不要依赖使用过期的数据进行测试。②尽可能地使用junit提供的assert/fail方法以及异常处理的方法,利用junit 的自动异常处理书写简洁的测试代码可以使代码更为简洁。③测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。④测试要尽可能地小,执行速度快。

 

 4.  课程收获

  通过这四周的学习,在oo方面,以及渐渐养成了面向对象的编程思维,解决一个问题时,慢慢习惯去实现一个个模块化的功能,估计这就是封装吧,同时做了这么多的练习,对于三大特性已经慢慢地体现在了代码中。

  此外,这几次的作业做下来还是觉得挺吃力的,还是得多多练习,把基础打牢靠。

 

5.之后一段时间的学习计划

  结束了第二阶段的学习,在之后的学习中,多多练习写代码,同时由于下一阶段更考验每个人对于类的设计,这就需要在类的设计上多花心思,需要更加针对性地学习。希望能和同学多多交流与探讨。