UML建模案例分析-时序图和类图的消息传递

概念

类图和时序图之间的交互是通过消息,即成员函数的调用体现的。但要遵循一定的原则,可参见:

面向对象原则之一面相对象原则之二

 例子

一个电子商务系统,会员可通过电子商务系统购买零件。具体功能需求如下:

会员请求结账时,系统验证会员的账户是否处于登录状态;系统验证订单是否完整以及各零件库存是否充足;最后,系统合计订单总价(订单总价=所有订单项价钱合计+税金+运费);

类图和时序图

消息传递

以检查库存为例,检查库存()消息应该发送给库存,对吧?但为什么先发送给订单了?这是因为类图中类的交互有一条路径:订单->订单项->零件->库存。也就是说,要检查的库存,是零件的库存,而零件又是指订单项里的零件,订单项又是订单的,所以消息传递要先传递给订单,再通过这个路径发送到库存。

相应的代码如下:

订单::检查库存(int N)//N是所需数量

{

订单项.检查库存(N);

}

订单项::检查库存(int N)//N是所需数量

{

零件.检查库存(N);

}

零件::检查库存(int N)//N是所需数量

{

库存.检查库存(N);

}

库存::检查库存(int N)//N是所需数量

{

......

if (库存数量>N)//访问库存对象中的库存数量

}

说明

  • 代码中可以看出,除了库存类中的检查库存()函数是真的在检查库存,其他检查库存,只是“把活交给别人去做”,因为要访问的属性在库存里,所以只能库存类中的函数去做;
  • MVC设计模式下,界面类和控制器类发出的消息源,可以简单认为是界面上用户触发的某些操作;
  • 11号消息,结账(),调用了两个函数:合计总价(),计算附加费(),在同一个控制焦点上,表明这两个函数要在同一个函数中被调用,不能分开调用。

看得出,用UML设计的人,必须是代码能力过硬才能设计的周全。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值