301
社区成员
发帖
与我相关
我的任务
分享在这个单元,我们学习了uml类图、状态图和顺序图,在三次作业都体验了一把,感受了正向建模与开发的过程。
第一次作业的重点和难点就是搭建本单元的架构,如果没有设计好很可能会在后面的作业进行大范围重构。这里就体现了正向设计的好处,给你充分的时间去思考,尽量完成一个比较全面的架构。
在这个单元我采用的是先初步构建uml图,满足主要的题目需求,以及所需要的一些方法。然后就根据uml图构建代码。在写代码的时候,难免会产生一些更细节的需要和修改,再回到uml图进行架构修改。
正向建模确实在我们单元作业这种小规模项目上的优势不是那么明显,但是当项目的代码量不断增加,特别是一些大型项目上,满足客户需求,减少重构,提高效率,都离不开正向建模与开发。
本单元最终代码架构如下:

因为代码和uml模型设计是同步的,对应的,所以具有一致性和对应关系。
在第一单元,主要学习了递归下降法进行表达式解析。根据形式化定义,提炼共性,利用面向对象的多态、封装、继承等特点进行架构设计,侧重于层次化设计,形成oo风格,利用oo特性。
在这一单元主要接触多线程。多线程重要的是辨清什么是需要互斥访问的,什么是可以共享的,什么又是需要先后顺序的。具体而言就是要避免死锁和竞争冲突。在这个单元为了有更清晰的设计,避免代码处处加锁,处处唤醒,将一个专门的类设置为了一个缓冲区,采用生产者消费者模型,将该缓冲区设置为互斥访问区,这样就很清晰地解决了多线程容易出现的问题。
这一单元向我们展示了规格化设计,我们主要是根据jml规格进行代码的实现,所以在架构设计上没有太多考虑。但是通过规格化设计,明显感到代码架构更加清晰,重构大量减少了。
这一单元,较为完整地进行了正向建模和开发的流程。先通过构建uml模型进行架构设计,再依据uml实现代码,在实现过程中,可以动态的小规模修改完善架构。正是因为提前进行了大框架的搭建、整体的思考,在后续的代码实现中会更加高效,不用边写边想,容易出错。
从oopre到oo,学到了很多知识。基本的算是面向对象入门了,掌握了java的基本用法。另一个方面,了解了代码以外的工作,比如jml规格化,uml建模等。其实在oo的学习中,更重要的是代码以外的能力培养,也就是架构的设计。而要做到好的架构设计,我们学习了uml,学习了jml等等,帮助我们更好地构建我们的架构。毕竟我们的课程需要“设计”和“构造”,设计也是我们在这门课之前较少考虑的。我们可能会边写代码,边思考架构,但是我往往会感到很混乱(太菜啦)。所以有了正向建模开发的帮助,思路变得清晰,有时会有工欲善其事必先利其器的感觉。
同时oo课的研讨课也让我们有了很多展示和交流的机会,不至于闭门造车,让我们去更广泛地交流学习。
最后,感谢课程组,感谢老师,感谢助教们!(●'◡'●)
(完结撒花)