[BUAA OO Unit 4 HW16] 第四单元总结

前言

本单元主要是学习 UML 建模语言,与往年实现 UML 解析器不同,今年要求我们实现图书馆模拟系统,并且使用类图、状态图和顺序图描述自己的设计,练习基于模型的设计。

正向建模和开发

本单元要求先进行建模设计架构,再根据设计进行实现,从而减少由于实现过程中架构不明导致的重构,设计主要分为三类

  1. 类图设计,需要使用名词法等抽象出各个类,然后思考类之间的关联、依赖和继承关系等
  2. 状态图设计,对于某些可能有多个维度状态的对象,比如图书设计出其各个状态以及之间的转移,从而理清图书相关的逻辑
  3. 顺序图设计,对于每个动作需要设计出顺序图,显示出各个类之间的协作流程

同时上面三种设计需要相互对应,从关联关系和可见性等方面。先设计再实现的流程也让我们能够积累对架构设计的经验,好的架构有事半功倍的效果。

架构设计

在这里插入图片描述

通过LibraryManager对各个学校的Library进行及其之间的运输进行统筹管理,Library下有4个管理员进行执行相应的功能,但Library还是进行调度的核心,为了图看着简洁,管理员之间没有协作,这也是有些功能实现和题目所述流程不同甚至有些别扭的原因,第一次作业还可以使用单例模式进行操作,后两次就没办法了。

写代码的过程中总会发现架构设计的不足,然后需要进行重新思考设计并修改。(有些时候总会忘记同步 UML 图,就像忘记更新注释一样)

架构设计思维的演进

第一单元几乎没有什么设计,主打一个everything is expression,一些类的设计很鸡肋,核心代码都聚集在一起,也并没有使用什么设计模式,导致最后代码十分臃肿,耦合程度很高,和面向对象也没什么关系。

第二单元使用了生产者-消费者模式、单例模式等,让各个类的职责更加清晰和单一了,在第二次作业由自由竞争重构为调度器调度时的改动也不是很大,也算是高内聚、低耦合。

第三单元自己的架构设计主要是异常抛出部分,使用了工厂模式,让后续的异常迭代相对简单一点。

第四单元通过 UML 图的设计,架构设计的能力得到了一定的提升,如何抽象出类和方法,如何设计它们之间的练习等;同时也了解了提前设计的重要性,一个优秀的架构能让代码的可维护性和扩展性更高。

测试思维的演进

主要是通过随机构造数据加评测机的方式进行测试,但一个很明显的缺点就是——测不全,随机数据可能并没有涉及到错误或者过程错误答案正确也是可能的,同时对于某些要求性能的程序,随机数据强度可能不够,所以并不能保证程序的可靠性,某些时候需要自己构造边界数据或者有强度的数据进行压力测试。

在第三单元的时候,还提到了诸如单元测试和回归测试等,在需要保证程序绝对正确的时候,这些测试可以让正确性得到进一步保证。

收获

  • 学习到了面向对象的思想和一些高效的设计模式以及多线程的实现。
  • 代码能力和代码风格都得到了不小的提升。
  • 在互测的压力下学会了不同的测试方法确保代码正确性。
  • 养成了先设计再实现的习惯,遵循 SOLID 原则设计架构让后续的实现过程避免了很多没必要的卡顿和调整。
  • 研讨课上和同学的交流沟通也让我积累了一些有用的技巧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值