UML之包与包图

news/2024/12/24 8:03:29/文章来源:https://www.cnblogs.com/gtyan/p/18626429

了解UML的人都知道UML中也有包的概念,包在UML中作用与面向对象编程语言中类似,它是管理对象的工具,也是解决对象同名冲突的手段。
在UML中,包的表示图形是一个左上角带标签的矩形,而包名可以标注于矩形中央(如下图所示,包名Package1位于矩形中央)或者左上角的标签之内。

将包名置于包图形中央时,通常会影响包中所包含内容的描画,因而在需要体现包中的内容时,通常将包名置于左上角的标签之中,如下图所示。该示例表示包Pacakge2中包含一个类Book及其实例myBook。

不同工具对包名显示位置的具体实现与支持会稍有差异,例如在下图中,包名被置于矩形左上角而非标签之中,虽然这种描画包图的方式一般也不会给阅读者带来困惑,但还是建议尽量使用标准的描画形式。

包中可包含的对象较多,除在上图中包含的类与类实例之外,诸如用例、时序图、活动图等UML对象均可隶属于某个包。事实上,如果我们在使用UML对象时如果不指定其隶属的包,则这些UML元素被认为隶属于一个默认包。
在不同的场景下,一个包中包含的元素可能只有一个,也可能有许多。当包中包含的元素比较多而其中部分元素需要描画的细节较多要占据较大的空间时,包图会变得巨大无比且难以描画和阅读。此时,UML为我们提供了两种方式解决问题。一种方式是在包图中以列表形式列出其所包含的元素,然后在包图外另外描述这些元素的细节;另一种方式是将在包图外描述细节的元素通过符号“⊕”与包图进行关联。这两种形式的包图分别如下所示:


在分析与设计中,一个良好的结构,应当使用不同层次的包对所有元素进行组织与管理,这就又引入了一个新的概念“子包”。顾名思义,子包就是存在于另一个包中的包。例如在下图中,包Package3中包含了一个名为Package4的子包。

通过上面的讲述,包在UML中的用法应当已经清楚了。但我们应进一步思考,包的本质是什么?包其实是一个命名空间,同一命名空间要求其元素具有唯一且可区分的名称,所以同一包下的元素不可以重名而不同包中的元素可以具有相同的名称。
(附:我们可以进一步思考,在UML中,除了包,还有哪些元素其实也是命名空间?)

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

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

相关文章

读数据保护:工作负载的可恢复性15公有云

公有云1. 云不是万能的 1.1. 其实根本就没有所谓的云,它只不过是别人的计算机而已 1.2. 云、SaaS以及Kubernetes,都没有改变数据保护与数据所有权的基本原则 1.3. 数据是你自己的,你必须负责给它们做备份1.3.1. 除非有人明确保证替你做备份,否则你还是必须自己做1.3.2. 就算…

Zed编辑器-Win中文汉化版(持续更新)

Zed编辑器-Win中文汉化版 介绍Zed 是一款专为团队协作设计的代码编辑器,由 Atom 编辑器的原作者主导开发。Zed 的核心目标是为开发者提供一个高效、流畅、且直观的编程环境,特别强调实时协作和团队合作。该编辑器由 Rust 语言编写,并内置了 rust-analyzer,主打“高性能”。…

CentOS系统搭建K8s集群

前情概要 关于在虚拟机中centos系统搭建k8s集群,前前后后花了很多个白天黑夜才搞定,采用不同的搭建方式搭建集群次数至少10次以上,期间看了无数文章和视频,也踩过无数坑,很多视频、文章的安装教程都存在一些差别,有些时候可能因为k8s安装版本不同或者缺少某些必要的设置导…

中台建设为什么需要领域驱动设计

一、数字化转型 数字化转型是企业能力全面体系化,系统化,数据化提升的过程,这种提升包括了技术能力,业务能力,组织架构合理性等多方面的提升。而随着多年来海量高频业务的发展,技术也在推动着持续进步,并且越来越多的技术方案趋向成熟,类似于阿里巴巴,腾讯,美团等,…

某小程序sign关键字逆向分析

声明 本文章所有内容仅用于学习交流,严禁用于其他目的。文中不提供完整代码,抓包内容、敏感网址及数据接口等均已脱敏处理。严禁将相关内容用于商业用途和非法用途,否则由此产生的一切后果与作者无关。未经许可,禁止转载本文,禁止修改后二次传播。擅自使用本文讲解的技术导…

乌鸡国

1-队伍进入副本以后,走到下图分岔点离队,每人负责一条线路,寻找树妖。2-寻找仙人,可以按照1的策略继续反方向走回去找仙人。3-寻找完仙人以后,会要求帮助国王清理荆棘木,五个号散开清理完即可。 4-进入皇宫,击杀拘灵妖怪、缚仙妖怪、囚神妖怪,需要在12回合内击杀三个妖…

梦幻神器-起-泪痕碗之念-2星

1-该任务需要5个随机指定三级药、7个2级家具,其中2级家具可以提前准备,三级药为NPC随机指定,无法提前准备。 2-前面跟着流程跑,第一场战斗是"清风",需要先击杀小怪,主怪清风在第四回合以后会说"我们放水吧",说了以后才可以击杀主怪清风。3-击杀清风…

STM32F103 SPI配置(SSD1306)

有关SPI通信协议我们在《通信协议-SPI》已经进行了详细的介绍,因此这一节不再重复介绍。 一、软件/硬件SPI 想要控制STM32产生SPI方式的通讯,可以采用软件模拟或硬件SPI这两种方式。 1.1 软件模拟 所谓软件模拟,即直接使用CPU内核按照SPI协议的要求控制GPIO输出高低电平。 1…

梦幻神器-起-莫愁铃之恩-1星

1-该任务需要提前准备5个三级药,金创药、佛光舍利子除外。 2-第一场战斗是击败地府守卫弟子,1星难度不大,注意"诡蝠之刑"的反伤即可,中了"诡蝠之刑"的单位可以适当防御。3-击杀地府守卫弟子以后跟着流程走,接下来需要给三个水晶注入灵气,需要先注入中…

我家一次用电超负荷时20A保险丝断了,但16A的空气开关却没有跳闸.

回答一: 转载自:https://zhidao.baidu.com/question/1970736314255432140.html这说明两者的保护时限不同。无论是保险丝还是空气开关,并不电流达到就立即跳,而且有一定的时间延时来积累热量,热量到了才会动作。 16A的空气开关没跳说明电流虽然超过20A,但时间很快,保险丝…

Easysearch Java SDK 2.0.x 使用指南(二)

在 上一篇文章 中,我们介绍了 Easysearch Java SDK 2.0.x 的基本使用和批量操作。本文将深入探讨索引管理相关的功能,包括索引的创建、删除、开关、刷新、滚动等操作,以及新版 SDK 提供的同步和异步两种调用方式。 SDK 的对象构建有两种方式 1. 传统的 Builder 方式 最基础的…