第7章包图
所有复杂的系统都必须被分成几个小的单元,以便人们可以一次只处理有限的信息,且在分别处理这些信息时不会互相干扰。在UML中,包就是用于把建模元素组织成组的通用机制。
第7章包图
概述
包
包之间的关系
包图建模技术
实例——图书馆管理系统的包图
概述
包图(Package Diagram)是维护和控制系统总体结构的重要建模工具。对复杂系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这时就有必要将这些元素进行分组,即把语义相近并倾向于同一变化的元素组织起来加入同一个包中,以方便理解和处理整个模型。包图由包和包之间的关系组成的。包图模型如下图所示。
包
包是将多个元素组织为语义相关的组的通用机制。一个包拥有或引用的模型元素称为该包的内容。作为模型组织结构的一种分组机制,包的实例没有任何语义。因此,包仅在建模时有意义,而不必转换到可执行的系统中。在实践中,一般使用术语子系统(Subsystem)来描述包。
在UML中,包的绘制是用两个矩形表示的:一个小矩形(标签)和一个大矩形,小矩形紧连在大矩形的左上角上,如下图所示。
包
名称
拥有的元素
可见性
引入与输出
标准元素
名称
同其他的建模元素一样,每个包都必须有一个与其他包相区别的名称。包的名称是一个字符串,它有两种形式:简单名(simple name)和路径名(path name)。其中,简单名仅包含一个简单的名称,路径名是以包处于的外围包的名字作为前缀的,如下图所示。
拥有的元素
包可以拥有其他元素,这些元素可以是类、接口、组件、节点、协作、用例和图,甚至可以是其他包。拥有是一种组成关系,这意味着模型元素被声明在包中,而且一个模型元素不能被一个以上的包所拥有。如果包被撤销,其中的元素也要被撤销。如下图所示,显示的是包的内容。
拥有的元素
一个包形成了一个命名空间,即在一个包的语境中同一种元素的名称必须是惟一的。这说明一个包内不同种类的元素或不同包内的元素可以具有相同的名称。但是,在实际建模中,为了避免混乱,最好将一个包内所有种类的元素的名称都设为惟一的。
可见性
像类中属性和操作的可见性一样,包内的元素也有可见性。包的可见性用来控制包外部的元素对包内元素的访问权限。包的可见性共有3种,如下表所示。
可见性
含义
前缀符号
公有的(public)
此元素可以被任何引入该包的包中的元素访问
+
受保护的(protected)
此元素可以被继承该包的包中的元素访问
#
私有的(private)
此元素只能被同一个包的元素访问
-
提示:如果一个元素对一个包是可见的,那么这个元素对嵌套于该包内的所有包都是可见的。被嵌套的包可以看到包含该包的包所能看到的所有事物。
引入与输出
引入(import)允许一个包中的元素单向访问另一包中的元素。在UML中,用一个由构造型import修饰的依赖为引入关系建模。通过把抽象包装成有含义的组块,然后用引入关系控制对它们的访问,就能控制大量抽象的复杂性。包的公共部分称为输出(export)。如下图所示,包Package3输出一个类—C1。而C2是受保护的,所以没有被输出。一个包输出的部分仅对显式地引入这个包的其他包中的元素是可见的。
如下图所示,图中包Packagel显式地引入了包Package2,而包Package2也显式地引入了Package3。因此,Package3::C1对包Package2的内容是可见的,但是由于Package3::C2受保护的,因此它是不可见的。同样,Package::B2对包Packagel的内容也是不可见的,因为它是私有的。由于包Package4没有引入Package3,所以不允许Package4的内容访问Package3中的任何内容。
第7章包图 来自淘豆网m.daumloan.com转载请标明出处.