OO Unit4 总结

孙雯新-22373476 学生 2024-06-14 21:27:57

正向建模与开发

正向建模与开发是一种软件开发方法论,通常用于描述从需求分析到最终实现的整个开发过程。它的核心理念是从头开始,按照预定计划和设计的步骤进行开发,重点是事先规划好整个过程,保证开发过程中的各个阶段有条不紊地进行。

在本单元中,需要根据指导书的要求,设计图书馆的架构和各个功能的实现逻辑。正向建模与开发体现在:不同于以往的简单构思后直接上代码,最后根据代码的实际情况来总结绘图,本次作业建议我们先做好架构设计,通过各种uml图(如类图、顺序图等)来描述架构设计,再根据设计来进行开发。

虽然一开始略有不习惯,而且直接思考架构缺失会忽视掉一些问题,导致最初的设计和最后的实现之间差距较大(图的改动也很多),但是这种训练确实可以比较好的训练架构能力和思考的全面性,在经过两次训练之后,第三次迭代的最初设计和最终实现之间基本上是完全吻合的。

本单元架构设计

最终的架构设计图如下

img

在Library中创建、管理图书馆的各个部门以及顾客和书籍列表等信息,并利用官方包进行输入解析,处理所有的用户请求;

Req类是请求信息的集合,只用于实现预约书籍的相关功能;

Customer用于管理用户信息,包括用户的预约记录和持有书籍等等;

Bookshelf、BookDriftCorner等实现了指导书中要求的各部门功能,此处不再赘述。

架构设计思维的演进

U1 给我影响最深刻的是输入解析的分离。以往都是直接把输入解析塞在main里面,但是面对需要进行较为复杂输入解析和预处理的情况,显然把输入解析模块独立出来,设计会更加清晰。

U2的电梯,学到多线程是一方面,更多的其实是摸到了一些面向对象的思想;实际上在oop和U1中,我的编写逻辑依然是面向过程的逻辑,是单线的逻辑。虽然事先构思了需要哪些类,但是我编写代码的顺序并不是一个类一个类实现,再去完成类之间的交互;而是从头开始,按照执行的顺序,在类与类之间跳来跳去的写代码x 而这种用java写面向过程的方式在U2确实很难生存下去,实际上也不太能够适用与多线程(毕竟之前我是按照执行顺序编写代码的)

U3深深弥补了算法课不上机的遗憾,带给了我酣畅淋漓的算法学习体验,和做梦都在怕tle的经历;至于说架构设计,好像没有什么特别的长进(毕竟jml都给出来了)

U4的正向建模再次狠狠的提升了我的面向对象思维,必须要在实际编写之前考虑好每个类的内容和类与类之间的交互,真的很锻炼架构设计啊(要不然就得翻来覆去的改图)

测试思维的演进

由于伟大的dpo(膜),在第一单元之后就没有自己写过评测机了,所以在评测机这方面没有太多的心得x

但是在手搓测试数据方面有很大长进!(让我们感谢伟大的互测!)

主要长进的点可能就是考虑的角度会更多了,比如说:测试的覆盖度/全面性、极端情况的测试(构造边界数据,和可能出现设计问题的数据组合)、复杂度分析(避免tle)这些

除此之外还进一步体会到junit的奇妙,在编写的过程中进行模块化测试真的会很安心

课程收获

收获很多包括但不限于:收获了一天狂写16小时的爆肝能力,收获了架构设计、测试等的思想,更加熟练了解了java的一些机制(因为克隆、迭代删除和多线程相关出了很多次bug;为了解决tle也了解了一些函数的底层实现)

当然,最重要的是解决问题的信心和能力。放在以前,我很难想像自己居然真的可以在1-2天时间里面完成这样一个lab的内容。一开始每周总是如临大敌,早早开始(但是磨洋工);到后来已经可以熟练的周五晚上才开始写了(当然这和后两个单元工作量减小有很大关系啦),不过确实效率提高了很多

很喜欢OO,学起来很安心有一种学了就真的能学到的感觉(确实学到了很多)总之,不管是架构设计能力、代码编写能力、debug能力、测试能力还是打字速度,都得到了很大的提升!

OO完结撒花!ヽ(✿゚▽゚)ノ

...全文
60 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