包图(Package Diagram)由包和包之间的关系组成,模型如下:
一、包(Package)
1、名称
包的名称有两种形式:简单名(simple name)和路径名(path name).其中简单名仅包含一个简单的名称,路径名是以包处于的外围包的名字作为前缀
2、拥有的元素
包可以拥有其他元素,比如类、接口、组件、节点、协作、用例和图,甚至可以是其他包。
3、可见性
包的可见性用来控制包外部的元素对包内部元素的访问权限
4、引入与输出
引入(import)允许一个包中的元素单向访问另一包中的元素。被引入的包中的公共部分称为输出(export).如下图,包Package3输出一个类----C1,而C2是受保护的,所以没有被输出。一个包输出的部分仅对显式地引入这个包的其他包中的元素是可见的。下图中package1显式地引入了pacakge2,而package2显式地引入了package3.因此package3::C1对包package2是可见的,但是由于package3::C2受保护,因此它是不可见的。同样Package::B2对包package1的内容也是不可见的,因为它是私有的。要注意一点:引入和访问依赖是不可传递的。package1引入了package2,package2引入了package3,但这并不意味着package1引入了package3!!!
二、包之间的关系
在包之间可以有如下两种关系
1、引入和访问依赖,用于在一个包中引入另一个包输出的元素。
2、泛化。用于说明包的家族
包之间的泛化关系和类之间的泛化关系类似,即特殊包可以应用到一般包被使用的地方。就像类一样,包可以替换一般的元素,并可以增加新的元素。
三、包图建模技术
1、对组成的元素建模
(1)、浏览特定的体系结构视图中的建模元素,找出在概念和语义上相互接近的元素所定义的组块。
(2)、把每一个这样的组块放到一个包中。
(3)、对每一个包找出可以在包外访问的元素,将这些元素标记为公有的,把其他的元素标记为私有或受保护的。如果不确定,就隐藏该元素。
(4)、确定包与包之间的依赖关系,特别是引入依赖。
(5)、确定包与包之间的泛化关系,以及包的多重性和重载。
2、对体系结构视图建模
(1)、找出问题语境中一组有意义的体系结构视图。通常包括设计视图、进程视图、实现视图、用例视图。
(2)、找出对于可视化、详述、构造和文档化来说充分必要的元素(和图),并将他们放入适当的包中。
(3)、如有必要将这些元素进一步组合到他们自己的包中。
(4)、不同视图中的元素之间通常存在依赖关系,所以一般要让系统顶层的所有视图对同层的其他视图开放。
阅读(2524) | 评论(0) | 转发(0) |