UML--包图详解

article/2025/3/13 4:59:27

包图

在UML的建模机制中,模型的组织是通过包(Package)来实现的。包可以把所建立的各种模型(包括静态模型和动态模型)阻止起来,形成各种功能或用途的模块,并可以控制包中元素的可见性,以及描述包之间的依赖关系。

模型的组织结构

计算机系统的模型自身是一个计算机是一个计算机系统的制品,被应用在一个给出了模型含义的大语境环境中。该模型包括模型的内部组织、整个开发过程中对每个模型的注释说明、一个缺省值解、创建和操纵模型的假定条件以及模型与其所处环境之间的关系等。

模型需要有自己的内部组织结构,一方面能够对一个大系统进行分解,降低系统的复杂度;另一方面允许多个项目开发小组同时使用某个模型而不发生过多的相互牵涉。一般对系统模型的内部组织结构通常采用先分层再细分为包的方式。

包的命名和可见性

包图(Package Diagram)是一种维护和描述系统总体结构模型的重要建模工具,通过对图中各个包以及包之间关系的描述,展现出系统的模块 与模块之间的依赖关系。如下图:
在这里插入图片描述
包是包图中最重要的概念,它包含了一组模型元素和图。对于系统中的每个模型元素,如果它不是其他模型元素的一部分,那么它必须在系统中唯一的命名空间内声明。包含一个元素声明的命名空间被称为拥有这个元素。包是一个可以拥有任何种类模型元素的通用命名空间。可以这样说,如果将整个系统描述为一个高层的包,那么它就直接或间接地包含了所有的模型元素。

在系统模型中,每个图必须被一个唯一确定的包所有,同样这个包可能被另一个包所包含。包是构成进行配置控制、存储和访问控制的基础。所有的UML模型元素都能用包来进行组织。每一个模型元素或者为一个包所有,或者自己作为一个独立的包,模型元素的所有关系组成了一个具有等级关系的树状图。然而,模型元素(包括包)可以引用其他包中的元素,所以包的使用关系组成了一个网状结构。

在UML中,包图的标准形式是使用两个矩形进行表示的,一个小矩形(标签)和一个大矩形,小矩形紧连接在矩形的左上角,包的名称位于大矩形的中间。

同其他模型元素的名称一样,每个包都必须有一个与其他包相区别的名称。包的名称是一个字符串,它有两种形式:简单名(Simple Name)和路径名(Path Name)。其中,简单名仅包含一个名称字符串,而路径名是以包处于的外围包的名字作为前缀并加上名称字符串。但是在Rose中,使用简单名称后加上“(from 外围包)”的形式,如下图:
在这里插入图片描述
在包下可以创建各种模型元素,例如类、接口、构件、节点、用例、图以及其他包等。在包图下允许创建的各种模型元素都是根据各种视图下所允许创建的内容决定的,例如在用例视图下的包中,只能允许创建包、角色、用例、类、用例图、类图、活动图、状态图、序列图和协作图等。

包对自身所包含的内部元素的可见性也有定义,使用关键字private、protected或public来表示。private定义的私有元素对包外部元素完全不可见;protected定义的被保护的元素只对那些与包含这些元素的包有泛化关系的包可见;public定义的公共元素对所有引入的包以及它们的后代都可见。
在这里插入图片描述

上图中,包中包含了“ClassA”、“ClassB”和“ClassC”三个类,分别是用public、protected和private三个关键字修饰的。

通常,一个包不能访问另一个包的内容。包是不透明的,除非它们被访问或引入依赖关系才能打开。访问依赖关系直接直接应用到包和其他包容器中。在包层,访问依赖关系表示提供者包的内容可被客户包中的元素或嵌入与客户包中的子包引用。提供者包中的元素在它的包中要有足够的可见性,使得客户可以看到它。

通常,一个包只能看到其他包中被指定为具有公共可见性的元素。具有受保护可见性的元素只对包含它的包的后代包具有可见性。可见性也可用于类的内容(属性和操作)。一个类的后代可以看到它的祖先中具有公共或受保护可见的成员,而其他的类则只能看到具有公共可见性的成员。对于引用一个元素而言,访问许可证和正确的可见性都是必须的。所以,如果一个包中的元素要看到不相关的另一个包的元素,则第一个包必须访问或引入第二个包,而目标元素在第二个包中必须有公共可见性。

要引用包中的内容,使用“PackageName::PackageElement”的形式,这种形式叫做全限定名。

包的构造型和子系统

