当前位置:文档之家› 第五章 包图.

第五章 包图.


模型的组织结构
对系统模型的内部组织结构通常采用先分层再细分成包 的方式。 系统分层常用一种方式是将系统分为三层结构,即用户 界面层、业务逻辑层和数据访问层。
用户界面层
业务逻辑层
数据访问层

用户界面层代表与用户进行交互的界面,既可以是 Form窗口,也可以是Web的界面形式。一个应用可能有 很多不同的界面表示形式,通过对界面中数据的采集和处 理,以及响应用户的请求与业务逻辑层进行交换。
包的依赖性可以加上许多构造型规定它的语义,其中最 常见的是引入依赖。引入依赖(Import Dependency)是包与 包之间的一种存取依赖关系。 • 引入是指允许一个包中的元素存取另一个包中的元素, 引入依赖是单向的。引入依赖的表示方法是在虚箭线上标有构 造型Inport,箭头从引入方的包指向输出方的包。 • 如图所示
2、泛化关系 • 泛化关系表示事物的一般和特殊的关系。如果两个包之 间存在泛化关系,就是指其中的特殊性包必须遵循一般性 包的接口。 • 就像类的继承一样,包可以替换一般的元素,并可以 增加新的元素。如图5-17所示
5.4 包的嵌套
包可以将其他包作为包内的元素,子包又可以拥有自己 的子包,这样就可以构成一个系统的嵌套结构,以表达系 统模型元素的静态结构关系。 • 包的嵌套可清晰地表现系统模型元素之间的关系,但在 建立模型时包的嵌套不宜过深,包的嵌套层数一般以2到3 层为宜。 如图5-18所示。 •
• •
构造性
<<system>>
<<subsystem>>
说明
表示正在建模的整个系统
表示正在建模的系统中某个独立的部分。 对于较大的系统,经常需要将其划分为几个独 立的子系统,每个子系统从较低的抽象层次观 察的时候就像一个较小的系统
<<facade>> <<stub>>
描述一个只引用其他包内元素的包,主要 用来为其他一些复杂的包提供简略视图 一个代理包,通常应用于分布式系统的建 模中,它服务于某个其他包的公共内容
体系结构模式
<<framework>> 描述一个领域内的应用系统提供可扩充模板的
5.3 包图中的关系
包之间的关系总的来讲包括:依赖关系和泛化关系。 1、 依赖关系 对于由对象类组成的包,也就是如果两个包中的任意两个类存在 依赖关系,则称为包之间存在依赖关系。
领域
摩托车
车轮
Hale Waihona Puke •在创建包的依赖关系时,尽量避免如图5-14所示的循 环依赖关系。为解决循环依赖关系,需要将Package A包 或者Package B包中的内容进行分解,将依赖于另一个包 中的内容转移到另外一个包中。如图5-15所示,Package A中依赖Package B中的类转移到Package C中。
第五章 包图
本章要点: • • 理解包图和包的关系 理解包和包之间的关系
基础内容:模型的组织结构
重点掌握:包中的模型元素 一般了解:包的嵌套
5.1 包图的定义
包是用于把元素组织成组的通用机制。 UML模型中的组织是通过包(Package)来实现的,包 可以把所建立的各种模型组织起来,形成各种功能或用途 的模块。 在UML中对类或者其它模型元素分组时则使用包图。 包是用来对一个图的元素(如类和用例)进行分组的。把 分组后的元素用一个带有标签的文件夹图标包围起来,就 完成了对其打包。
一个包只能看到其他包中被指定为具有公共可见性 的元素。具有受保护可见性的元素只对包含它的包的后代 包具有可见性。 • 一个类的后代可以看到它的祖先中具有公共或受保 护可见性的成员,而其他类则只能看到具有公共可见性的 成员。 •
5.2.3 构造型
在UML中所有的扩展机制都适用于包,可以用标记值 描述包的新特性,用构造性描述包的新种类。包具有不同 的构造型,表现为不同的特殊类型的包。
在Rational Rose 中,支持4种包的构造型,如图5-6~
5-9。
5.2.4 子系统

系统是组织起来以完成一定目的的连结单元的集合,由 一个高级子系统建模,该子系统间接包含共同完成现实世 界目的的模型元素的集合。 子系统是指有单独说明和实现部分的包。它表示具有 对系统其他部分存在接口的连贯模型单元。 子系统使用具有构造型关键字subsystem的包表示,如 下图所示。
5.2 包的组成

在UML中,包的标准形式是使用两个矩形来表示的, 即一个小矩形(标签)和一个大矩形,小矩形紧紧连结 在大矩形的左上角上,包的名称位于大矩形的中间,如 图所示。
UtilityPackage
5.2 包的组成
• 和其他模型元素的名称一样,每个包都必须有一个 与其他包相区别的名称。包的名称是一个字符串,它有两 种形式:简单名(Simple Name)和路径名(Path Name)。 如:包名domain就是一个简单名 路径名com::bookshop::domain
包图举例
财务子系统
数据库子系统
数据库操作
数据库接口
Oracle 接口
Sybase接口
包图举例
包图举例
订单获 取界面 AWT 邮件发 送界面 用户接口包
订单获 取应用
邮件发 送应用
应用层包
订单
其中:AWT是Java中管理GUI类的包。
顾客
问题域包
包图另一种划分方式
用户接口
订单获 取界面 系 统应用

包的可见性
包的可见性用来控制包外元素对包内元素的访问权限。 包的可见性: (1) - 被private关键字定义的私有元素对包外部元 素完全不可见。意味着包中的元素只能被拥有或引用该元 素的包存取和使用。 (2)# 被protected关键字定义的被保护的元素只对那 些与包含这些元素的包有泛化关系的包可见。 (3)+ 被 public定义的公共元素对所有引入的包以及 它们的后代都可见。即允许其他元素存取和使用包中内容。

业务逻辑层是用来处理系统的业务流程,它接受用 户界面请求的数据,并根据系统的业务规则返回最终的处 理结果。它将系统的业务规则抽象出来,按照一定的规则 形成在一个应用层上。
数据访问层是程序中和数据库进行交互的层。

包图和包

包是包图中最重要的概念,它包含了一组模型元素和图, 如图5-2所示。

组成包图的元素有:包、子系统、依赖关系
相关主题