Java第二阶段总结
0.前言
本次博客主要针对第二阶段Java作业中出现的问题以及是如何解决这些问题的和在解决这些问题后的体会和收获,对Java面向对象思想的自己理解和体会,以及对Java这门课程的一些建议。
1.作业过程总结
①总结三次作业之间的知识迭代关系;
第一次作业中的图形类只是简单的输出子类的面积;
第二次的作业中的图形类则是在第一次图形类的基础上在父类上增加了抽象方法,将父类变成了一个抽象类,而且将每一个图型变量都存进链表里,通过获取链表里的每一个对象来获取该链表的信息,以及通过comparable接口对对象根据图形面积进行排序。
第三次作业中的图形类则又是在第二次图形类上的一个提升。不光要输出每一个图形类的面积,还要对图形进行分组,将相同类的图形放在一起输出。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;
- 在这三次作业中,通过类与类之间的关系,在一个类中创建其他类的对象来利用其他类的方法来获取该类的信息,来理解封装性。
- 通过图形类,创建父类和子类,利用继承和多态性来获取子类的信息,最后进行输出。通过这几个图形类的问题,我很好的理解了继承性和多态性,子类来获取父类的抽象方法来输出自己的信息。
③作业过程中遇到的问题及解决方法
0.刚开始进行练习时,对继承的使用以及继承有哪些特性和要求都不太理解,对于父类和子类的关系没有能够很清楚的进行理解。解决方法:通过多观看视频和一些简单的继承问题的编程实现来逐步了解继承的关系。
1.对于多态性的理解和使用:对于多态性的理解和使用存在误区,一直不能正确理解如何在继承关系中获取自类的方法和信息,特别是对抽象类和抽象方法的使用,更加存在问题。解决方法:对老师上课讲解的支付的例子进行逐步了解,不懂的地方向同学询问,了解在继承关系中是怎么通过父类的方法来调用子类的方法以及对于抽象类和抽象方法的写法和使用是应该注意的地方。
2.正则表达式的使用:在这三次作业中,出现了两题关于正则表达式的题目。在刚开始时,,对于一些特殊字符的表示和一些特殊字符的含义,并没有能够搞清楚,以至于在完成这些题目时难以下手。另一个则是在对字符进行分割以及对分割后每一段字符串是否符合正则表达式,这对于我而言,也是一个较大的难点。因为不知道如何将每一段分割的字符串进行存储以及分别对每一段进行判断。解决方法:多查找有关正则表达式内容的介绍,以及一些简单的正则表达式的写法和自己先编写简单的正则表达式然后在线测试自己写的是否正确。
④每次作业花费的时间比例
第一次和第二次作业花费的时间最多,第三次花费的时间较少。因为第一次和第二次实验时,对类图的关系没有能够了解清楚,再类图关系上,就浪费了很多的时间。
⑤对编程过程的严谨性的认识及教训
- 在编程前要先将题目的原理理解清楚,明白每一步的意思,不要只是盲目的编写代码。
- 在对自己建立的变量进行命名时,要做到见名知意,对变量乱取名,导致自己在后面编写代码时,自己都忘了这些变量的含义,然后就在这些地方浪费了大量的时间。
- 在对格式的编写上,由于不严谨,对于输出格式没有很在意,然后导致输出结果一直错误,然后还找不出原因,浪费了很多不必要的时间。所以一定要注意代码的输出格式,不要大意。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解
封装性:将类的某些信息封装在类里面,不允许外部变量直接访问,只能通过该类的方法来获取。
继承性:继承是类和类的关系,一个类是另一个类的子类,子类可以调用父类的方法和属性,子类还可以有自己的方法和属性。继承性是多态性的基础。
多态性:不同的对象,接收到同一个消息时,产生不同的操作。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
单一职责原则:各自类只负责各自类里面的内容,不去参与影响其他类。
开—闭原则:对于扩展的开放的,对于删改是关闭的。
③OO编程思维的理解
面向对象思维就是把一个个问题映射在一个个物体上,这一个个物体有着自己的属性、功能和状态,通过这些一个个的物体来解决这一个个问题。面对对象最重要的就是类和对象。
④类设计心得
设计类时,一定要先理解好各个类之间的关系,以及每个类是做什么的,该类向其他类传递了什么东西。类设计时一定要复用性高,提高代码的复用性,尽可能较低代码的耦合性。
3.测试的理解与实践
①测试对于编码质量的重要性
通过测试能够体现出代码还有哪些不足的空间和地方,以便于我们去进行优化。对于我们而言,代码不是能够通过测试样例就可以的,我们应该逐步的通过测试,对代码进行一步步的优化。
②查阅资料,假设使用Junit进行程序的测试是否可行
查阅资料得知,Junit进行程序的测试是可行的:
JUnit是一个Java语言的单元测试框架,多数Java的开发环境都已经集成了JUnit作为单元测试的工具。单元测试在软件开发阶段是最底层的测试,它易于及时发现并解决问题。JUnit就是一个进行单元测试的开源框架。
优点:JUnit有断言功能,如果有结果错误,可以通过Junit的结果来判断。结果的正确错误是由Junit判断的,我们只需要看结果就行。
4.课程收获
总结这四周来在OO方面的教训及收获
教训:1.在编写代码前,要把每一个类之间的关系都要搞清楚,不能出现模模糊糊的情况,不然后面就会发现自己前面的想法其实是错误的,然后要进行重写修改,会浪费大量时间。
2.对于格式,要格外注意。有时不小心忽略了格式,结果可能是花费几十倍的时间来查找这个格式的错误,浪费大量的时间精力还会很气愤。
收获:1.对于正则表达式的使用:通过这几次作业,明白了如何使用正则表达式,对于一些有特殊规律的式子或字符串,如电话号码或身份证等,知道了如何去进行判断。
2.对于继承和多态性的使用,明白了父类和子类的关系,明白如何子类如何调用父类的关系。
3.对于抽象类和抽象方法的使用,明白了在用抽象方法时的抽象类该怎么建立,以及怎么通过抽向类来实现多态性。
5.对课程的建议
①第三阶段作业难度、题量的建议
1.作业难度希望能够一步步提升,特别是一些新知识点的使用时,能够先进行简单的问题的求解,在该知识点有了初步了解后再提升难度。
2.作业题量基本适中,如果题目简单则可以略微增加。
②课程内容讲解方面的建议
在讲解题目时,希望能够对类之间的关系,以及类之间传递的信息能够多进行讲解。特别是在类之间传递ArrayList、LinkList链表时,希望能够多进行讲解

浙公网安备 33010602011771号