第二单元作业总结
前言
本此博客是针对第二阶段作业的情况进行总结,第二阶段的作业包括三次作业,三次作业考察的是正则表达式的使用和类的继承、多态性使用方法以及接口的应用。
作业过程总结
①第五、六次作业中都要求使用Java中的字符串处理类以及正则表达式对输入字符串数据进行合法性校验及计算,考察了字符串中的知识,又要求实现图形类的继承,图形类的考察贯穿三次作业,逐步拓展。在第五次作业中,只是简单的实现图形类的继承每个类中的成员变量和方法较为简单,第六次作业中考察图形的继承与多态,是在第五次作业图形类的继承的基础之上进行拓展,对各个子类中的方法属性都进行了扩展,同时还考察了ArrayList的应用以及用Collections类对图形对象根据面积进行排序,第七次作业是考察掌握类的继承、多态性使用方法以及接口的应用,是在第六次作业的基础上进一步的加深。
②理解封装性:封装性是面向对象编程中的三大特征之一,封装性就是把对象的成员属性和成员方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,在第五次作业的图形继承类中,各图形的私有属性都被封装起来,就不可以在对象的外部通过对象的引用直接访问了,只能在对象内部的成员方法中使用。不能被对象外部直接赋值,也不能再对象外部直接获取私有属性的值。
理解继承性:在面向对象中,一个类去继承父类,那么这个类就拥有了父类中的所有成员(除了私有成员),这就是面向对象中的继承性,在第五次作业中,对于图形类Shape的继承,子类图形继承了Shape类,并继承重写了其中的一些方法,在第六七次作业中圆形,矩形,三角形都继承了图形类,拥有图形类中的所有方法,并可以重写图形类中的方法,可以对父类的方法进行扩展。
理解多态性:在图形类的应用中,对于同一个方法,由于调用的对象不同(或者传入的对象不同),最终实现了不同的结果,比如所有的图形类中都有求面积的方法,但是当调用该类中的求面积方法时,如果传入的对象是不同的,就会产生不同的面积值。
③遇到的问题:不会正确的使用正则表达式,对于一些字符串处理的方法不熟练,对Collections类对图形类根据面积进行排序不熟练,导致编写的代码复杂,繁琐,对于接口和抽象类的使用掌握的不好,经常出错。
解决方法:查阅相关资料,熟练正则表达式的使用,多做一些关于正则表达式的简单题型,加深对正则表达式的理解,上网查阅关于正则表达式的使用。查找Collections类的使用发放,通过例子进一步掌握Collections类中如何实现排序。
④第五次作业花费时间比例:第一题30分钟,第二题40分钟,第三题40分钟
第六次作业花费时间比例:第一题60分钟,第二题20分钟
第七次作业花费时间比例:第一题40分钟,第二题80分钟,第三题30分钟
⑤对严谨性的认识:定义父类时,应该保证父类的成员属性和方法都正确完整,子类继承父类时,当父类是接口时,子类应该实现父类中的全部方法。编写类中的方法时,应严格确保类中的方法的正确性,这样在使用对象的方法的时候就可以避免很多错误,同时便于程序的调试,可以保证程序的再次使用,便于对程序进行修改。教训:在编写程序的过程中,编写了一些静态方法,导致程序十分复杂,修改程序不方便,编写类的时候,增加了一些不需要的方法,写代码的时候没有深入考虑面对对象的思想,很多地方用了面向过程思维解决。
OO设计心得
①每一个对象都是其状态和行为的封装,类是Java封装的基本单元,类中定义的属性和行为是这个类的每一个对象都包含的,封装就是隐藏对象的属性和实现细节仅对外公开接口。继承的基本思想是基于某个父类进行扩展,得到一个新的子类,子类可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的某些方法。多态是指将父类对象应用于子类的特征,利用多态可以使程序具有良好的扩展性,实现多态,有两种方式,覆盖,重载。封装、继承、多态是面向对象的三大特性,利用好这三大特性,能够使城整个程序的框架变得非常有弹性,同时可以减少代码的冗余性。
②单一职责理解:按照字面的意思理解就是一个对象有且仅有一种功能,我的理解就是类的功能要单一,不能包罗万象,有明确分工才能使程序更具有弹性,才能使程序更具有效率,如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。
开放封闭原则:我的理解就是不能修改已有的类,但是可以通过扩展增加一些功能以达到客户的要求,可以通过继承已知的类来实现一些功能,如果修改了已知的类,那么继承他的子类也会受到牵连,因此对修改封闭,对扩展允许。
③面向对象是人类最自然的一种思考方式,它将所有预处理的问题抽象成对象,了解这些对象的属性和行为,可以通过对象的属性和行为来解决问题。
④类的设计应该具有内聚性,类应该描述一个单一的实体,而所有的类操作应该在逻辑上相互配合,支持一个一致的目的。如果一个实体担负太多的职责,就应该按各自的职责分成几个类。类的设计应该具有封装性,一个类应该使用private修饰符隐藏其数据,以免用户直接访问它。这使得类更易于维护。
测试的理解与实践
①测试能够找出编码过程中出现的错误,能够提高程序的可行性,能够判断程序对应的功能否正常的实现,能否达到预期所希望的要求。
② Junit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。junit就是别人写好的单元测试框架,使用此框架你可以大大缩短你的测试时间和准确度。
课程收获
通过着四周的练习,掌握了Java类的编写,学会使用了Java的三大特性,深度了解了Java的继承、封装、多态思想,能够利用基本的面向对象思想解决一类问题。但随着学习内容的加深,在一些问题上显得很吃力,比如正则表达式的运用不够熟练,不知道如何使用正则表达式,一些关于字符串处理类的掌握也不是很到位。
对课程的建议
①希望第三阶段的作业难度降低,题目量增加,多加入一些简单的题目进行训练。
②课程内容的讲解希望老师能够讲的慢一些。

浙公网安备 33010602011771号