Java学习总结(二)

Java学习总结(二)

前言

到现在为止第次作业周期已经完成,三次作业都已经按时细致的完成了,但是由于自身的编程能力不强导致的作业完成情况不理想,自身对时间的规划以及掌握不强导致自己经常卡在最后的时间里才去完成最后的作业,也就导致自己没有足够的时间去完成作业,而最后的作业也是最难的。所以针对这个情况在下一次的作业周期中要改善这个情况。以下是对最近一段时间学习的总结

一、作业过程总结

到目前为止,Java的学习已经过去了11周,过去的四周我们一共有三次PTA上面的作业。跟第一个周期的作业已经不一样了,我们已经度过了菜鸟期而有了一定的Java基础。所以在作业的难度上也有了一个提升,第一次作业“水文数据校验及处理”是我遇到的第一个难题,而且是一个非常难拿的题。总共50分我只拿了36分,在这里主要是类的结构与设计没有掌握扎实,导致自己的程序一团乱麻

 

 

 

 

第二次作业在现在看来,是所有作业中做的最不好的一次,两道题76分,第二道“一元多项式求导”60分只得了36分而且是赶在最后提交的,把我的时间规划问题暴露的最彻底

 

 

 

 

 

 

 在这么长时间的学习以及作业的帮助下,直到第三次作业,我才真正感觉到面向对象的思想究竟是怎么样的,对类的设计也不再同以前一样,当然第三次作业的难度有所下降,而且还有一道送分题是老师看我们前几次的作业完成的不理想

 

 

 

 

在完成这三次作业的过程中我的完成时间在逐步的减少,我正慢慢变得熟悉面向对象的程序设计

同时经过这么长的时间我也从新对编写程序时候的严谨有了新的认识,有时候仅仅是>>=号的区别就能让我浪费很多的时间,所以在编写程序之前一定要先构建一下自己的程序需要哪些对象,对象的类有哪些,类中又包含了哪些属性与方法,最终还要在编写程序是打起精神,尽量不出错同时我在学习的过程中也学会了用测试类来检验自己的程序,以及debug来逐步调试自己的程序,效率更高并且能够跟清晰的找到自己程序的逻辑漏洞。

二、面向对象设计心得

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

继承的本质是在已有的类的基础上进行扩充或改造,得到新的方法,以满足新的需要。当一个类B能够获取另一个类A中所有非私有的成员属性和行为时,就称这两个类之间具有继承关系。被继承的类A称为父类或超类,继承了父类或超类的属性和行为的类B称为子类,其中Object类为所有类的祖先,即所有类的父类。

优点:实现了代码复用

缺点:JAVA不允许使用多重继承,即一个子类不能同时继承多个父类。

多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

首先,多态的实现有三个特征:

  1. 使用了继承;
  2. 父类中有abstract方法;
  3. 子类继承并实现了abstract方法。

可以看出多态是同一个事物具有多个不同表现形式或形态的能力。
优点:实现了可扩展性,使代码更灵活
缺点:在上下转型时易出错

封装,就像是一个穿着好看衣服的小姐姐,你能看到的只是表面的,却不知道里面是什么(也许还是个女装大佬)。封装将抽象性函数接口的实现细节包装起来,就像是加了一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,想要访问该类的代码和数据,则必须通过严格的接口控制。

优点:提高了安全性,减少耦合

缺点:为了预防用户的各种奇怪输入,要做更多的工作

(二)面向对象设计的基本原则理解(单一职责原则及-原则)

单一职责原则告诉我们:一个类不能太!在软件系统中,一个类 (大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一 个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化 时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责 封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总 是同时发生改变则可将它们封装在同一类中。

开闭原则,是一种设计模百式,随着面向对象程序设计的思想,应运而生。
开,指的是可以在源代码的基础上进行扩展,比如继承,接口,抽象类等。在JAVA中,之所以用继度承,是在可以直接调用类库的前提下,对其功能进行扩展。不需要应用专者去了解封装类的内部逻辑就可以做开发。
闭,指的是原本封装好的代码不允属许你去更改,比如JDK里面内置的Jar包。

(三)面向对象的编程思维理解

面向对象有一句话是说:万物皆对象。所有具体的现实问题都能够从中抽象出对象,面向对象的思想是更符合人的思考习惯。

 

当人在看待问题时,首先看到的是一个个对象,当人看到一个冰箱的时候,冰箱就是一个对象,这个对象有自己的属性与方法。我想洗一件衣服,我只给了冰箱脏衣服与能源,剩下的一切都是对象在完成。我每想解决一个具体的问题:做饭、洗衣服、看电视,我只要去找到具备我所需功能的对象:电饭煲、洗衣机。如果没有这样的对象:电视机,那就需要我们去创造一个这样的对象:买一个电视机,这样能够简化开发步骤并且提高重复利用率。面向对象主要有三大特征:封装,继承与多态。

三、测试的理解与实践

测试对于编码质量与编码的效率的重要性不言而喻,测试的主要目的主要是尽早尽快的发现编码的逻辑错误,以减少后期修复与维护的成本。而且测试一定要伴随着代码编写而同时进行,以避免船大头难调的难题,同时也是为了让程序员对自己代码的功能与不足进行更直观的认识,以利于后期的开发。

在设计测试用例的时候,要知道测试的主要目的就是发现错误,所以应该在科学的思想下竭力设计能暴露程序错误的测试用例,尽量从偏门,易出现逻辑错误的方向发掘,同时追求高效性,用尽量少的测试用例去检测更多的错误,一个好的测试用例极有可能发现尚未发现的错误。

四、课程收获

通过这段时间的学习,我接触到了面向过程的思想,学习了这种全新的编程思想对于自己的提升很大。对象,类,属性,方法,封装,继承多态,单一职责,“开闭”原则等等的学习更是让我获益匪浅,同时逐渐迭代的作业同样充分的锻炼了我。同时在这次作业周期的过程中我暴露出来的问题也实在是太多,所以我要针对这些问题逐步去解决,在下一次作业中我也会做的更好。我也初步掌握了面向对象的编程思想,对于以后的学习也充满信心,希望我以后能够对面向对象思想的理解逐渐加深。

五、课程建议

希望以后的学习中能够更多的以例子为载体,讲解具体的问题,阐述复杂的概念同时作业的难度,以及题量都是比较合适的,没有其他有问题的地方

 

posted @ 2020-04-29 12:19  没钱拜神  阅读(138)  评论(0)    收藏  举报