301
社区成员
发帖
与我相关
我的任务
分享本单元的正向建模主要体现在通过UML类图对图书馆管理系统进行建模设计。状态图和顺序图由于绘制时整体代码实现已经完成,更像是对系统的总结和示意,而非建模设计。绘制时也只需将原有设计进行抽象即可。
在hw13中,实现代码前即通过UML类图描述了各个类的主要行为、管理数据以及关联关系。这个整体设计贯穿了整个Unit4且少有改动。
在hw14和hw15中,分别根据原有代码实现绘制了状态图和顺序图,描述了图书馆管理系统中“书”这一对象的状态转移过程,以及预定书本场景的消息传递顺序。

此为hw13时所绘类图。Library类作为系统中枢,对各项指令进行统筹管理。图书馆中的各项带有存放书籍的地点(类)均继承自书架Bookshelf类,表明借记处、预定处各自管理一个抽象的“书架”用于存放所拥有的图书。各个用户各自的书籍等数据由专门的用户账户UsersBooks类记录,并有Users进行统一管理并实现功能接口。

此为hw15时的最终类图。仅新增一个漂流处类用于处理新增地点的事务,其他类及类间关系不变。仅部分类增加了方法和元素用于实现新的功能。整体架构几乎没有改变。特别的,对于非正式书籍,在实现时另建了一个新的借记处对象与正式书籍进行区分。

以图书位置与是否正式设置二维状态,根据需求功能进行转移。由于该系统对于漂流处和书架的处理格式近乎相同,所以采用了相同的状态名。

实际上也只是对类图上已有信息的简单复述。不过因为没办法按要求命名始末方法(强迫症),虚设了两个实际并未使用的方法以通过测试。实际流程与图示除了始末方法名以外均一致
最终代码实现完全符合最初的UML建模。即便后续新增功能也并未与原设框架冲突。体现了架构设计的合理性。
从U1到U4,架构设计思维经历了从局部到整体,从无序到有序的转变。在lab1时,每一次作业还需要经历大幅度的重构;后续作业的重构量越来越小,直至几近无需重构。lab1时直至总结才勉强得出程序的框架,lab4时已经整体架构先于实现。
整体来说,无论形式如何,架构设计已经逐步成为我进行程序设计必不可少的一环。
当然最重要的还是收获了程序正常实现与运行的喜悦和满足感。嗯,大致上正常吧。