第二阶段作业总结
前言
本次博客是对于面向对象程序设计第四次作业到第六次作业的阶段性总结
1.作业过程总结
①总结三次作业之间的知识迭代关系
第四次作业的题目有:水文数据校验和处理\蒙特卡罗方法求圆周率\图形继承,
第五次作业的题目有: 图形继承与多态\ 一元多项式求导
第六次作业的题目有: 图形卡片排序游戏\图形卡片分组游戏\求素数
第四次作业主要对面向对象的继承和封装性理解的训练,第五次作业则对面向对象的继承和多态进行了训练,第六次作业则是对面向对象三大特性及使用方法的综合训练
②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;
在第三次作业第一题中,作业思路主要还是类似于面向过程,但写法是利用了面向对象的封装性,通过对需求的抽象,将题目中不同的对象分别抽象出来,将各个类的职责进行封装,使得程序能够解耦,不会关联过于紧密.
图形继承主要是训练了对于类的继承和多态的理解,通过对不同对象的共同特性的抽象,提出相同的特性,定义为一个类,而其他类只要继承这个类,就会具有相同的特性.而继承自同一个类的子类可以被父类引用,这就是多态.使得在需要对同一父类的不同子类进行操作时,可以减少许多工作量.
第六次作业则主要对于面向对象复用性和可扩展性进行了训练.在类设计的好的情况下,如果需求改变,面向对象的程序设计可以轻松的完成对程序的修改,而面向过程设计由于耦合度太高,很难在原有程序的基础上改变需求,这就是面向对象的好处.
③作业过程中遇到的问题及解决方法
这三次作业中,稍难的主要是第三次作业的第一题.这道题需要使用正则表达式对于输入的数据进行格式校验.难点在于对输入数据的校验和处理,计算过程相对简单.主要时间花费在正则表达式的编写和测试上,编写测试正则表达式约用了两小时,整个题的代码逻辑共花费了约五个小时,debug共花了一天,其中出的多的问题有格式错误.通过对api文档的查询,发现字符串中有一个trim方法,可以自动删除行尾行首的空格和回车.而还有一个花费时间较长的错误则是最后一个测试点多条正确数据的检验.在debug中,由于不知道具体测试用例,始终无法发现错误的位置.后利用注释整段代码的方法,测试出了错误的位置,而后进行修改,通过了最后一个测试点.其他的作业题目相对而言比较简单,没有花费太多时间.
④每次作业花费的时间比例
三次作业的时间比例为5:2:1
⑤对编程过程的严谨性的认识及教训
主要还是对于第三次作业的第一题的教训,编程过程中,如果不注意单一原则和开闭原则的设计原则,程序逻辑一旦复杂,则耦合性相当的搞,代码段相当的长,错误定位十分的困难.所以在设计时要十分注意设计原则.
2.OO设计心得
①对面向对象三大技术特性之间关系的理解
- 封装 对类里面的成员变量通过使用private修饰符进行隐藏,通过使用public 修饰符来编写它们对应的方法来进行访问和修改。将不同的职责抽离出来封装到不同的类中.可以实现对代码的解耦
- 继承 如果子类继承于父类,子类继承父类非private的属性和功能,子类具有自己的属性和功能,即父类没有的属性和功能;第三,子类还可以以自己的方式修改父类的功能.
- 多态 多态表示不同的对象可以执行相同的方法,但是不同的对象对于方法的实现不同,操作就可以不同.
②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
单一职责就是一个的类只干一件事,每个类只负责一个职责,如水文校验中,CheckData类只负责检查数据,水文信息类只负责保存信息.在实际运用中,类的单一职责不一定很容易实现,可以退而求其次,使用方法的单一职责原则
开闭原则则是对于程序开放添加,关闭修改,即变换需求时,尽量通过替换和增加来完成,尽量减少对原程序的修改.
③OO编程思维的理解
面向对象将各个职责交给不同的对象去完成,实现代码的解耦,最好通过抽象类或者接口定义规则,当需要对程序进行修改和扩展时,只需要对相应的实现的部分进行修改,而不需要对不相关部分进行修改
④类设计心得
在类设计时,如果类是通用的,可以设计一个接口或者抽象类定义规范,实现代码的复用和接口的规范,在存在依赖关系时,尽量依赖接口和抽象类,具体逻辑只负责实现.
3.测试的理解与实践
①测试对于编码质量的重要性
许多逻辑错误无法通过普通的数据测试去发现,在设计测试用例时,尽量设计边缘数据,容易造成程序崩溃的数据来测试. 测试只能证明程序有错(有缺陷),不能保证程序无错
②查阅资料,假设使用Junit进行程序的测试是否可行
可行, JUnit 是一个 Java 语言的单元测试框架。对所要测试的类创建测试类,在该类中输入数据进行测试
4.课程收获
对于Java的基础知识,我很早之前就学完了,这四周我主要是用于学习设计模式和设计思想,并将这些原则用到练习题上,对练习题不断的优化,进步最大还是自己的编码水平和api熟悉度,可以尽量的写出质量高一点的代码.
5.对课程的建议
①第三阶段作业难度、题量的建议
难度不要偏重于单一的部分,不要像第四次作业的第一题水文校验一样,大部分时间都用在了对数据格式的验证上,实际实现功能并不难,大部分时间花在了debug上.设计一点结构复杂的题,主要考验类的设计和思想.
②课程内容讲解方面的建议
老师讲的还不错,中途下个课不然注意力难以保持
posted on 2020-04-29 10:22 "HowYouDoing 阅读(149) 评论(0) 收藏 举报
浙公网安备 33010602011771号