OO_unit4 单元小结

李希宸-22371377 学生 2024-06-13 14:22:28

目录

  • OO_unit4 单元小结
  • 本单元所实践的正向建模与开发
  • 本单元架构设计
  • 架构设计思维的演进
  • unit1 递归下降:层次化设计
  • unit2 多线程:同步与互斥
  • unit3 jml规格:规格化设计
  • unit4 uml建模:正向建模与开发
  • 测试思维的演进
  • 收获

OO_unit4 单元小结

本单元所实践的正向建模与开发

在这个单元,我们学习了uml类图、状态图和顺序图,在三次作业都体验了一把,感受了正向建模与开发的过程。

第一次作业的重点和难点就是搭建本单元的架构,如果没有设计好很可能会在后面的作业进行大范围重构。这里就体现了正向设计的好处,给你充分的时间去思考,尽量完成一个比较全面的架构。

在这个单元我采用的是先初步构建uml图,满足主要的题目需求,以及所需要的一些方法。然后就根据uml图构建代码。在写代码的时候,难免会产生一些更细节的需要和修改,再回到uml图进行架构修改。

正向建模确实在我们单元作业这种小规模项目上的优势不是那么明显,但是当项目的代码量不断增加,特别是一些大型项目上,满足客户需求,减少重构,提高效率,都离不开正向建模与开发。

本单元架构设计

本单元最终代码架构如下:

img

  • Main类:程序入口,进行各种类的初始化。
  • Processor类:不断读入指令,并针对不同的指令,转到对应的处理函数中进行处理。
  • Bs、Bro、Ao、Bdc类:图书馆的四个部门,分别是:书架、借还处、预约处、漂流角。这些类保存在自己部门中的书籍以及一些信息。
  • Persons、Person类:Person是对应的每个用户,而Persons是Person的集合,用于管理不同的Person。
  • AppointInfo类:该类保存用户预约书籍的相关信息,记录的信息都是在Ao中的书籍。
  • Book类:保存书籍的相关信息,主要是借出的书籍和捐赠的书籍。

因为代码和uml模型设计是同步的,对应的,所以具有一致性和对应关系。

架构设计思维的演进

unit1 递归下降:层次化设计

在第一单元,主要学习了递归下降法进行表达式解析。根据形式化定义,提炼共性,利用面向对象的多态、封装、继承等特点进行架构设计,侧重于层次化设计,形成oo风格,利用oo特性。

unit2 多线程:同步与互斥

在这一单元主要接触多线程。多线程重要的是辨清什么是需要互斥访问的,什么是可以共享的,什么又是需要先后顺序的。具体而言就是要避免死锁和竞争冲突。在这个单元为了有更清晰的设计,避免代码处处加锁,处处唤醒,将一个专门的类设置为了一个缓冲区,采用生产者消费者模型,将该缓冲区设置为互斥访问区,这样就很清晰地解决了多线程容易出现的问题。

unit3 jml规格:规格化设计

这一单元向我们展示了规格化设计,我们主要是根据jml规格进行代码的实现,所以在架构设计上没有太多考虑。但是通过规格化设计,明显感到代码架构更加清晰,重构大量减少了。

unit4 uml建模:正向建模与开发

这一单元,较为完整地进行了正向建模和开发的流程。先通过构建uml模型进行架构设计,再依据uml实现代码,在实现过程中,可以动态的小规模修改完善架构。正是因为提前进行了大框架的搭建、整体的思考,在后续的代码实现中会更加高效,不用边写边想,容易出错。

测试思维的演进

  • unit1:主要采用黑箱测试、压力测试,通过评测机生成大量数据来进行功能检测,具有随机性。
  • unit2:基本同unit1,是比较常用的测试方法。
  • unit3:主要采用junit测试,根据规格编写测试。
  • unit4:基本同unit1,主要还是通过生成大量数据进行功能检测。

收获

从oopre到oo,学到了很多知识。基本的算是面向对象入门了,掌握了java的基本用法。另一个方面,了解了代码以外的工作,比如jml规格化,uml建模等。其实在oo的学习中,更重要的是代码以外的能力培养,也就是架构的设计。而要做到好的架构设计,我们学习了uml,学习了jml等等,帮助我们更好地构建我们的架构。毕竟我们的课程需要“设计”和“构造”,设计也是我们在这门课之前较少考虑的。我们可能会边写代码,边思考架构,但是我往往会感到很混乱(太菜啦)。所以有了正向建模开发的帮助,思路变得清晰,有时会有工欲善其事必先利其器的感觉。

同时oo课的研讨课也让我们有了很多展示和交流的机会,不至于闭门造车,让我们去更广泛地交流学习。

最后,感谢课程组,感谢老师,感谢助教们!(●'◡'●)

(完结撒花)

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

301

社区成员

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

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