OO第二单元(5-8周)作业总结
1.作业总结:这三次作业主要是要求我们根据老师所给类图进行设计编程,让我们进一步理解面向对象的编程思想,逐步理解面向对象的封装性、继承性与多态性三大技术特性。
①总结三次作业之间的知识迭代关系:第四次作业是让我们理解面向对象的继承特性。第五次作业是在第四次作业的基础上增加了封装性。第六次作业则是在第五次作业的基础上增加了java的多态性。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性:第四次作业是让我们理解面向对象的继承特性,通过CIrcle类,Rectangle类,继承shape类的getArea()方法和构造函数,并且重载这两个方法来进行对面积和周长的输出。第五次作业是在第四次作业的基础上,在各个类里面将属性私有化,通过隐藏对象的私有属性来保护对象的状态,从而对面积进行输出。第六次作业则是在第五次作业的基础上重写子类方法,以此来促使我们理解java的多态性。
③作业过程中遇到的问题及解决方法:
问题一:不熟悉正则表达式。解决方法:通过观看老师的回放和菜鸟教程里的介绍,逐步理解了正则表达式的用法。
问题二:当父类的某方法只有一个参数的时候,子类在继承该方法时,含有两个参数,此时子类并不能继承该方法。解决方法:将 public boolean validate(int x)改成 public boolean validate()。
问题三:将假设boolean型方法为假写成validate()=false,导致语法错误。解决方法:将validate()=false改成validate()==false。
④每次作业花费的时间比例:第四次大作业由于不熟练正则表达式,因此耗费了较多的时间,大约为20小时,第五次大作业由于对面向对象的编程思想已经有较深的理解,大约花费5小时,第六次大作业的多态性不难,因此只花费6小时。
⑤对编程过程的严谨性的认识及教训:编程过程当中,不能出现数学角度理解而计算机不能分析的常规错误,例如:当使用大于等于号操作符时,输入>=计算机时不能读取的,必须输入“ > || = ”计算机才能读懂。另外,在构造方法当中必须申明变量,否则会出现某变量 is undefined。编程过程中最好是一个类一个类的写下来,这样更容易看出错误,否则一次性跳出很多错误容易影响错误类型的判断导致找不出错误。对于Boolean型方法的返回值只能为true or false,不能为其他任意值。对方法的逻辑性也需要十分缜密,例如,当你多次重复输出一行语句时,应当将该语句从循环中提取出来。如果只想结束循环,使用break语句即可,如果想让下面的语句都不执行,则使用System.exit(0);语句即可。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解:
1.封装。根据职责将属性和方法封装到一个抽象的类中。面向对象编程的第一步就是将属性和方法封装到一个抽象的类中。外界使用类创建对象,然后让对象调用方法。对象方法的细节都被封装在类的内部。
2.继承。实现代码的重用,相同的代码不需要重复的写。继承,顾名思义就是子类继承自父类,可以直接享受父类已有的东西(已经封装好的属性和方法)。子类则应该根据自己的职责,做好自己本分的事情(封装子类特有的属性和方法)。
3.多态。多态就是以封装和继承为前提,不同的子类对象调用相同的方法,产生不同的结果。
总结:封装,继承,多态之间的关系如图所示:

②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则):
单一原则:顾名思义,就是指每个类不会互相造成任何的影响,各自保持一定的独立性。
开-闭原则:对于修改代码来说是关闭的,对于扩展代码来说是开放的。
③OO编程思维的理解:首先考虑需要设计几个类,每个类负责实现哪些功能(并且需要如何封装),类与类之间存在什么关系(如继承),其次,是否要用到java的多态特性。
④类设计心得:设计类时,要注意类的可读性以及健壮性。
3.测试的理解与实践
①测试对于编码质量的重要性 :通过测试,我们能从反馈的错误里知道这个代码的逻辑和语法是否错误,是否可以接受任何形式的输入,是否存在一定的bug,如果有,我们可以及时修正,与此同时还能完善我们的OO设计思想。
②查阅资料,假设使用Junit进行程序的测试是否可行:使用Junit进行程序的测试是可行的,但是Junit测试需要满足一定的要求。
4.课程收获
总结这四周来在OO方面的教训及收获:首先,我个人感觉我在这四周的作业训练中收获很大,编程思想以及编程速度有了明显的提高,并且可以根据题意自行创建类图;其次,尤其是在水文校验那题中,我对正则表达式不熟练的缺点完全暴露出来,因此,我感觉对于正则表达式的用法我仍需努力专研,攻下这一难关。另外,我感觉我对类的封装,继承,多态这三大特性已有一定的理解,这也是我能比以往有更快的编程速度的一大原因。其次,我深感java的逻辑性十分缜密,我也常常在这一方面跌跟头,所以还需要继续努力。
5.对课程的建议
①第三阶段作业难度、题量的建议:个人感觉第三阶段的作业难度适中,题量不算多,整体感觉较为良好。能适应过来。
②课程内容讲解方面的建议:希望老师能提供一个让学习委员收集各个同学哪些知识点还是比较薄弱的机会,让我们把不懂的地方暴露出来,然后每周抽出一些时间系统的来解决一下。另外,建议老师发起一个讨论组,让同学们可以集体讨论一些问题,最后上报到老师手里,这样老师可以更加明确哪些知识点需要着重讲解。
6.下一阶段计划:希望能搞懂正则表达式的正确使用方法。OO思想能更进一步。

浙公网安备 33010602011771号