包也有不同的构造性,表现为不同的特殊类型的包,例如模型、子系统和系统等。

  • 业务分析模型包
    在这里插入图片描述

  • 业务用例模型包
    在这里插入图片描述

  • CORBA Module包
    在这里插入图片描述

子系统是有单独的说明和实现部分的包。它表示具有对系统其他部分存在接口的模型单元,子系统使用具有构造型关键字“subsystem”的包表示。

  • 子系统
    在这里插入图片描述

包的嵌套

包可以拥有其他包作为包内的元素,子包又可以拥有自己的子包,这样可以构成一个系统的嵌套结构,比表达系统模型元素的静态结构关系。

包的嵌套可以清晰地表现系统模型元素之间的关系,但在建立模型时报的嵌套不宜过深,包嵌套的层数一般以二到三层为最佳。

在这里插入图片描述

包的联系

包之间的关系总的来讲可以概括为依赖关系和泛化关系。两个包之间存在着依赖关系通常是值这两个包所包含的模型元素之间存在着一个和多个依赖。对于由对象类组成的包,如果两个包的任何对象类之间存在着一种依赖,则这两个包之间就存在着依赖。

包的依赖同样是使用一根虚箭线表示的,虚箭线从依赖源指向独立目的的包,如下图:

在这里插入图片描述

包的依赖性可以加上许多构造型来规定它的语义,其中最常见的是引入依赖。引入依赖(Import Dependency)是包与包之间的一种存取(Access)依赖关系。引入是指允许一个包中的元素存取另一个包中的元素。引入依赖是单项的。引入依赖的表示方法是在虚箭线上表明构造型“《important》”,箭头从引入方向指向输出方的包。引入依赖没有传递性,一个包的输出不能通过中间的包被其他的包引入。


http://chatgpt.dhexx.cn/article/MqPT9gi5.shtml

相关文章

UML之包图

包图是UML中用类似于文件夹的符号表示的模型元素的组合,系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中,使用包图可将相关元素归入一个系统,一个包中包含附属包、图表或单个元素。简单的来说,我们可以直…

UML --Package

一、本文思维导图 二、包图的概述 包图由包和包之间的关系构成,它是维护和控制系统总体结构的重要建模工具; 对复杂系统进行建模时,包方便理解和处理整个模型;设计良好的包是高内聚、低耦合的,并对其内容的访问具…

【CSS】过渡动画

目录 过渡动画1 css 属性1.1 transform 变换&#xff08;平移旋转缩放&#xff09;1.2 animation 动画1.2.1 keyframes 1.3 transition 过渡1.4 比较 2 方式2.1 css 伪类2.2 vue <Transition> 组件2.2.1 默认名称2.2.2 自定义名称2.2.3 自定义 class2.2.4 配合 animation…

【CSS】css转换、css过渡、css动画_09

目录 ❣️ 转换 1.什么是转换 2.转换的属性 3.2D转换 (1) 位移 (2) 缩放 (3) 旋转 (4) 倾斜 4.3D旋转 ❣️ 过度 1. 指定参与过渡的css属性 2.设置过渡的出持续时长 3.设置过渡的时间曲线函数&#xff08;设置过渡的速度&#xff09; 4.过渡的延迟 5.过渡代码的…

使用vue实现css过渡和动画

一、过渡和动画的区别 过渡&#xff1a;通常用来表示元素上属性状态的变化。动画&#xff1a;通常用来表示元素运动的情况。 二、使用Vue实现基础得css过渡与动画 1. 动画 /* css */ keyframes leftToRight {0% {transform: translateX(-100px);}50% {transform: translateX(-…

CSS动画过渡

CSS动画过渡: 过渡transition,我们可以在不使用 Flash 动画或 JavaScript 的情况下&#xff0c;当元素从一种样式变换为另一种样式时为元素添加效果. 要实现这一点&#xff0c;必须规定两项内容&#xff1a;1.规定希望把效果添加到哪个 CSS 属性上&#xff0c;2.规定效果的时长…

CSS 过渡效果

简述: CSS过渡&#xff0c;就是样式发生变化时&#xff0c;可以看上去更自然&#xff0c;更柔和。想让哪个盒子有过渡样式&#xff0c;就把transition属性加在那个盒子上。 语法: 属性描述取值范围transition-property应用过渡效果的 CSS 属性名CSS属性都可以(all, width, co…

css的过渡特效

在web端&#xff0c;我们实现很多有意思的效果&#xff0c;比如&#xff1a;元素的淡入淡出、菜单滑入颜色切换等等效果。 那这些效果最简单的方式就是过渡【transitions】&#xff0c;过渡是一个变化时。css的过渡&#xff0c;可以使用‘ease’来描述这个变化的状态。 trans…

