包图 构件图 与部署图
12
包图中的关系
2、泛化关系 包间的泛化关系类似于类间的泛化关系,使
用一般包的地方,可以用特殊包代替。 在系统设计中,对某一个特定的功能,有多
种实现方法。例如,实现多数据库支持;实 现B/S和C/S双界面。这时就需要定义一 些高层次的“抽象包”和实现高层次功能的 “实现包”。
13
泛化关系
例如,说明GUI有 两种风格:一种是基 于WinForm的 C/S风格,一种是 WebForm的B/S 风格。
15
创建包图
1.标识候选包的原则:
把类图中关系紧密的类放到一个包中; 在类继承类层次中,把不同层次的类放在不同
的包中。
也可以把用例模型作为包的来源。然而,用 例横跨分析包是非常普遍的——一个用例可 以由几个不同包中的类实现。
16
创建包图
2.调整候选包 在已经识别一组候选包后,然后减少包间依
《import》关系:最普遍的包依赖类型,说明提供者包的命 名空间将被添加到客户包的命名空间中,客户包中的元素也能 够访问提供者包的所有公共元素。
《access》关系:如果只想使用提供者包中的元素,而不想将 两个包合并,则应使用该关系。在客户包中必须使用路径名,才 能访问提供者包中的所有公共元素。
分解 是软件开发中控制软件复杂性的重要
手段。 在OO方法中, 需要考虑如何把相关的类放
在一起。 把语义相近并倾向于同一变化的元素组织起
来加入同一个包中,以便于理解和处理整个 模型。
2
为什么要包
包的作用是: 1)对语义上相关的元素进行分组 2)定义模型中的“语义边界” 3)提供配置管理单元 4)在设计时,提供并行工作的单元 5)提供封装的命名空间,其中所有名称必 须唯一
3
包的概念
4
包的表示
UML中,用文 件夹符号来表
包名放在第 二栏
示一个包。包 由一个矩形表
PageName
示,它包含2栏。
下面是最常见 的几种包的表 示法。
Rose 常 用 表示法
System:Web
UI
class
包名放在第 一栏
PageName
ClassName-1 ClassName-2 …..
UI 简单名
System:We的元素
在一个包中可以拥有各种其他元素,包括类、接口、构 件、节点、协作、用例,甚至是其他包或图。这是一种 组成关系,意味着元素是在这个包中声明的,因此一个 元素只能属于一个包。
每一个包就意味着一个独立的命名空间,因此,两个不 同的包,可以具有相同的元素名,但由于所位于的包名 不同,因此其全名仍然是不同的。
赖,最小化每个包的public、protected 元素的个数,最大化每个包中private元素 的个数。做法是:
在包间移动类; 添加包或删除包。
17
创建包图
良好包结构的关键是包内高内聚,包间低耦 合。
通常,当创建分析包模型时,应该尽量使包模 型简单。获得正确的包集合比使用诸如包泛化 和依赖构造型的特征更加重要,这些特征可以 以后再添加,仅当使用诸如包泛化和依赖构造 型的特征使得模型更加容易理解时,才使用这 些包整理技术。除了保持简单,还应该避免嵌 套包。物件在嵌套包结构中埋藏得越深,模型 变得越晦涩。
领域内的应用系统提供可扩充模板的体系结构模式。
9
包图中的关系
包图中的关系有2种:依赖关系、泛化关系。 1、依赖关系:分为4种。把箭尾端的包称为
客户包,把箭头端的包称为提供者包。
10
包图中的关系
《use》关系:《use》关系是一种默认的依赖关系 ,说明客 户包(箭尾端的包)中的元素以某种方式使用提供者包(箭头 端的包)的公共元素,也就是说客户包依赖于提供者包。如果 没有指明依赖类型,则默认为《USE》关系。
像类中的属性和方法一样,包中的元素也有可见性, 包内元素的可见性控制了包外部元素访问包内部元 素的权限。
7
包的表示
包的可见性有 3种:
“+”表示 “public”
“#”表示 “protecte d”
“-”表示 “private”
8
包的表示-包的构造型
为了表示包的新特性,用构造型来描述包的新特征。
为什么要包
在面向对象软件开发的视角中,类显然是构 建整个系统的基本构造块。但是对于庞大的 应用系统而言,其包含的类将是成百上千, 再加上其间复杂的关联关系、多重性等,必 然是大大超出了人们可以处理的复杂度。这 也就是引入了“包”这种分组事物构造块。
1
包的概念
包是维护和控制系统总体结构的重要建模工 具,有助于方便理解和处理整个模型。
《trace》关系:想表示一个包到另一个包的历史发展,则需要 使用《trace》关系来表示 .
11
包图中的关系
例如 ,有两个《USE》依赖, Client包将通过Server包来完 成Order的存储,而Server包 使用 System.Data.SqlClient包 来实现数据库的存储。
例如,Client包引用了(import)了 Rule包,Rule包又引用了GUI包。同 时,这还表示Client包间接引用了GUI 包。
14
创建包图
绘制包图的基本过程主要有三个步骤:第一, 寻找包;第二,确定包之间的关系;第三, 标出包内元素的可见性。
绘制包图的“最小化系统间的耦合关系”的 原则:
最大限度减少包之间的依赖,包封装时,避免 包之间的循环依赖;最小化每个包的public、 protected元素的个数,最大化每个包中 private元素的个数。
《system》:表示整个系统。 《subsystem》:表示正在建模的系统中某个独立的子
系统。 《facade》:只是某个其它包的视图,它主要用来为
其它一些复杂的包提供简略视图。 《stub》:是一个代理包,它服务于某个其他包的公共
内容,这通常应用于分布式系统的建模中。 《 framework》:用来表示一个框架的,框架是一个
PageName 类名
第二栏列 出包含的 类名
在第二栏画 出所包含的 类图形表示
嵌套
包
5
包的表示
包的名称
每个包必须有一个与其他包相区别的名称。标 识包名称的格式有两种:简单名和全名。
其中,简单名仅包含包一个简单的名称;全名 是用该包的外围包的名字作为前缀,加上包本 身的名字。
Rose常用表示方法中,其包名UI就是一个简单名。而 包System.Web.UI才是一个完整带路径的名称,表示 UI这个包是位于System.Web命名空间中的。