301
社区成员
发帖
与我相关
我的任务
分享第四单元聚焦于UML建模与设计,以设计图书馆管理系统为背景,要求我们设计UML图并以此构建自己的代码。第四单元的结束意味着本学期面向对象课程走入了尾声,谨以此博客总结第四单元,也回顾一学期面向对象的的学习。
同时,每次作业都需要编写UML图。
所谓正向建模是指从需求分析到系统实现的开发方法,也就是说,设计先于实现。课程组在本单元也提出了先画UML图再落实到代码实现上的建议,我一开始相当不适应这种方法,因为我觉得UML类图与代码的关联度太强,想要设计出完整的UML类图,几乎就相当于在脑中编写完整的代码,主要是脑子不能用IDEA。所以我一开始只完成了类图的大致架构,包括所需的类,关键方法、属性和算法等。得益于类图的指导,代码完成的十分顺利,没有编写出大量的无效代码,同时也避免了重构的风险。在代码编写完成后,我也能够再先前的基础上完成UML类图,整个过程并没有太多功夫,反而让代码编写的整个流程流畅了不少。

Main类主要负责对输入输出进行处理,并将所有请求发送给Library类。 Library类是代码的核心,其包含了书架、借还处、预约处和漂流角等实例化对象。Bookshelf,User,AppointmentOffice,BorrowAndReturnOffice,Corner等类均作为图书馆的组成部分,实现相应的功能。Copy作为书的副本,封装有expireDate,bookId等相关属性,可以完美地表示书籍信息。在实际完成代码与UML图的过程中,两边是共同推进的,虽然课程组极力推荐先写UML,但考虑到代码具体实现与脑中构思的差异,故先做出了UML草图来指导代码的编写,同时不断完善UML图。
我是没有上过先导课的,所以我一开始不知架构设计为何物,也因此在第一单元中代码面临了小幅度的重构,在此之后我吸取经验,学习到了层次化设计的思想,同时对高内聚低耦合有了自己的理解。从一开始对类都不熟悉,到现在我明白架构设计要为需求铺路,有怎样的工作需求,有什么潜在的扩展之处,这些在代码设计初始就应考虑进去,这就要求我们在设计代码时目光要放的长远,而非仅满足于眼下需求的实现。第二单元中,我学会了多线程设计模式,对于多线程调度和如何避免死锁有了自己的理解。
同时,通过在网上阅读相关资料和代码,我也学习了许多优秀的设计模式,领略到设计思维在未来工程化模块化编程时的巨大作用。
一开始我的测试是聚焦于分析指导书的需求,同时辅以一些极端样例来检验代码的正确性,后来,我使用自己写的简单评测机和同学编写的评测机对自己的程序进行了压力测试,以保证代码在极端条件下的性能良好。总的来说,本学期的测试颇有成效,保证了自己的程序能够通过强测,同时也能通过大部分互测,在互测中拿到奖励分也就是顺带的事情~