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

概念

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

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

 例子

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

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

类图和时序图

消息传递

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

相应的代码如下:

订单::检查库存(int N)//N是所需数量{订单项.检查库存(N);}订单项::检查库存(int N)//N是所需数量{零件.检查库存(N);}零件::检查库存(int N)//N是所需数量{库存.检查库存(N);}库存::检查库存(int N)//N是所需数量{......if (库存数量>N)//访问库存对象中的库存数量}

说明

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构⑤ | 4.8 - 4.9

前言 第4章对应的内容选择题和案例分析都会进行考查,这一章节属于技术相关的内容,学习要以教材为准。本章分值预计在4-5分。 目录 4.8 云原生架构 4.8.1 发展概述 4.8.2 架构定义 4.8.3 基本原则 4.8.4 常用架构模式 4.8.5 云原生案例 4.9 本章…

处理成二维数组对象

const objects [] let checkboxvalue [{ name: 名字1 }, { name: 名字2 }] let data [{ value: 值1, id: id1 }, { value: 值2, id: id2 }]let arr [] checkboxvalue.map((item, index) > {// data[index].name item.namearr.unshift({ contractName: item.name, list:…

如何解决英国Facebook直播网络延时问题?

许多商家在英国进行Facebook直播,但网络延时和卡顿问题常常困扰着用户。这不仅影响观众的观看体验,也会给商家带来巨大损失。本文将探讨解决英国Facebook直播网络延时和卡顿问题的方案,以促进业务发展并提升用户满意度。 海外直播的挑战 海外…

两种URL(字符串)的拼接方式

方法一:字符串拼接 这种方法使用加号 () 运算符来拼接字符串。 const url1 /mobile/sweep?productionLine this.productionLine &roomNumber this.roomNumber &productionLineId this.productionLineId &roomId this.roomId;方法二:…

AggregatingMergeTree 物化视图下使用

CREATE TABLE default.test_2_all (id Int64 DEFAULT 0 COMMENT 序号, ..... name, phone, idcard,code )这里创建一张表里面有多个字段,其中有个id类型为Int64 下面建立一个物化视图,引擎使用aggregatingMergeTree,使用POPULATE隐式创建&am…

【Flask从入门到精通:第一课:flask的基本介绍、flask快速搭建项目并运行】

从0开始入手到上手一个新的框架,应该怎么展开?flask这种轻量级的框架与django这种的重量级框架的区别?针对web开发过程中,常见的数据库ORM的操作。跟着学习flask的过程中,自己去学习和了解一个新的框架(San…

用SmartSql从数据库表中导出文档

在 SmartSql 中从数据库表中导出文档通常意味着将表结构和数据导出为文档格式,比如 Word、PDF、HTML 或者 Markdown。这通常涉及到以下步骤: 连接到数据库: 打开 SmartSql 客户端,并确保已成功连接到你的目标数据库。你需要提供正…

stopSelf 会走ondestory吗? 怎么关闭server

stopSelf() 方法用于停止服务(Service)的实例。当调用 stopSelf() 时,Android 系统会安排服务停止,但请注意,这并不意味着 onDestroy() 立即会被调用。确切的时机取决于系统资源管理和调度。通常,onDestroy…

unity中我想实现现实中琴弦的那种互动抖动效果,谈谈思路。

🏆本文收录于《CSDN问答解惑》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

BouncyCastleProvider 对 X.509 证书的生成

文章目录 前言BouncyCastleProvider 对 X.509 证书的生成1. demo 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&#xf…

程序员学CFA——经济学(六)

经济学(六) 国际贸易与资本流动国际贸易相关术语开放/封闭经济自由贸易/贸易保护贸易比价国内生产总值与国民生产总值 国际贸易的利弊分析益处弊端 从贸易中获益:比较优势比较优势和绝对优势比较优势的来源 贸易限制和贸易保护施行贸易保护政…

基础算法之二分搜索:高效的查找方法

二分搜索:高效的查找方法 二分搜索是一种高效的搜索算法,特别适用于有序数组。它通过不断将搜索范围折半,迅速缩小查找范围,从而找到目标元素。让我们通过一个实际的例子来看看它是如何工作的。 假设你有一个已经按升序排列的数字数组,你需要查找一个特定的数字,比如75…

如何快速找车?一文教你如何打造一个高效的停车场反向寻车系统?

在当今快速发展的城市化进程中,大型商业综合体、购物中心和办公楼的停车场规模日益庞大,车辆数量急剧增加。随之而来的是车主在这些大型停车场中寻找自己车辆的困难。由于停车场空间大、结构复杂,缺乏有效的参照物,车主常常在寻车…

基于SpringBoot的网上书城管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java技术,基于SpringBoot框架 工具:Eclipse,MySQL 系统展示 首…

浙江中控 FCU-712控制器 处理器 模块

浙江中控 FCU-712控制器 处理器 模块感器类型: CMOS传感器,提供出色的图像质量和色彩还原度 分辨率: 高清(HD)或更高,确保捕捉到的图像清晰可辨 视频输出: 模拟或数字输出,可根据需…

英福康INFICON FabGuard传感器集成与分析系统PPT

英福康INFICON FabGuard传感器集成与分析系统PPT

VS安装Qt扩展工具

1-Visual Studio中安装QT插件 **插件下载地址:**http://download.qt.io/development_releases/vsaddin/ 关闭VS,双击下载的QT插件,默认安装即可; (1)配置Qt的MSVC编译器安装路径 打开Visual Studio,在菜单栏…

技术小白学习SSM框架(Spring、SpringMVC、MyBatis)

一、java vs python 语法 Python 的语法简洁,易于阅读,适合快速开发和原型设计。 Java 的语法更加严格,需要更多的代码来完成相同的功能,但这也带来了更强大的类型检查和错误预防。 类型系统 Python 是动态类型语言,变…

pbootCMS 数据库sqlite转mysql数据库

前言 pbootCMS默认使用 sqlite数据库 ,那么什么是sqlite数据库呢? SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌…

因为目录问题开通的另外一个网站的美化过程

起 其实也不完全是目录,是查找问题过程中看到别人的界面好好看,而且确实那个目录很吸引我…… 然后我在csdn看了半天,看到一个有目录的我赶紧换上,结果并不能显示。而且把原来黑色模式的给搞没有了——它居然要vip了……所以………