272
社区成员




本单元作为OO正课的最后一个单元,为了避免难度过大与同学们的考期相冲突,安排了一个难度不大但是具有实践意义的单元主题:UML建模。本单元的作业评测方式也与前几单元有所不同,本单元的测试没有了之前的互测,但是增加了对于UML图的测评,要求同学们在完成作业代码的前提上,还要绘制相关的UML类图,状态图,顺序图等。正向建模与开发意味着需要同学们先绘制UML类图,再去根据类图完成代码的编写,实现正向建模。
这次作业作为本单元的第一次作业,要求我们根据要求设计一个小型的图书馆管理系统,对给到图书馆的各种请求做出正确的处理反馈。本次作业要求我们绘制相关的UML类图,为了完成要求,我设计了Library
类作为处理请求的主体类,对于图书管中的每一个办事处,我均为其设计了相关的类:Bookshelf
类,AppointmentOffice
类,ReturnOffice
类,InquiryMachine
类,还有相关的管理对象的类:UserManager
类,User
类,BookTrace
类,具体的UML类图如下:
本次作业新增了两个办事处:热门书架和阅览室,以及两种新的请求种类:阅读和归还,为此我新增了ReadingRoom
类以及HotBookshelf
类这两个类用于处理新的请求,同时本次作业还新增了状态图的要求,要求设计书籍的状态并绘制状态图,为此我根据书籍的可移动状态:普通书架、热门书架、 借阅处、预约处、阅览室、用户。设计了书籍的状态:Bookshelf
, HotBookshelf
, BorrowAndReturnOffice
, AppointmentOffice
, ReadingRoom
, User
这总共六种状态以及相关的共十七种情况的状态转移,具体的UML类图以及状态图如下:
本次作业作为本单元以及这个学期最后一次的代码作业,要求反而是十分的简单,仅引入用户信用分系统,对用户的行为做进一步限制。并新增限制:图书借阅期限限制。也就是说图书管系统的整体架构无需进行修改,只许对相关请求的功能增加一点修改即可,本次作业新增了对于顺序图的请求:要求同学们针对图书馆各个部门之间的交互行为及图书馆各个部门与用户之间的交互行为绘制顺序图。我针对我的代码中对于取书(Picked
)这一请求的处理设计了我的顺序图,具体如下:
本单元的整体架构设计难度并不算大,需要使用到大模型的地方可能就是在对于某些指导书中不清楚的地方的询问上了,但是总的来说大模型对于整个课程来说还是十分的有用的,如在前几个单元不熟悉java相关代码的操作,以及如第二单元初次接触多线程时对多线程没有深刻的认识的情况下,通过询问大模型往往能够让我迅速的理解相关的知识并进行使用,还有就是对于某些算法不熟悉的时候可以让大模型为我提供相关的代码模板,这在第三单元相关图论代码的编写上就显得十分的明显。同时还可以让大模型为我们编写测评机,方便我们更少的在中测以及强测中出错,还可以在互测中快速准确的寻找到其他人的错误。
总的来说OO允许我们使用大模型无疑是一件好事,有了大模型的帮助,我能够更好的完成作业中的种种要求,同时通过长时间的使用大模型,我也对如何引导大模型完成相关的任务有了清晰的认知,在之后使用大模型完成其他任务的时候也能更加的游刃有余。
一个学期的课程下来,我的架构思维也有了不错的长进,由于OOpre
课程并没有十分认真的去学习,导致我在OO正课的作业上显得十分的狼狈,尤其是第一单元的第一次作业,我一度束手无策,但好早参考往届学长博客以及询问同学之后,才十分狼狈的完成了第一次作业,彼时的我可能还完全没有意识到架构设计是个什么东西。但是随着学期的不断进展,我对OO作业的完成以及相关的思想有了一定的增长,在拿到一次作业的要求的时候不再像往常一样直接就开始代码的编写,反而是先去思考作业的具体要求,适合怎样的架构去完成,如何设计才能让代码有较好的拓展性等问题,只有将这些问题都考虑清楚之后才会开始着手代码的编写。这么做的好处就是设计出来的代码架构往往有着较好的性能以及拓展性,能够通过中测以及强测,在互测阶段也不会有太多的错误被hack出来。
总的来说我的架构设计思维的演进就是从一无所知到后面往往能够独立设计架构并完成代码的编写这个的发展。
由于OO课程中充满了各种的测试,从中测,强测到互测,测试无处不在。可以说得测试者得天下,有一个好的测试思维才能让我在OO课程中游刃有余。我个人的测试思维也随着一次次作业的拷打有了一定的发展,从一开始第一单元第一次作业时只会手搓数据点,互测时也是想方设法的去设计刁钻的测试点,但是手搓的效率往往是很难和其他同学构造测评机相提并论的,为此在之后的作业中我也会去参考其他同学的测评机来对代码进行相对应的测试。再到后面第三单元中课程作业中要求我们对代码中的某个方法设计相关的JUnit
测试,为我提供了一种新的代码测试思路,通过JUnit
进行代码测试等。
经过OO一个学期的折磨,我最明显的收获就是代码的编写能力有了较大的提升,从一开始完全不会java代码,到后面慢慢能够独立完成代码的编写。