封装图显示了中型到大型项目中模型元素的布置和组织,可用于显示子系统或模块之间的结构和相关性。

(一键即时打开使用)


[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_UML


什么是UML中的包图?

大系统提供特殊挑战。为大型系统绘制班级模型,而且它太大而难以理解。类之间有太多的联系要理解。处理这个问题的一个有用的技术是UML的包。统一建模语言中的一个软件包可以帮助:

  1. 分组元素
  2. 为分组元素提供名称空间
  3. 一个包可能包含其他包,因此提供了包的分层组织。
  4. UML元素可以分组到包中。

下图显示了一个示例包图用于表示业务的组成。

[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_依赖关系_02

尝试一下!


查找在线包图工具?只需点击右侧的绘图按钮即可在线创建包图。Visual Paradigm Online是免费*且直观的。在开始之前,您也可以通过这个Package Diagram教程来了解Package Diagram。

​现在画​




包图表示法

程序包图用于构建高级系统。软件包用于组织包含图表,文档和其他主要交付物的大型系统。换句话说,软件包也可以用作其他图表的一部分。

嵌套和分层包

一个包可以表示为一个嵌套包的层次结构。嵌套包的原子模块通常是类图。

下图给出了由几个嵌套软件包组成的软件包示例。


[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_嵌套_03

使用包图时几乎没有限制,它们如下所示。

  1. 软件包的名称在系统中应该是唯一的。但是,允许不同包中的类具有相同的名称。例如,Package :: Product&Shipping :: Product是允许的。
  2. 用户应避免使用编程语言提供的软件包名称。例如,Java将Date作为一个包提供。因此,程序员应该构建名为Date的包。
  3. 软件包可以包括整个图表,单独的组件名称或根本没有组件。

一个包也可以有一个完全合格的名字。下图显示了这种软件包的使用示例。


[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_UML_04

注意:

  1. UML,C ++,Perl,Ruby myPkg :: foo :: bar
  2. Java,C#myPkg.foo.bar

包装遏制

  1. 包以静态图显示
  2. 两种等同的方法来显示遏制: 

依赖

依赖关系中涉及两个子类型。他们是“访问”和“导入”。虽然用户可以使用自己的构造型来表示两个包之间的依赖类型,但有两种构造型。

<<导入>> - 一个包导入其他包的功能


[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_UML_05

示例 - << import >>依赖项


[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_UML_06

<<访问>> - 一个包需要其他包的功能帮助


[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_依赖关系_07


何时绘制包图?

UML不会将包图视为单独的技术,通过将其他模型元素在同一个图中分组到不同的包中来组合它们通常很有用。包图可以在许多方面有用,例如:

  1. 创建一大组模型元素的概述
  2. 组织一个大型模型
  3. 分组相关元素
  4. 分隔名称空间

将系统分解为包的标准

  1. 不同的所有者 - 谁负责处理哪些图表?
  2. 不同的应用程序 - 每个问题都有其明显的分区;
  3. 具有强大凝聚力的班级集合 - 例如课程,课程描述,教师,学生......
  4. 或者:使用架构模式来帮助找到合适的分解,例如MVC框架

其他软件包指南

  1. 在一个软件包中收集具有强大凝聚力的模型元素
  2. 保持不同包装中的低耦合模型元素
  3. 尽量减少不同软件包中模型元素之间的关系,特别是关联
  4. 命名空间的含义:导入到包中的元素不会“知道”它在导入包中的使用方式

如何创建一个包图?

以下示例显示了在线购物商店的跟踪订单服务。

跟踪订单服务负责为客户订购的产品提供跟踪信息。跟踪序列号中的客户类型,跟踪订单服务引用系统并向客户更新当前送货状态。

第1步 - 确定系统中存在的软件包

  1. 有一个“跟踪订单”服务,它必须与其他模块交谈以了解订单详情,我们称之为“订单处理”。
  2. 下一步获取订单详情后,它必须知道运送详情,让我们称之为“运送”。
  3. 最后,如果知道订单的状态,它必须将信息更新到用户,让我们称这个模块为“UI框架”。

[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_UML_08

第2步 - 识别依赖关系

  1. “跟踪订单”包应该从“订单处理”中获得订单详细信息,另一方面,“订单处理”还需要“跟踪订单”包中的跟踪信息,因此,这两个模块正在访问对方,访问>>双重依赖。 
  2. 要知道送货信息,“送货”需要导入“跟踪订单”才能完成送货过程。 

第3步 - 最后,对UI框架的跟踪顺序依赖关系也映射到完成跟踪订单子系统的包图的图中。 

[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_依赖关系_09


包图示例

包图示例 - MVC结构

[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_UML_10

包图示例 - 分层结构

[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分_嵌套_11