CSS transition(过渡效果)

1. transition-property transition-property 属性用来设置元素中参与过渡的属性名称&#xff0c;语法格式如下&#xff1a; transition-property: none | all | property; 参数说明如下&#xff1a; none&#xff1a;表示没有属性参与过渡效果&#xff1b;all&#xff1a;…

CSS——过渡与动画

1. 缓动效果 给过渡和动画加上缓动效果&#xff08;比如具有回弹效果的过渡过程&#xff09; 回弹效果是指当一个过渡达到最终值时&#xff0c;往回倒一点&#xff0c;然后再次回到最终值&#xff0c;如此往复一次或多次&#xff0c;并逐渐收敛&#xff0c;最终稳定在最终值。…

CSS过渡效果、变形效果以及动画

一、CSS的过渡&#xff1a;&#xff1a;从一个样式变化到另一个样式 1、transition-property&#xff1a;指定过渡的属性 属性值作用none没有任何属性会获得过渡效果all所有属性都将获得过渡效果property定义应用过渡效果的CSS属性名称&#xff0c;多个名称之间以逗号分隔 2…

CSS过渡,转换与动画

目录 过渡(transition) 转换(transform) 什么是转换 二维坐标系 移动&#xff08;translate&#xff09; 用translate实现居中 旋转&#xff08;rotate&#xff09; 设置旋转中心点 缩放&#xff08;scale&#xff09; 使用 设置缩放中心点 动画 用keyframes定义动…

CSS过渡-Transitions

目录 过渡三要素 过渡触发 属性&#xff1a; 实例运用&#xff1a; 1.过渡时间曲线动画 2.文字放大效果 3.手风琴 4. 米兔过渡 CSS transitions 可以决定哪些属性发生动画效果 (明确地列出这些属性)&#xff0c;何时开始 (设置 delay&#xff09;&#xff0c;持续多久 …

CSS过渡动画

css中实现动画有两种方式&#xff1a;transition过渡动画、 animation自定义动画。 transition 是 css3 新增的⼀个功能&#xff0c;可以实现元素不同状态间的平滑过渡&#xff08;当元素从⼀个状态进⼊到另⼀个状态时&#xff09;&#xff0c;经常⽤来制作⼀些动画效果。 之…

CSS中过渡效果(transition)

CSS中过渡效果&#xff08;transition&#xff09; 过渡&#xff08;无继承性&#xff09;1、transition-property属性2、transition-duration属性3、transition-timing-function属性4、transition-delay属性5、transition属性 兼容性练习总结 过渡&#xff08;无继承性&#x…

CSS过渡

CSS过渡 1. 什么是过渡2. 可以参与过渡的属性有哪些3. 缓动效果 1. 什么是过渡 在 CSS 中&#xff0c;过渡属性&#xff1a;transition 过渡可以为一个元素在不同样式之间变化自动添加 ”补间动画“ 相比于用 JavaScript 实现过渡&#xff0c;用 CSS 优点&#xff1a;  …

CSS系列之过渡 transition(CSS3)

文章の目录 1、transition1.1、概述1.2、值的组成 2、transition-property2.1、属性值 3、transition-duration3.1、属性值 4、transition-timing-function4.1、属性值 5、transition-delay5.1、属性值 写在最后 过渡&#xff08;transition)是CSS3中具有颠覆性的特征之一&…

CSS transition(过渡效果)详解

CSS transition&#xff08;过渡效果&#xff09;详解 通常当 CSS 的属性值更改后&#xff0c;浏览器会立即更新相应的样式&#xff0c;例如当鼠标悬停在元素上时&#xff0c;通过 :hover 选择器定义的样式会立即应用在元素上。在 CSS3 中加入了一项过渡功能&#xff0c;通过该…

#HTML5-CSS-transition-过渡特效

CSS过渡特效 概述   在CSS中用于设置过渡特效的属性是 transition&#xff0c;该属性允许CSS的属性值在一定的时间区间内平滑地过渡&#xff0c;这就拜托了我们在CSS3版本标准之前对“JavaScript”和“Flash”的依赖&#xff0c;使页面的性能得以提升。这种效果可以在鼠标悬…

Windows系统_ARM处理器无法打开客户端问题解决

问题现象&#xff1a;客户端无法打开 用户环境&#xff1a;Windows系统 ARM处理器 问题定位&#xff1a;兼容性问题 解决方法&#xff1a; 右键客户端&#xff0c;点击“属性”选择“兼容性”&#xff0c;点击“更改所有用户的设置” 选择“更改仿真设置” 勾选设置如下&a…