面向对象程序设计课程感想
前言
本次博文是针对本学期面向对象程序设计作业的总结与感想。
1 对于第三阶段作业总结
① 第三阶段的三次作业包含雨刷程序功能扩展设计、Java关键字计数和表达式计算。
第七次到第九次作业,难度都比较平均,不会很简单也不会特别难,但是这一阶段开始,题目不再给类图参考,而是让我们自己进行类的设计,但是因为难度的降低,类之间的关系不会很复杂,在类的设计上不会有很大的问题。
第七次作业:本题的主要内容是对程序进行重构,使得程序可以对功能进行扩展,考察了类设计以及类间关系类的封装性、继承性以及多态性的综合应用以及接口与抽象类的使用等知识点;
第八次作业:Java关键字词匹配计数,题目要求为编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数。从最后的完成情况来看,应该是没有正确的。经过同学们的多次测试与讨论,发现最后一个测试点和注释测试点之间可能有冲突,当注释掉判断注释部分之后,最后一个测试点能够通过,但添加了判断注释功能之后,最后一个测试点不能通过,提交更改了非常多次,都无法通过。由于无法看到测试用例,只能猜测问题出在哪一部分,经过大家多次讨论,认为应该是注释的问题;
第九次作业:此次作业的主要内容是表达式求值,本题涉及到了数据结构方面的知识,对堆栈设计的要求比较高,而我因为数据结构课程学得一般所以在程序设计方面花了很多功夫。最后在查阅很多资料和反复观看堆栈的知识理念后才写出完整的代码。
这三次作业虽然都不是很难,但是在独立完成一个完整的代码的能力上我有了质的飞跃。
②作业过程中遇到的问题及解决方法
主要问题
第八次作业,在最后一个测试点和注释测试点之间不能同时通过。
解决方法:未解决
第九次作业,对于堆栈的运用比较生疏,导致程序设计上有很大的困难。
解决方法:查阅资料,求助同学。
③ 每次作业花费的时间比例
三次作业所花时间比列接近2:3:3,后面两次作业都有很多不可逆的问题阻碍了我做题的方向。
④ 对编程过程的逻辑严谨性的认识及教训
由于没有类图需要自己进行类的设计,所以在设计类时总是因为考虑不周全而导致程序设计不下去,或者是过于严谨而导致耦合度太高出错后更改难度加大。通过这个阶段我意识到了类的接口、继承、重写等运用时多么的重要。
2 对于面向对象程序设计课程的总结
①知识归纳
在最初接触这门课程的时候,老师讲概念性的东西很多,但是由于我还没有正式地接触Java这门语言,导致很多概念性的东西让我感到云里雾里。尽管我C语言的基础并不薄弱,所以在Java的入手方面没有很大的障碍产生,可是过了一段时间后我发现对于面向过程和面向对象的观念转变变得很难,面向过程的观念已经在我脑中固化,于是在类的设计方面我也有很多不理解的东西。但是在后面各种作业的实践、代码的实操中,我终于领会了面向对象和面向过程的区别。对于面向对象的三大特性、面向对象设计的基本原则以及OO编程思维的理解也有了一定自己的见解:
对面向对象三大技术特性之间关系的理解
1. 封装——对类里面的成员变量通过使用private修饰符进行隐藏,通过使用public 修饰符来编写它们对应的方法来进行访问和修改。将不同的职责抽离出来封装到不同的类中.可以实现对代码的解耦;
2. 继承——如果子类继承于父类,子类继承父类非private的属性和功能,子类具有自己的属性和功能,即父类没有的属性和功能;第三,子类还可以以自己的方式修改父类的功能;
3. 多态——多态表示不同的对象可以执行相同的方法,但是不同的对象对于方法的实现不同,操作就可以不同。
面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)
1. 单一功能原则:
单一职责就是一个的类只干一件事。每个类只负责一个职责,如水文校验中,CheckData类只负责检查数据,水文信息类只负责保存信息。在实际运用中,类的单一职责不一定很容易实现,可以退而求其次,使用方法的单一职责原则;
2. 开闭原则:
在设计的过程中,应该逐步抽象出更高级的抽象,在新功能或者调整出现时,只需要扩展和很小的修改,尽可能的减少修改。
OO编程思维的理解
面向对象是对世界的抽象,它将存在的事务抽象为一个类,这个类具有属性和可以完成的功能。如人类:有身高性别年龄名字等等等属性,可以完成送外卖送快递搬砖写代码等功能,但是类不能帮你完成事务,需要一个实例才能。比如某一个人可以送外卖,但人类本身不能去送外卖,需要实例一个外卖员,才能完成功能。类只是个定义,干活的是对象。
② 对于自己在这门课程的总结
在我进行程序设计的开始是不喜欢测试来寻找bug的,这对前期的学习与作业的完成其实影响不大,但是到了后期缺陷就显露出来了。于是我意识到了测试对于编码质量的重要性——往往在编码完成后,由于设计和编码过程中的不完善和问题,会在一些情况下出现无法得到正确结果的情况,有时候错误隐藏的较深,没办法直接看出来。要保证程序的健壮性和正确性,就需要测试,将可能存在的错误找出来。
③ 对本次课程的建议
因为疫情的影响,本门课程基本是在网络上完成教学的,也许是第一次进行网课的实践,所以在很多地方都不大完善。在课程内容方面,希望可以推陈出新,找出更多有利于我们领会知识点的教学方式;在作业方面,希望不要把重心放在设置过于复杂的测试点,而应该把主要精力应该花费在类的设计上。