面向对象设计与统一建模语言UML( 二 )


面向对象设计与统一建模语言UML

文章插图
租车业务整体流程
需求定义阶段
从上述业务分析可知,这个线上租车系统可以承担的自动化工作,包括展示车辆信息,处理预订订单,车辆出库,跟踪车辆行驶情况,以及车辆归还入库这些功能 。
使用用例图展示客户与服务提供商可以使用的功能 。
面向对象设计与统一建模语言UML

文章插图
租车业务功能用例
系统设计阶段
系统功能点梳理出来之后,就是对系统中的各个关键对象进行定义 。车辆对象(Car)是基本单元,所有的租赁业务都要围绕它展开 。接下来是汽车展示对象(ShowCar),它可以从车辆对象取得可供展示的信息,例如车型、厂商、颜色等 。
当用户选定车辆之后,就可以执行预订功能 。租赁管理对象(RentServer)将会接受订单、收取押金和预付款 。用户取车时RentServer则进行出库处理,并通知车辆跟踪对象(TraceCar)持续监控车辆运行情况 。
用户使用完,归还车辆时,RentServer则从TraceCar查询车况,确认无误后则执行入库处理,退还用户押金 。
据以上描述,我们可以先画出类图 。
面向对象设计与统一建模语言UML

文章插图
租车业务类图
从上图可以看到,Car作为系统的基本单元,被其他类聚合使用 。关于聚合,这是一种整体与个体之间的关系,即has-a关系 。而组合则要更高一级,是包含关系 。例如汽车与发动机就是组合关系,因为离开了发动机,汽车就不可用了 。
关联关系则比聚合还要弱一级,但需要注意的是,在程序代码中,关联与聚合的语法是一样的,它们的差异是存在于语义上的 。这也是UML设计能比代码包含更多信息的优势 。
类图表示的是类之间的静态关系,要看到对象实例之间的消息调用,则还要使用时序图 。下面分步骤绘制,先看预订流程的时序图 。
面向对象设计与统一建模语言UML

文章插图
租车预订时序图
接下来是用户归还车辆的时序图 。
面向对象设计与统一建模语言UML

文章插图
归还车辆时序图
对象间的交互已经有了,接下来就是具体方法的实现过程 。说明方法的执行过程,使用活动图比较适合 。下面选取CheckOut方法,对其绘制活动图进行说明 。
面向对象设计与统一建模语言UML

文章插图
CheckOut流程活动图
至于其他功能,有兴趣的同学们可以自行绘制 。实际项目所产出的UML设计,则会复杂得多,但只要掌握好面向对象设计的理念,以及UML工具的图形细节,那么无论是阅读既有设计,还是自己通过绘图表达设计想法,都能够做到得心应手 。

【面向对象设计与统一建模语言UML】


推荐阅读