UML建模图文详解教程05——包图


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl
  • 本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著

在这里插入图片描述

包图概述

包图(package diagram)是用来描述模型中的包和所包含元素的组织方式的图,是维护和控制系统总体结构的重要内容。包图通过对图中的各个包元素以及包之间关系的描述展示出系统的模块以及模块之间的依赖关系。

包图能够组织许多 UML 中的元素,其最常见的用途是用来组织用例图和类图。

核心知识点

请务必熟悉并掌握以下核心知识点。

包图中的主要组成元素包括包以及包的依赖关系。

包的概念

包(package)是用于把模型本身组织成层次结构的通用机制,它不能执行。包是一个组织模型的组块,是一种将设计元素分组组织的通用机制。包在图形上被表示为一个文件夹的形状,即一个大矩形的左上角附有一个小矩形,图形上显示有包名另外,也可以将包所包含的元素显示在上面。

在这里插入图片描述

包名

每个包都必须有一个与其他包相区别的名称。

包中的元素

包本身是一个容器,可以拥有很多元素,这些元素被称作该包的内部元素。包中可以容纳各种高级的模型元素,如类和类的关系、状态机、用例图、交互、协作等,甚至是一个完整的 UML图。

包的依赖关系

包元素之间最常见的关系就是依赖关系。包之间的依赖关系实际上是从一个更高的层次来描述包内某些元素之间的依赖关系。也就是说,如果不同包中任何元素之间存在着一个依赖,则两个包之间就存在着依赖关系。

包的依赖关系表示为一条带箭头的虚线。

在这里插入图片描述

包的引入

包的依赖关系同样可以通过添加构造型来使其语义更加明确。最常见的包依赖关系的构造型就是引入,表示为<< import >>。引入指的是允许一个包(客户包)中的元素可以自由访问另一个包(提供者包)中的公有元素。引人是单向的,其表示法的箭头从引入方指向输出方。在引入的过程中,客户包把提供者包的包名添加到自己的命名空间中,从而使客户包中可以使用引入元素的简单名来引用该元素。

例如,订单Ordering引入了产品Products包和价格Pricing包。Ordering是客户包,Products和Pricing是提供者。

在这里插入图片描述

航空购票系统包图

在此,继续使用航空购票系统演示包图的绘制方法。

用例图现状

目前,在航空购票系统中用例图如下:

在这里插入图片描述

元素分包

请选中用例图,然后选择添加包;图示如下:

在这里插入图片描述
点击确定后,图示如下:

在这里插入图片描述
请将所有参与者拖动至Actors包中;图示如下:

在这里插入图片描述
类似地,建立登录注册包并将登录用例和注册用例拖动至该包中;图示如下:

在这里插入图片描述

类似地,建立核心业务包并将查看行程用例、查询航班用例、购买机票用例、退订机票用例拖动至该包中;图示如下:

在这里插入图片描述
类似地,建立后台操作包并将设定航班安排用例拖动至该包中;图示如下:

在这里插入图片描述
类似地,建立信用评价包并将修改信用等级用例、检查信用等级用例拖动至该包中;图示如下:

在这里插入图片描述

最后我们做一个小调整,将Actors包下的用例图拖出,放至用例图下;图示如下:

在这里插入图片描述

至此,完成了元素分包工作。

创建包图

在用例图文件夹上右键选择添加图再选择UML Structural并选择Package;图示如下:

在这里插入图片描述

点击确定后,图示如下:

在这里插入图片描述
请将拖动各个包至绘图区,松开鼠标时请选择包元素;图示如下:

在这里插入图片描述

添加包中的关系

对于创建好的包图,可依据实际情况添加依赖和引入关系。利用Class Relationships 中的Associate添加关系,并在松开鼠标时选择Import;图示如下:

在这里插入图片描述

至此,完成了航空购票系统包图的绘制。

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

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

相关文章

一个最简单的工业通讯数据分析例子

1.背景 对工业设备的通讯协议进行分析可以帮助我们更好地理解其工作原理和相关技术&#xff0c;并且有助于以下几个方面&#xff1a; 1. 优化工业设备的通讯效率&#xff1a;了解通讯协议的细节可以帮助我们找到通讯效率低下的原因并进行优化&#xff0c;提高设备的通讯效率和…

Axioss笔记

一、Get请求 // 请求头携带参数&#xff0c;案例&#xff1a;?uid1001 axios.get(http://localhost:8080/user/api/v1/user/query, {params: {uid: 1001}}).then(res > {console.log(res.data) }).catch(err > {console.log("请求错误" err) }).finally(() …

MySQL 8 配置文件详解与最佳实践

MySQL 8 是一款强大的关系型数据库管理系统&#xff0c;通过适当的配置文件设置&#xff0c;可以充分发挥其性能潜力。在这篇博客中&#xff0c;我们将深入探究 MySQL 8 常用的配置文件&#xff0c;并提供一些建议&#xff0c;帮助您优化数据库性能。 配置文件概览 在 MySQL …

【华为OD题库-030】阿里巴巴找黄金宝箱(V)-java

题目 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c;每个箱子上面贴有一个数字.阿里巴巴念出一个咒语数字k(k<N),找出连续k个宝箱数字和的最大值&#xff0c;并输出该最大值。 输入描述 第…

拦截器的使用

拦截器&#xff08;Interceptor&#xff09;是一种在应用程序中用于干预、修改或拦截请求和响应的组件&#xff0c;是AOP 编程的一种实践&#xff0c;和过滤器一样都是一种具体的AOP实现。它可以在请求被发送到目标处理程序之前或之后&#xff0c;对请求进行预处理或对响应进行…

