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

概念

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

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

 例子

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

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

类图和时序图

消息传递

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

相应的代码如下:

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

{

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

}

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

{

零件.检查库存(N);

}

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

{

库存.检查库存(N);

}

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

{

......

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

}

说明

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

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

相关推荐

  1. 统一语言UML

    2024-07-10 10:46:08       31 阅读
  2. uml基础-

    2024-07-10 10:46:08       52 阅读
  3. <span style='color:red;'>UML</span><span style='color:red;'>类</span><span style='color:red;'>图</span>

    UML

    2024-07-10 10:46:08      53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 10:46:08       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 10:46:08       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 10:46:08       90 阅读
  4. Python语言-面向对象

    2024-07-10 10:46:08       98 阅读

热门阅读

  1. Django中模型的基于类的混入

    2024-07-10 10:46:08       25 阅读
  2. Impala写Parquet文件

    2024-07-10 10:46:08       26 阅读
  3. C# 反射

    2024-07-10 10:46:08       27 阅读
  4. 在程序中引用cuda.memory函数监控GPU内存

    2024-07-10 10:46:08       32 阅读
  5. LlamaInde相关学习

    2024-07-10 10:46:08       35 阅读
  6. LeetCode每日一题 分发糖果

    2024-07-10 10:46:08       33 阅读
  7. 刷算法Leetcode---9(二叉树篇Ⅲ)

    2024-07-10 10:46:08       32 阅读
  8. 【GC 死亡对象判断】

    2024-07-10 10:46:08       25 阅读
  9. [ABC275A] Find Takahashi 题解

    2024-07-10 10:46:08       24 阅读
  10. 洛谷 P2141 [NOIP2014 普及组] 珠心算测验

    2024-07-10 10:46:08       27 阅读