BUAA 面向对象 第四单元 及 期末 总结

”穷且益坚,不坠青云之志。“

BUAA 面向对象 第四单元 总结

前言

​ OO课程到此进入尾声,这是最后一篇总结,包括对第四单元的总结以及对之前所有单元的反思。许多年之后,面对代码,lpr将会回想起,OO课程带他去见识重构的那个遥远的深夜。

UML单元的正向建模与开发

​ 本单元基于一个图书管理系统,从UML角度进行先设计,再画图,最后写代码的过程。通过UML类图、UML状态图和UML顺序图三大任务进行设计,这三个图的目的是:

  • 类图:展示系统中的类及其相互关系,包括类的属性和方法。
  • 状态图:展示对象在其生命周期中的状态及其状态之间的转换。
  • 顺序图:显示对象在时间维度上的消息传递顺序,详细描述系统特定功能的实现过程。

​ 这三个图共同作用,帮助开发者全面理解、设计和实现复杂的软件系统,从而提高系统的可靠性和可维护性。(但私以为代码量、任务复杂度的提高到另一个层次时,这三个图才能更好地发挥作用)

本单元作业的架构设计

UML类图如下所示:
在这里插入图片描述

​ 设计思路是,Library仅负责“移动”功能,不存储任何的书,但想法很美好,最终实现出来Library类仍然方法过于冗杂,感觉仍然违背了OO的思想。感觉虽然确实进行了“先画图再写码”,但设计的过程没有考虑到实现过程中需要的种种细节和未来迭代需要留出的空间,所以在实现过程当中还要根据遇到的具体问题对UML图进行一步一步的修改,感觉不应该是这样一个过程…

思维的演进

​ 谈及思维的演进,笔者想从两个方面谈一谈自己的变化,一是“要多想”,二是“变抽象”。

​ 首先,“要多想”。这个是之前匆匆忙忙,不加思考的写码习惯留下来的问题。面对一个复杂的任务,可能一开始会感觉无从下手(比如Unit1最开始的时候),而OOpre之前留下的习惯,产生了一旦面对复杂问题,思考时间并未随着任务复杂度而增加的坏习惯。反而,会匆匆忙忙搭建一个“草台班子”,本着先能跑再说的目的完成作业。但随着每一次任务的迭代需求,或许这种方法并不太有效。往往,这种“草台班子”不会给迭代留下充足的发展空间。但随着这16周的训练,反而现在会“想一想,等一等”,等着自己在纸上画一画,合计合计才会搭建一个很模糊的框架。

​ 其次,“变抽象”。这个感觉是不再纠结于某些方法的细节,更能够从宏观架构上去思考问题。建立好一个大致的框架后,我可能会将一些方法罗列出来,然后并不关心它的具体实现,仅仅从功能角度去分析类与类之间的交互关系,从而得出一些类与类之间在UML中所体现的耦合、继承、关联等关系,最后才通过顺序图这样的形式,去实现某些关键任务。

​ 或许现在架构思维可能仅仅是种了一颗种子(甚至是一颗发育不良的种子),但感觉在未来,这样的思维会受益终身,最终形成真正的优秀架构思维。

测试思维的演进

​ 关于测试思维,之前往往就是构造一些样例,然后看一看输出是否和预期一致就Over了。但这几次作业,也让我的测试方法有所深入。

​ 首先是Unit1和Unit2中关于性能的测试,这实际上是对算法正确性、合理性的测试,这种是在已经确定目前实现符合规格的情况下的进一步优化。区别于JML中的规格化设计,使用的往往是压力测试,通过构造极端数据,对CPU Time进行检测。

​ 然后是Unit2的死锁问题和Unit3的规格实现。这两个个人认为就是纯粹的正确性检验,但Unit3不同的是需要根据JML的描述进行逐行判断ensure这些限制条件(Junit测试)。

​ 但是,个人构造的测试不能完全保证代码的完全正确性,一些很隐秘的bug,往往需要大规模的数据才有可能跑出来。这时候,重复大数据规模的随机数据测试便是尤为重要。

课程收获

​ 仍记得第一单元的时候,蹲在主楼原来物理课的教室,看着“递归下降”迷迷糊糊、不知道要干啥,照着往届的博客照葫芦画瓢,最后到主楼关门也只是画出来一个破碗被门卫大叔赶出主楼。然后就是Unit1的小重构以及被性能分弄得不知所措,怀疑自己能力的时候。

​ 然后是Unit2清明节的大重构,在电梯第二次作业的迭代重构中,我看着凌晨5点微微亮的东方鱼肚白,关上了台灯,瘫倒在椅子上,思考未来可见的写码生活,或许当时也逐渐培养起我相比于去年P4连挂时候再高一个Level的平和。

​ 接着,是在从武汉到成都的硬卧上铺,拖着电脑和充电宝,靠在车厢上写Unit3,听着火车的轰鸣声思考JML和Junit的实现,然后早上起身坐在车厢过道,看着南方山峦叠嶂,似乎感觉写码也是一件静心养气的事情…

​ 最后便是前几天交完最后一发评测,然后在脑中思考“结束了…?”。

​ 或许,这三单元12次迭代的训练,给我带来了不仅是架构思维的提升,包括对整体架构的设计、未来迭代空间的预留,更多的是对抗压能力的极大提升、以及对一些tradeoff(比如性能分)产生的对某些事情包括未来的思考。在这一段时间的高压训练中,除了对面向对象思维的不断提高、面对需求更加冷静,还有慢慢接受自己“三尺微命,一介书生”的事实,变得更加平和、更加愿意去享受独自静谧的生活而且更加愿意去发掘生活中更加美好的事情

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值