【数据结构】二叉树概念 | 满二叉树 | 完全二叉树

二叉树的概念 二叉树在实践中用的很多。 一棵二叉树是结点的一个有限集合&#xff0c;该集合&#xff1a; 或者为空&#xff1b;由一个根结点加上两棵别称为左子树和右子树的二叉树组成。二叉树最多两个孩子。 这里注意&#xff1a;二叉树并不是度为2的树。 二叉树的度最大值是…

Go lumberjack 日志轮换和管理

在开发应用程序时&#xff0c;记录日志是一项关键的任务&#xff0c;以便在应用程序运行时追踪问题、监视性能和保留审计记录。Go 语言提供了灵活且强大的日志记录功能&#xff0c;可以通过多种方式配置和使用。其中一个常用的日志记录库是 github.com/natefinch/lumberjack&am…

python selenium 模拟浏览器自动操作抢购脚本

每逢秒杀&#xff0c;都在遗憾网速和手速慢没能抢购到商品吧。 手写一个脚本&#xff0c;让程序帮你抢&#xff0c;抢到的概率会大大提升。 废话不多说&#xff0c;直接上代码。 本实例以华为官网抢购手机为例 """ 模拟浏览器操作华为官网(1) 【只需要安装一…

【JAVA】我们该如何规避代码中可能出现的错误?(二)

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言异常方法&#xff08;Throwable类&#xff09;Throwable类的方法 捕获异常多重捕获块 前言 异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;并…

git-3

1.如何让工作区的文件恢复为和暂存区一样&#xff1f; 工作区所作的变更还不及暂存区的变更好&#xff0c;想从暂存区拷贝到工作区&#xff0c;变更工作区(恢复成和暂存区一样的状态)&#xff0c;想到用git checkout -- 文件名 2.怎样取消暂存区部分文件的更改&#xff1f; 如…

无损压缩技巧:减小PDF文件尺寸的有效方法

我们在制作pdf文档的时候&#xff0c;会加入许多内容&#xff0c;文字、图片等等&#xff0c;素材添加的过多之后就会导致pdf文档特别大&#xff0c;在上传或者储存时&#xff0c;就会特别不方便&#xff0c;所以今天就告诉大家一个pdf压缩的方法&#xff0c;使用pdf在线压缩工…

4-Docker命令之docker info

后续为大家逐个讲解一下docker常用命令及其相关用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函数

P1883 函数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Error Curves - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这两题是一模一样的&#xff0c;过一题水两题。 分析 主要难点在于证明F(x)是一个单峰函数可以被三分&#xff0c;但是我随便画了几个f(x)之后发现好像…

MySQL的Redo Log跟Binlog

文章目录 概要Redo Log日志Redo Log的作用Redo Log的写入机制 Binlog日志Binlog的作用Binlog写入机制 两段提交 概要 Redo Log和Binlog是MySQL日志系统中非常重要的两种机制&#xff0c;也有很多相似之处&#xff0c;本文主要介绍两者细节和区别。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自动化部署

环境&#xff1a;Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 准备工作&#xff1a; 安装Docker Centos7默认的yum安装的docker是1.13&#xff0c;版本太低&#xff0c;很多镜像都要Docker版本要求&#xff0c;升级Docker版本。 卸载已安装Docker: yum …

你知道如何实现游戏中的透视效果吗?

引言 游戏中的透视效果可以合理运用CtrlCV实现。 不知道大家有没有这样一段经历&#xff1a;在做Cocos项目时需要一些特定的Shader去做一些特定的效果&#xff0c;例如透视、高光、滤镜等等&#xff0c;想自己写吧&#xff0c;不怎么会啊&#xff0c;网上又找不到&#xff0c…

27 - 如何使用设计模式优化并发编程?

在我们使用多线程编程时&#xff0c;很多时候需要根据业务场景设计一套业务功能。其实&#xff0c;在多线程编程中&#xff0c;本身就存在很多成熟的功能设计模式&#xff0c;学好它们&#xff0c;用好它们&#xff0c;那就是如虎添翼了。今天我就带你了解几种并发编程中常用的…

redis-cluster集群(目的:高可用)

1、特点 集群由多个node节点组成&#xff0c;redis数据分布在这些节点中&#xff0c;在集群中分为主节点和从节点&#xff0c;一个主对应一个从&#xff0c;所有组的主从形成一个集群&#xff0c;每组的数据是独立的&#xff0c;并且集群自带哨兵模式 2、工作原理 集群模式中…

【ZedBoard学习实例1】 VGA显示彩条

ZedBoard学习实例1 VGA显示彩条 ZedBoard学习实例1 VGA显示彩条参考文章改进 ZedBoard学习实例1 VGA显示彩条 参考文章 彩条控制verilog代码 主体参考了该文章的代码&#xff0c;文中还介绍了相关的电路图&#xff0c;还有ZedBoard的手册内容。19201080分辨率显示器的参数 针…

重生之我是一名程序员 37 ——C语言中的栈溢出问题

哈喽啊大家晚上好&#xff01; 今天呢给大家带来一个烧脑的知识——C语言中的栈溢出问题。那什么是栈溢出呢&#xff1f;栈溢出指的是当程序在执行函数调用时&#xff0c;为了保护函数的局部变量和返回地址&#xff0c;将这些数据存储在栈中。如果函数在函数调用时使用了过多的…