包是一组模型元素,这意味着一个包可以包含不同类型的模型元素,包括用于创建层次结构的其他包。一个包为它的内容定义了一个命名空间,用于各种目的。
封装图一览
Table of Contents
hide
包图用于简化复杂的类图,可以将类分组到包中。包是逻辑相关的 UML 元素的集合。
下图是一个业务模型,其中类被分组到包中:
- 包显示为顶部带有小标签的矩形。
- 包名称位于选项卡上或矩形内。
- 虚线箭头是依赖项。
- 如果另一个包的变化可能会迫使第一个包发生变化,那么一个包依赖于另一个包。

封装图的基本概念
包图遵循嵌套包的层次结构。嵌套包的原子模块通常是类图。使用包图的限制很少,如下所示。
- 系统的包名称不应相同,但是不同包中的类可以具有相同的名称。
- 包可以包含整个图表、单独的组件名称或根本不包含组件。
- 包的完全限定名称具有以下语法。

包可以用符号表示,下面显示一些示例:

包图——依赖表示法
依赖关系涉及两种子类型。它们是 <<import>> 和 <<access>>。虽然有两种原型,但用户可以使用他们自己的原型来表示两个包之间的依赖类型。

封装图的关键要素
包用于组织大量模型元素:
- 能见度
- 进口
- 使用权

何时使用包?
创建大量模型元素的概览
- 组织大型模型
- 对相关元素进行分组
- 分隔命名空间
包的可见性
每个包含的元素都具有相对于包含包的可见性。
- 公共元素对包外的元素可见,用“+”表示
- 受保护的元素仅对继承包中的元素可见,用“#”表示
- 私有元素对包外的元素完全不可见,用“-”表示
- 类中属性和操作可见性的相同语法
包之间的导入关系
这些关联由包 X 拥有:

导入和访问

遗产
具有对另一个包的泛化的包继承了由继承的包拥有或导入的公共和受保护元素。包在静态图中以两种等效的方式显示容器:

子系统
子系统用于可以由系统的各个部分表示的系统分解:(规范/实现)

子系统内部和外部方面
一个子系统有一个规范和一个实现来表示两个视图:
- 外部视图,显示子系统提供的服务
- 内部视图,显示子系统的实现
- 两个方面之间存在映射关系

子系统建模技巧
- 为大型系统的每个独立部分定义一个子系统
- 根据系统类型和子系统类型等因素选择规范技术
- 独立实现每个子系统,使用规范作为需求规范
建模复杂分组
包图通常用于描述包与其他包或对象之间的层次关系(分组)。一个包代表一个命名空间。
封装图示例——分层结构
