OO第四单元总结
- 总结本单元三次作业的架构设计
直接放类图:
第一次类图
第二次类图
第三次类图
不知道大家发现没有,其实我三次作业的类的架构就是完全照抄了官方包elemens文件夹里的部分类(只不过第一次没意识到继承 UmlElement 逼格更高(划掉)可以减少大量代码重复)。
顺便把官方包里的类图贴出来。这样一对比,我们可以从架构的角度看出:这三周所作的工作就是把官方包里各种平级的类进行分层的存储管理,同时再把其间缺少的联系进行补充和完善,从而实现我们需要的功能!
引用课上关于模型化设计思维方法的内容就是:
抽象、分类、层次会在结构上形成层次;
系统设计中必然涉及诸多数据,如何管理这些数据是一个不可忽视的问题。可以建立数据管理层次,结合数据分组构建多叉管理层次等
综上所述,这三次作业的官方包里已经完成了对数据的抽象以及分类工作,我们要做的就是建立一个合理的数据层次对数据进行添加访问查询工作(就这?)。
- 总结自己在四个单元中架构设计及OO方法理解的演进
这四个单元的难度对于第一次接触java的菜鸡来说不是地狱也得是困难++++了。高强度的重构(划掉)代码量更让人倍感头秃。
但是,在熬过了一个个头秃(划掉)不眠的夜晚,以及与友善的助教们和以J为首的巨佬团进行充分、亲切友好且和谐的交流后,我竟然奇迹般地苟到了现在?!!
经过一个学期的折磨(划掉)锻炼以后,我个人代码能力有了巨大的提升!!!从第一次的一周一重构(导致第三周作业暴毙)到后来(复制代码+改import)流畅迭代,Ctrl和CV键的耐久-10000。
言归正传,在老师网络课堂的教学以及配套的课上选择题,研讨课,实验课和课后作业的综合攻势下,我确实从对Java一无所知到能够简单理解并应用自带的简单数据结构,能够从OO的角度来思考如何构建代码解决实际问题,理解多线程的工作方式,读懂简单的JML内容,读懂简单的 UML 图。
目前我的理解是:OO是一种通过抽象出包含有限且必要属性和方法的对象来进行模拟从而解决实际问题的工程思路,所以有了继承接口等结构。相较于C语言的函数式编程来讲降低了不少抽象程度,更适用于复杂大型的工程项目。同时考虑到复用性以及拓展性加入了重载等功能。
- 总结自己在四个单元中测试理解与实践的演进
(说来惭愧,对我这种还在为有效作业苦苦挣扎的菜鸡来说这一部分已经没有太多精力自行研究了)
可以说,在经过这4次作业的开发以后,我对测试(尤其是数据)的重要性的意识更增强了一步。老师在课程早期就讲述了TDD的思想,但是困于我窘迫的Java基础,我没有分神去仔细理解其中奥妙。
不过在第三四次的作业的开发中,我每次都会在构思代码时翻阅讨论区,不为别的,就是能看到同学关于特殊样例的大量讨论。正是同学脑洞大开画出的稀奇古怪的图像,让我在开发之前对基本的数据的关系以及需要的算法有了明确的构思。有的时候,一个看似完美的算法可能会在通过一万个测试点后卡在一个特殊的测试点上,这种问题绝对会让人心态发生微妙的变化,TDD能让你完美避免这种问题。
而在代码的基本框架完成后,bug会像一个幽灵一样伴随你左右~首先不要想着避开它,其次通读代码肉眼 debug 绝对不是一个好的选择,当然搭评测机是不可能搭评测机的啦,只能找同学要数据对拍来维持生活的样子。测试真的是 debug 的神器,只要发现了错误的输出和异常,相信我,你一定会在意想不到的地方找到让自己大跌眼镜的错误代码。
现在来说,我完完全全理解测试在开发中的重要性,但也只是仅此而已。实践中只能跑跑指导书的样例以及借(bai)阅(piao)同学的样例进行对拍。所以我认为这个地方是接下来大有提升的空间!对于 Junit 的应用,手搭评测机,都是我须要在接下来继续钻研的地方。
- 总结自己的课程收获
一学期过去,要问我在课堂上收获了什么,我的第一反应一定是:Java 代码的水平上升了!但是要说只有 Java 的水平上升,好像又落下了那些测试,架构等方面一系列的成长。但是反过来再一想,那些部分的提升,说白了不就是为了让我能更加流畅顺利地敲出手上的代码吗,又何必那么分明呢?
- 立足于自己的体会给课程提三个具体改进建议
- 建议给我满分;
- 建议老师露脸;
- 建议老师推荐一些后续学习的教材。
- 谈一谈线上学习oo课程的体会
这次疫情让我们每个人都从宿舍 -》 教室 -》 食堂的三点一线式生活转换为了卧室 -》 撤硕 -》 餐厅的生活,在2019年没有一个北航学生能想到自己那张半年没收拾的单人床竟摇身一变成了新主楼的一间教室,或者是机房的一个角落。对我来说,这个学期的线上的教学模糊了之前一直在我心中明晃晃的分隔学习与生活之间的红线,让我更加意识到:学习真的是一个和生活不那么冲突的事情,不是说必须在教室正襟危坐的目不转睛地盯着 PPT 手下不停记笔记才算学习,最最重要的是需要思考。这个学期,我们课程的各位老师,助教更多的是作为一个引导者,引导我们进行思考。老师在视频里讲的每一个知识点,都能在网上搜到更多更详细的拓展,老师布置的每堂测试,都能在网上找到之前的人发出的结果,再不济,讨论区的各位大神各个都是人才,看起来早就对这些小case了如指掌。老师做的工作是整合大量资源,力图为我们思考提供最丰盛,最美味的食材。在我们享用这些食材后,有的人可能已经撑的不行,在原地揉着肚子慢慢消化;有的人可能感到求知的欲望无法得到满足,需要继续去寻找更美味的食材;更有的人,在享用了这些食材后,竟然消化出了更有质量的(ao)内(li)容(gei)。这就是本学期OO线上教学带给我的感受。
2020年6月20日