19201426-张超-java第二阶段总结性博客
第八次作业
0.前言
现在Java的学习第二阶段也已经结束了,通过第二阶段的三次作业,进一步认识Java和面向对象的思想,对于Java语言的掌握和运用也更加熟练了。
1.作业过程总结
①总结三次作业之间的知识迭代关系;
这三次作业分别是第五次的水文数据的校验,蒙特卡罗方法求圆周率和图形的继承;第六次作业的图形的继承和多态,和一元多项式的求导;第七次作业的图形卡牌的排序游戏和图形卡牌的分组游戏;水文数据的校验和一元多项式的求导两个题目都是结合字符串地高级运用,使用到了Stringbuilder和一些其他的数据类型地运用,且难度都很大,两个题目不同情况的字符截切和比较、再加以的校正和计算。蒙特卡罗方法求圆周率是对Java的继承的运用,同时体现对面向对象的单一职责原则。而第五次的图形的继承、第六次作业的图形的继承和多态、第七次作业的图形卡牌的排序游戏和图形卡牌的分组游戏;都是基与图形慢慢的加入新的要求,迭代的对继承、多态、接口有了更高的要求,越来越灵活
其中蒙特卡罗方法为进一步深入理解面向对象设计原则中的“单一职责原则”。
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;
Java作为面对对象的语言也具有封装性、继承性和多态性。封装是一种信息隐蔽技术。在每个类里的私有变量是一种封装性,每个方法的括号是一种封装。封装使数据和加工该数据的方法封装为一个整体,以实现独立很强的模块,使得用户只能见到对象的外特性,而对象的内特性对用户使隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不需要知晓其行为实现的细节,只需用设计者提供的信息来访问该对象。做那几题图形地继承题时理解了继承性地特点。继承性是之类共享其父类数据和方法地机制,是一个类直接继承其他类地全部描述,同时可修改和补充。继承具有传递性。继承也可以分为单继承和多重继承。而类地对象是各自封闭的,如果没有继承性机制,类的对象中的数据、方法就会大量重复。继承不仅支持系统的可重复性,而且还促进系统的可扩充性。这三次作业做完了,但多态没这么使用到。。。多态就是在对象根据所接受的消息而做出动作,同一消息被不同的对象接受时可产生完全不同的行动。多态性的实现受到继承性的支持,利用类继承的层次关系,把具体有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。
③作业过程中遇到的问题及解决方法:
这个阶段的作业和上个阶段的作业有了很大的不同,首先题目量减少了,每次作业只有两三个题目了,但是!每个题目都是一个大工程,初看都好复杂,光题目的分析就要老半天,在分析好了后,看见类图的结构感觉不知从何处下手,光有结构但没有什么思路。作为大工程,往往会以为变量的传递而烦恼,由于对象太多,传递的值也很多,在类与类之间传递时我往往会卡住,以为会eclipse会报错,我怎么该都还是错,就很烦。类与类之间地继承和创建也搞我心态,extends和abstract还好说,主要是里面地方法不知道怎么写、变量知道怎么调用...怎么解决?一开始是觉得我语法没学好,就想以前一样,看书、看视频,然后回来感觉书里地运用太简单了,一点都和题目中情况比不上。没法,总不能卡死在一个地方吧,问同学,同学几乎都不会,最后还是要问老师,但是QQ里地一句两句真的理解不到怎么错在哪了。所以回头搞一轮下来还是自己坐一下午慢慢悟出来,悟不出来就那样了。有时候感觉但凡我旁边有个大佬点拨一下我,我也不至于困住那么长时间还解决不了。还有题目好难呀,明明那些方法和基本用法都会,可是运用到题目中就连贯不起来,这里卡住,哪里卡住。一个大题目,一处卡住就全没了,一点分都没有了。可是有些地方就是想不出用哪种方式去解决,现在也不敢去看同学地代码了,查重查害怕了,怕一看思路什么的都一样了,结果就重复率特高。哎呀,烦哦,有问题解决不了的感觉,太难受了。
④每次作业花费的时间比例:
这三次作业,都是一发布就开始看题目就开始思考了,但是难度对于我来说还有点大的,都不是基础性的。所以在课余会看看题目,在eclipse上写一点是一点,能写一题是一题,但往往是写到一半就卡了,然后写下一题,留下来的问题集中在星期六一起解决。花的时间肯定比第一阶段多,但是感觉花了很多没有回报的时间,像一两个小时、一下午某个点上还是没有解决方案。。。
⑤对编程过程的严谨性的认识及教训:
严谨的话,如果写的程序不够严谨在PTA上都能检测出来,在与语法上eclipse也很严格,有一点点错误运行时都会报错。所以做对了就比较严谨了。
教训时,在写类和类里面的方法时,一定要注意大小写问题!至于其他就是想不出来,不会做的问题了。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解:
封装使数据和加工该数据的方法封装为一个整体,以实现独立很强的模块,使得用户只能见到对象的外特性,而对象的内特性对用户使隐蔽的。继承性是之类共享其父类数据和方法地机制,是一个类直接继承其他类地全部描述,同时可修改和补充。多态性的实现受到继承性的支持,利用类继承的层次关系,把具体有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则):
单一职责原则的定义是:就一个类而言,应该只有一个引起它变化的原因。简单来说,一个类应该是一组相关性很高的函数和数据的封装。因为单一职责的划分界限并不是那么清晰,每个人的理解不一样,这就导致了不同的人划分的类承担的职责也不一样,就图片加载的例子来说,可能有的人就认为整个图片加载是一组相关性很高的功能,于是将其放入在一个类中处理。一般来说,我们首先需要具备单一职责原则的思想,如果发现一个类承担了太多的功能,这个时候就要考虑将某些功能划分到其他类中去处理
开闭式原则的定义:软件中的对象应该对扩展是开放的,但是,对修改是关闭的。软件开发过程中,需求是不断变化的,因为变化、升级和维护等原因需要对原有的软件代码进行修改,而一旦对原有的代码进行修改,就有可能影响到原有的模块,引起bug,因此,在软件开发过程中,我们应该尽可能通过扩展的方式实现变化,而不是修改原有的代码
③OO编程思维的理解
面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开闭式原则、迪米特原则、里氏替换原则、依赖倒置原则以及接口隔离原则,其中,单一职责原则是指一个类应该是一组相关性很高的函数和数据的封装,这是为了提高程序的内聚性,而其他五个原则是通过抽象来实现的,目的是为了降低程序的耦合性以及提高可扩展性。
④类设计心得
有时候觉得老师写的类图很迷呀,老师给的肯定是没有问题。但按照老师的思路,我有点想不通,就是会怀疑这样写是不是过与复杂化了,总的来说应该时我学的不好,思维没有打开,不然哪种思路本来都是可以写的来的。老师给的类结构很清晰,让人一眼就有了大概架构,但是具体起来,我就发出现不对劲,我连不起来...自己写按自己想的类写过,和老师的基本相同,但具体到成员变量有差别,我感觉我写的没什么毛病了,但提交时就没有正确。呼,烦恼。
3.测试的理解与实践
①测试对于编码质量的重要性
②查阅资料,假设使用Junit进行程序的测试是否可行
4.课程收获
总结这四周来在OO方面的教训及收获
Java的基础知识都几乎学完了,会使用一些高级的用法了,但是具体到题目中还是比较吃力。虽然作业写得不太好,但是真的有认真对待。可能还是个过渡阶段段吧,我还要花更多时间去琢磨用法,多动手多实践就会慢慢精通,时间问题。
5.对课程的建议
①第三阶段作业难度、题量的建议
对我来说,太难了。每个题目都不是小题而是代码两三百的大题,如果旁边有有同学老师一起讨论就好了,有的不理解用法和方法一下午坐在电脑前也想不通。迭代的第一步就不会了,哪后面的也凉凉。题目量还好,单独完成地话感觉对于初学者来说难度偏大。
②课程内容讲解方面的建议
老师能不能适当抽点时间讲一下作业呀,真的有些关键的地方和难点没有人点拨一下自己单独解决好难呀。

浙公网安备 33010602011771号