第三阶段作业及Java课程总结
第三阶段作业总结
0.前言
本学期的Java课程已经基本结束,本次博客是对本学期面向对象编程课程学习的一个总结。在这段时间的学习中我获益很多,这里将大概总结一下刚刚结束的几次作业和这门课程中我的学习的过程和我得到的提高。
1.作业过程总结
近三次作业对类的开闭原则和可扩展性、map、set数形结构、栈的运用进行了一个练习。
第九次作业要求对雨刷程序进行扩展,实现一种新的操作雨刷的方式,要求不改变已经写好的类和方法,体现了面向对象编程的开闭原则,是对我们类关系设计的一个考验。第十次作业帮助我们对刚刚接触的数形结构map和set加深映像,通过对代码中关键字的统计体现对map的运用。第十一次作业用经典的表达式求值来练习对表达式求值的掌握。
在雨刷和表达式求值问题中,都要考虑程序的可扩展性,添加新的操作方法,新的运算符号都需要满足,这就需要考虑开闭原则,运用一些基本的设计模式。对我们的面相对象编程思维和代码质量也有很好的提升。
2.作业过程中遇到的问题和解决
在雨刷题中对类的设计经验不足,一开始我直接把新的Agent类当作原有的Agent类的子类,造成了类方法编写和实例化对象时的很多不方便,解决方法:运用抽象类作为两个Agent类的父类。
在统计关键字时一开始不熟悉迭代器的用法,用数组的方式储存map中的key造成了很多不便,解决方法:使用迭代器的方法遍历map。另外,在去除代码中的注释时遇到了出现连续两个/**/时会把中间的有效代码删除的情况,解决:把正则表达式中的贪娈模式改为勉强模式。
表达式求值,一开始我简单的在stack中将同运算优先级的运算放在一起,这种写法造成了对于不满足结合律的运算总是无法正确运算。解决方法:我将所有运算都设定不同的优先级,然后单独考虑减法。这样写可以通过测试点,但是我感觉这样写不符合实际运算方式,所以我尝试改变方法,通过同级边入栈便运算以及递归处理括号的方法来写,可惜时间不够没能实现。
3.花费时间对比
三次作业都花费了很长的时间,比例大概是1:1:2,第三次作业由于尝试不同的运算方法花费了较长的时间。
4.对编程过程严谨性的认识和教训。
对各种情况的考虑必须要周全,教训:在统计关键字题中,我开始只是用正则表达式识别“public”“static”这样的字符串,没有考虑这些字符串出现担又不是作为关键字,如print()方法名中的int,这个错误使得我几乎不能通过所有的测试点。浪费了很长时间。在编写程序时,要对程序运行中可能出现的各种情况都考虑到,不能总是用标准规范的情况去思考问题。
5.oo编程心得
在面向对象编程中类的关系设计是非常关键的,一定要考虑程序的可扩展性,而且不能有一种扩展要求就设计成可以进行一次扩展,要尽量做到扩展性最大。在雨刷程序中将新的Agent作为原Agent的子类扩展性就不如将两个Agent作为一个抽象类的子类。
oo编程课程学习总结
1.oo编程学习内容总结
这段时间的学习由浅入深,从基本的类与方法的概念,让我们初次接触了面向对象这个概念,通过题目的方式让我们逐渐从面向过程的思维定势中转移到面向对象;再到类之间的关系,通过雨刷的例子生动地解释了类之间的聚合。也让我们比较了不同类关系之间的优劣性为我们之后进行类设计打下了基础。之后学习了类的封装、继承和多态。其中还介绍了正则表达式的概念,为解决问题提供了新的方法。然后有开闭原则,强调了程序的可扩展性。还有Java设计模式、javaFX等实用的内容以及数形结构的基础。
在学习中我认为最重点的是oo编程的思想,这些思想是java比较之前学的c语言的独到之处,java比c语言更加贴近于现实的思考方法,单一变量原则很好的契合了我们的逻辑,让程序的可读性和可复用性大大提高,面向对象对象的三大特性,封装继承多态三大特性继承使得代码变成更加方便高效简洁在编写代码时不需重复,也为开闭原则打下基础。封装保证了类的结构完整性,让程序更加安全。可以有效保护对象内部数据不会别随意调用。多态提高了代码的效率,给了低效的选择分支一个新的解决思路。从编写难度、安全性、效率上全面提升了代码质量。开闭原则,设计模式的使用减少了代码扩展中的风险。比起语法,这些思想我认为才是这门课我收获最大的地方。
2.学习收获
首先最大的收获自然是接触了面向对象编程的思想,对封装继承多态的意义有了一个基本的认识,这个在之后的学习中是很重要的。在 了解了类的开闭原则和单一职责原则后我的编程习惯得到了提高,代码质量更高了。再来,在学习过程尤其是作业中,我可以发现自己的很多不足,像考虑问题不周全,代码写得乱等。还有就是学到了新的语法,养成了在网上搜索资料自学的习惯,还有掌握了调试的技巧,大大提高了编程的效率。
3.建议和意见
希望可以展示一些具体的工程实例。通过实例来理解知识将有更加深刻印象,有助于之后使用于与长久记忆。希望作业加大对于知识综合性的应用,使得作业更加趋向于实际问题。通过一些经典的案例拆解和分析可以帮助理解新知识和明确学习的方向。另外我希望可以把作业中的一些常见的坑拿出来让大家讨论。

浙公网安备 33010602011771号