302
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
正向建模与开发是按照一定的逻辑,明确有序的进行建模和开发,在本单元作业的完成过程中,开发一个图书馆借阅系统,先按照需求大致画出UML类图,大致设计出几个类的模块,考虑如何添加元素,再在完成过程中添加使用到的方法。
本单元的类图如下:
在设计方面,首先是Main负责接收请求,Library类则是其他部门的集合体,其他部门有:BookShelf,BorrowAndReturnOffice,AppointmentOffice,BookDriftCorner,相关请求在Library类对相应的部门进行操作,然后就是Student类,每出现一个Student的id都会在图书馆记录并创建一个Student,记录其内容,最后是Book类,由于部分部门不用考虑到还书的时间等具体信息,只用到LibraryBookid,所有Book类只与部分类聚合。
在第一单元完成的多项式化简,根据实验代码的提示,采用递归下降的方法,基本上的架构分为分析,化简,输出三个部分,这一单元的测试也围绕这三部分,简单的从功能上测试是否正确。这一单元的学习让人破防,架构上的简单让我为如何实现复杂的需求感到困恼,这一单元的课堂上,也学习到为了增强代码的可拓展性,可以将功能不同的类单独提出,这样新功能的添加不过在旧的架构上添加新的类,逻辑方面不需要太多改动。
而在第二单元的电梯作业中,架构设计方面,大致采用多线程的生产者-消费者架构设计,在多线程的作业中,更多的是线程暂停和启用的实现,在架构方面没有很多困难的地方,启用线程,完成相关任务,最后中断线程。这一单元的测试上,不单单只在功能上观察是否成功,因为多线程的特殊性,更需要观察线程是否成功暂停,是否成功开启,是否成功结束,给人的感觉是在逻辑上需要一步步走对,是更细的测试。
第三单元的作业架构就是按照课程组的代码进行完成,个人只是在实现上选择更优的方式,架构并没有变化,在测试方面也是按照Junit进行测试。
最后一个单元的架构与之前不同,采用正向建模与开发,在第一次作业苦思冥想如何建好类,采用什么样的容器可以更方便的实现,但其实在后几次作业中容器每次都发生了更改,但是架构并没有太大变化。测试方面就与第一单元差不多,在功能上测试是否正确。
这四个单元的测试中,个人没有搭建评测机,所以在强测时得分惨淡,在思维方面,慢慢的更关注每一部分功能的实现,一部分一部分的检查,最后才能正确。
这次课程给我留下的影响恐怕难以忘怀了,尤其是前两个单元在教室一个人茫然无措,不知如何下笔,面向对象的课程,不仅仅是让我们完成作业,提高了个人的代码编写能力和水平,也有课上了解更多了代码及设计知识,还有研讨课优秀同学的分享,和优秀的人讨论,让人自惭形愧,也让人收获颇丰。最后呢,这门课程也让我接触到很多吧,不单单像以前的小任务编程,接触到复杂需求的迭代任务,脆弱的心灵也被磨炼强大了。