第五章 包图.
包图
一个大型系统中往往包含了数量庞大的模型元素,如何组织管理这些元素是一个十分重要的问题。
包是一种常规用途的有效的组合机制。
包类似于文件系统中的文件夹或者是目录结构,它是一个容器,用来对模型元素进行分组,并且为这些元素提供一个命名空间。
UML中的一个包直接对应于Java中的一个包。
在Java中,一个包可能含有其他包、类或者同时含有这两者。
进行建模时,通常使用逻辑性的包,用于对模型进行组织。
而包图是由包和包之间的联系组成的,它是维护和控制系统总体结构的重要建模工具。
本章将详细介绍包图的各种概念、表示方法和实例应用。
1.包图的概念1.1包图和包当对大型系统进行建模时,经常需要处理大量的类、借口、构件、节点和图,这时就很有必要将这些元素进行分组,即把那些语义相近并倾向于一起变化的元素组织起来加入同一包中,这样便于理解和处理整个模型。
同时也便于控制包中元素的可见性。
包图是描述包及其关系的图。
与所有UML的其它图一样,包图可以包括注释、约束。
通过各个包与包之间关系的描述,展现出系统的模块与模块之间的关系。
图1是一个包图模型。
包是包图中最重要的概念,它包含了一组模型的元素和图,如图1中的Package A和Package B就是两个包。
Package BPackage A在面向对象软件开发的过程中,类显然是构建整个系统的基本元素。
但是对于大型的软件系统而言,其包含的类将是成百上千,再加上类间的关联关系、多重性等,必然是大大超出了人们对系统的理解和处理能力。
为了便于管理这些类,我们引入了“包”这种分组元素。
在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它子包或图。
一个元素只能属于一个包。
包的作用是:1)对语义上相关的元素进行分组。
如,把功能相关的用例放在一个包中。
2)提供配置管理单元。
如,以包为单位,对软件进行安装和配置。
3)在设计时,提供并行工作的单元。
如,在设计阶段,多个设计小组,可以同时对几个相互独立包中的类进行详细设计。
第五章 包图
• •
构造性
<<system>>
<<subsystem>>
说明
表示正在建模的整个系统
表示正在建模的系统中某个独立的部分。 对于较大的系统,经常需要将其划分为几个独 立的子系统,每个子系统从较低的抽象层次观 察的时候就像一个较小的系统
<<facade>> <<stub>>
描述一个只引用其他包内元素的包,主要 用来为其他一些复杂的包提供简略视图 一个代理包,通常应用于分布式系统的建 模中,它服务于某个其他包的公共内容
总结:
本章介绍了UML包图,应用包图的目的是为了简化图, 通常当一个图变得庞大且在单一页中无法打印的时候引入 包。 • 包图中可以包含任何一种UML图,但通常更多的是用例 图或类图; • 创建用例包图,可以帮助组织需求,对需求进行高层次 的概述; • 创建类包图,可以在逻辑上组织类,对设计进行高层次 的概述。
在Rational Rose 中,支持4种包的构造型,如图5-6~
5-9。
5.2.4 子系统
•
系统是组织起来以完成一定目的的连结单元的集合,由 一个高级子系统建模,该子系统间接包含共同完成现实世 界目的的模型元素的集合。 子系统是指有单独说明和实现部分的包。它表示具有 对系统其他部分存在接口的连贯模型单元。 子系统使用具有构造型关键字subsystem的包表示,如 下图所示。
包的依赖性可以加上许多构造型规定它的语义,其中最 常见的是引入依赖。引入依赖(Import Dependency)是包与 包之间的一种存取依赖关系。 • 引入是指允许一个包中的元素存取另一个包中的元素, 引入依赖是单向的。引入依赖的表示方法是在虚箭线上标有构 造型Inport,箭头从引入方的包指向输出方的包。 • 如图所示
5.系统分析与设计-包图组件图物理图 - 副本
上海理工大学
2019/2/4
36
2019/2/4
上海理工大学
37
animator.exe {version=5.0.1}
dlog.dll
render.dll
wrframe.dll
raytrce.dll
一个软件产品的构成
2019/2/4
上海理工大学
2019/2/4
上海理工大学
7
包的模型元素名前可以有可视性标志,其表示方
法与类中的属性和操作的可视性表示一样。
+,对于输入该包的任何包的模型元素都可见 -,对于外包不可见 #,只对其子包可见
客户机 +订货表 +追踪表 -订货
2019/2/4
上海理工大学
8
1.4包的嵌套
包可以拥有其它包作为包内的元素,子包又可以
组件和对象可以驻留在节点实例上,而且可以从
一个节点向另一个节点转移,节点执行组件
2019/2/4
上海理工大学
45
节点1
<<cluster>> <<database>>
x
V
w
Z
<<become>>
节点2
<<cluster>>
x
V
2019/2/4
上海理工大学
46
3.3 节点的联系
节点与节点之间通过物理连接(connection)发生联
多个接口
字典
拼写检查
同义词
2019/2/4
上海理工大学
35
静态视图—类图对象图和包图
1.1 类图概述——重要性
类图表述系统中类的静态结构,不仅描述 了系统中的类,还表示了类之间的各种关 系,比如:关联、依赖、泛化、实现等
James Rumbaugh对类的定义:类 (Classs)是具有相似结构、行为和关系 的一组对象的描述符 类 + 类的关系 = 类图
1.2 类图概述——类图的作用
salary:Dollars
Student
major:String
3.5 关联关系(Association)
关联是一种结构关系,它指明一个类与 另一个类在类间的联系,表示类之间的 连接,它使一个类的可见属性和方法被 另一个类使用
关联关系包括:双向关联,单向关联, 聚合和反射关联
除聚合关系外,关联关系通常使用实线 +箭头的方式表示
3.2 依赖关系(Dependency)
如果有两个类A与B,当我们修改A类时 会引起B类的修改,我们称类B依赖于类 A。
依赖关系可能由各种原因引起,比如一 个类向另一个类发送消息;一个类是另 一个类的数据成员,一个类是另一个类 的某个操作参数等(use a关系)
UML中包含了4种依赖关系:使用(Usage) 依赖,抽象(Abstraction)依赖,授权 (Permission)依赖和绑定(Binding)依赖
3.3.1 泛化关系的表示
在UML语言中,采用空心箭头+实线 (如果父类是接口,则采用虚线)的 方式表示泛化关系,箭头指向父类
类的继承
接口的继承
3.3.1 泛化关系的表示举例
BankAccount
owner:String balance:Dollars deposit(amount:Dollars) withdrawl(amout:Dollars)
uml-05包图与OCL
3、共同重用原则
把将会同时,或使用时间相隔不长的建模元 素放到同一个包中。不会一起使用的类不要放 在同一个包中。
4、非循环依赖原则
包之间的依赖关系不要形成循环:即A依赖 B,B依赖C,C又依赖A。
9.1.4 包图
包图由包和包之间的联系构成,包图中 的图形元素是包,包之间用依赖关系或泛 化关系连接。包图是对系统结构建模的重 要工具。
解释:
⑵ 实型
i1 = i2 等于,布尔型 (<>,>,<,<=,>=) i1 + i2 加法,实型 ( -, *, / ) i1.abs 取绝对值,实型
i1.max(i2) 取最大数,实型(min)
r1.round 四舍五入取整, 整型 r1.floor 向下取整, 整型
解释:
⑶ 字符串型
s1.conscat(s2) 连接,字符串 s1.size 字符串长度,整型 s1.toLwer 转换成为小写字母,字符串
包是一个“容器” ,包中可以包含类、接口、构件、用
例、结点、活动、状态、包等其他模型元素。 包是对软件模型进行分解、组织的有效的模型元素。
2.包的表示
UML用带把的矩形框来表示包。
简单包名
路径包名
路径包名中位于前面的是外围包,后面的是内部包。 注意包的嵌套层数不应过多。
3.包中元素的可见性
包中的元素对其他包可以访问,也可以隐藏, 可见性具有可见、保护和私有三种形式。
表示订单的税金是订单和的6.5% 。
● 蕴涵
context 订单 inv
订单的文章->size = 0 implies 订单和 = 0
表示 “订单的文章”的数量如果等于0,则“订 单”的“订单和”也必须等于0
第5章 信息系统分析与设计 包图
显现
隐藏
5.1.1 包的定义 5.包成员 包成员是包中的元素,例如下图中的“检索 图书”用例就是“处理订单”包的成员。
包成员
5.1.2 包的命名
1. 包名
包名应由标识符表示,并且用能够表示包含 义的名字。包的名字放到包的顶部,或包的内 面。例如:
5.1.2 包的命名
2. 包成员的命名
包中成员的名字不允许相同。 非限定名:成员的名字,不包括包的名字。 例如,下图“货品” 限定名: 成员前面缀包名。例如, B::货品
5.2.1 依赖关系
2. 包依赖的类型
2)抽象:如果一个包的元素是对另外一个包元 素的抽象,则两个包之间存在抽象关系 。
5.2.1 依赖关系
2. 包依赖的类型
3)跟踪:如果一个包的元素是对另外一个包元 素的的深化,则两个包之间存在跟踪关系 。
5.2.2 导入关系 1. 导入关系的含义
导入(import)是指将A包的元素导入到B包中,使得导入
1、重用等价原则
对于同类可重用的模型元素尽量放到一个包
中,不要把可重用模型元素和不可重用的模型
元素混到一个包中。
2、共同重用原则
把同一个应用要重用的多个模型元素放到同一
个包中,以减少包间的依赖,提高包的独立性。
3、共同封闭原则
把可能同时修改,同时维护的模型元素放到 一个包中,以便于维护和升级。
5.1.3 包的可见性
包的可见性是指包中成员被其他包或模 型元素访问的程度 ,分以下三种情况:
可见public : + 受限protected : # 私有private : -
5.1.4 包图
包图用来展现包和包之间的关系。
书店图书管理的包图:
(完整版)软件工程 第五章 面向对象的需求分析
第五章面向对象的需求分析面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。
它包含面向对象风格的图形语言机制和用于指导需求分析的面向对象方法学。
面向对象的思想最初起源于 20世纪 60年代中期的仿真程序设计语言Simula67。
20世纪80年代初出现的Smalltalk 语言及其程序设计环境对面向对象技术的推广应用起到了显著的促进作用。
20世纪90年代中后期诞生并迅速成熟的UML(Unified Modeling Language,统一建模语言)是面向对象技术发展的一个重要里程碑。
UML 统一了面向对象建模的基本概念、术语和表示方法,不仅为面向对象的软件开发过程提供了丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。
本章首先介绍面向对象的主要概念和思想。
在概述了UML的全貌之后,以“家庭保安系统”为实例,介绍与需求分析相关的部分 UML语言机制以及基于UML的面向对象的需求分析方法和过程。
第一节面向对象的概念与思想一、面向对象的概念关于“面向对象”,有许多不同的看法。
Coad和 Yourdon给出了一个定义:“面向对象 = 对象 + 类 + 继承 + 消息通信”。
如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统是面向对象的。
一个面向对象的程序的每一成分应是对象,计算是通过新的对象的建立和对象之间的消息通信来执行的。
1.对象(object)一般意义来讲,对象是现实世界中存在的一个事物。
可以是物理的,如一个家具或桌子,如图 5-1-1所示,可以是概念上的,如一个开发项目。
对象是构成现实世界的一个独立的单位,具有自己的静态特征(用数据描述)和动态特征(行为或具有的功能)。
例如:人的特征:姓名、性别、年龄等,行为:衣、食、住、行等。
图 5-1-1 对象的定义(1)对象、属性、操作、消息定义对象可以定义为系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。
第5章UML包图
17
5.6.2 调整候选包
在已经识别一组候选包后,减少包间依赖,最小化每个包中public、 protected元素的个数,最大化每个包中private元素的个数。做法如 下。 (1) 在包间移动类。 (2) 添加包、分解包、合并包或删除包。 通常,在分析阶段,将类封装为包模型时,应该尽量使包模型简单。 起初,将类图转换为包图时,不需考虑包间的泛化和依赖关系,仅 当使用诸如包泛化和依赖关系能简化包模型时,才使用这些包整理 技术。 除了保持简单,还应该避免嵌套包。包的嵌套结构越深,模型变得 越难理解。我们曾见过非常深层的嵌套包,而每个包仅包含一个或 两个类。这些模型更像是标准的、自上而下的功能分解,而不是包 模型。 作为经验法则,希望每个包具有4~10个分析类。然而,对于所有的 经验法则,却存在例外,如果打破某个法则使得模型更加清晰,就 采用这个法则。有时,必须引入只带有一个或者两个类的包,因为 需要断开包模型中的循环依赖,在这种情况下是完全合理的。
14
5.5 包的传递性
当客户包与提供者包之间是<<access>>依赖 时,提供者包中的公共元素就成为客户包中的 私有元素,这些私有元素在包外是不可以访问 的。如图5-15所示,Z包中的公共元素成为Y包 的私有元素,而X包只能访问Y包中的公共元素, 因此,X包不能访问Z包中的公共元素。所以, X、Y、Z包间的<<access >>关系不存在传递 性。
22
5.8 小
结
本章首先解释了几种常见的包图表示法, 并通过了一个简单的例子来说明包的可见 性、依赖关系、泛化等概念。其次,概要 地说明了5种包的构造型。 最后说明如何寻找包、确定包之间的依赖 关系,从而绘制出一个表明软件体系结构 的包图,并简要介绍了用包图表示系统体 系结构的建模方法。
5章:包图与复合结构图习题
5章:包图与复合结构图习题
第5章包图与复合结构图习题
一、简答题
1. 什么叫包?
答:包是对模型元素进行分组的模型元素,可以把包比作一个存放模型元素的箱子或容器,在它里面可以存放多个模型元素。
2. 包之间存在哪几种关系?
答:依赖,导入,合并,包含
3. 包图有什么作用?
答:分类组织模型元素,模型结构建模,命名空间建模
4. 在软件建模中,复合结构图有什么作用?
答:可以直观反映类及其成员的组成结构,并可以描述成员的多重性,成员的连接,以及类的端口等
5. 协作在建模中的作用是什么?
答:用例分析与设计建模,设计模式建模
二、填空题
1.包是对模型元素进行(分组)的模型元素,包的英文名是(package)。
2. 包的可见性有(公开),私有和(保护)几种。
3.包的依赖关系可以分为(使用),抽象和(跟踪)几种形式。
4. 包导入可以分为(元素导入)和(包导入)两种类型。
5.包的包含关系是指一个包可以(嵌套)另外一个包作为自己的(子包)。
7. 复合结构图也被称为(组合结构图),它用来描述类及其成员的(组成结构)及成员之间的连接关系。
8.协作的用途有(用例分析与设计建模)和(设计模式)。
三、选择题
1.下面不属于包关系的是(C)。
A 导入关系
B 合并关系
C 关联关系
D 依赖关系
2.下面说法错误的是( B)。
A 共同重用是为了提高包的独立性
B 子类的稳定性比父类的稳定性好
C 共同封闭是为了提高包的聚合性
D 包不应该存在循环依赖
四、思考题
1. 谈谈包在软件结构建模中的作用。
(略)。
05-类图-对象图-包图
类的泛化
泛化(Generalization)定义了一般元素和特殊元素 之间的分类关系。在UML中,泛化表示为一头为 空心三角形的连线。 A generalization is a taxonomic relationship between a more general element and a more specific element. The more specific element is fully consistent with the more general element and contains additional information.
聚集和组合(cont)
UML中聚集和组合的表示:
Car
Company
Wheel
Department
类图的抽象层次
在软件开发的不同阶段使用的类图具有不同的抽 象层次。一般地,类图可分为三个层次,即概念 层,说明层和实现层。 类的概念层,说明层和实现层的划分最先是由 Steve Cook和John Daniels引入的。
边界类
边界类处理系统环境与系统内部之间的通 信,为用户或另一个系统提供了接口。 边界类组成了系统中依赖于环境的部分, 边界类用于为系统的接口建模,代表了系 统和系统外的一些实体之间的接口。
边界类
实体类
实体类是模拟必须被存储的信息和关联行为的 类。 实体对象是实体类的实例,被用来保存或更新 关于某个现象的信息,通常是持久性的。 实体类通常是独立于他们的环境,对于系统环 境如何与系统通信是不敏感的。
实体类
控制类
控制类是用来为特定于一个或几个用例的控 制行为建模的类。 控制对象是控制类的实例,它经常控制其他 的对象,所以控制对象的行为是协调类型的, 控制类协调实现用例的规定行为所需要的事 件。 控制类封装了特定于用例的行为,通常依赖 于应用程序的类。
第5章 包图
的WindowsGUI,一个是实现B/S的WebGUI。
包的构造型
• • •
《system》和《subsystem》构造型:《system》构造型 的包表示正在建模的整个系统,而《subsystem》构造
型的包则表示正在建模的系统中某个独立的部分
《facade》构造型:只是某个其它包的视图,它主要用 来为其它一些复杂的包提供简略视图 《stub》构造型:是一个代理包,它服务于某个其他包 的公共内容,这通常应用于分布式系统的建模中 《framework》构造型:用来表示一个框架的,框架是 一个领域内的应用系统提供可扩充模板的体系结构模式
知识图谱
Agenda
• • • • •
什么是包 如何阅读包图
如何绘制包图
包图应用说明 本章小结
Agenda
• • • • •
什么是包 如何阅读包图
如何绘制包图
包图应用说明 本章小结
什么是包
•
在面向对象软件开发的视角中,类显然是构建整个系统
•
的基本构造块。但是对于庞大的应用系统而言,其包含 的类将是成百上千,再加上其间“阡陌交纵”的关联关 系、多重性等,必然是大大超出了人们可以处理的复杂 度。这也就是引入了“包”这种分组事物构造块。
5 .2
包的表示
UML中,用文件夹符号来表示一个包。包由一个矩形表示, 它包含2栏。下面是最常见的几种包的表示法,如图所示
包名放在第二栏 包名放在第一栏
PageName PageName ClassName-1 ClassName-2 …..
PageName 类名
包的表示法
Rose常用表示法
第二栏列出 包含的类名
包图的基本概念
第05章 类图、对象、包图
Page 2
(类目 分类器) 类目、 Classifiers (类目、分类器)
A classifier is a mechanism that describes structural and behavioral features. Classifiers include classes data types, signals, components, nodes, use cases, and subsystems.
Page 10
属性的类型
type :Examples of built-in attribute data types include Double, Int (short for Integer), and String . An attribute type can also be a user-defined type or the name of a class.
Page 7
属性 attribute
The full form of a UML attribute declaration is as follows:
[visibility] name [: type] [multiplicity] [= default-value] [{property-string}] visibility Name type multiplicity default-value property-string + (public), # (protected), - (private) e.g. CustomerName, DiscountRate e.g. Point, String, Date, etc. e.g. [0..1], [2..*] e.g. =(0,0), = null changeable (default), addOnly, frozen
第五章 包图
主讲:张世铃
内容提要
1 2 3 4
为什么要使用包? 什么是包? UML中如何表示包? 如何实现包?
7.1 包的基本概念 1. 包的定义
– 包(Package): 是UML用来组织模型元素的模型元 素。 – 包是一种分组事物 – 一个UML建模元素的容器 – 在UML中视为一个文件夹
包的基本概念
《use》关系:是一种默认的依赖关系 ,说明客户包 (发出者)中的元素以某种方式使用提供者包(箭头指 向的包)的公共元素,也就是说客户包依赖于提供者包 《import》关系:最普遍的包依赖类型,说明提供者包 的命名空间将被添加到客户包的命名空间中,客户包中 的元素也能够访问提供者包的所有公共元素 《access》关系:只想使用提供者包中的元素,而不想 将其命名空间合并则应使用该关系 《trace》关系:想表示一个包到另一个包的历史发 展,则需要使用《trace》关系来表示
说明
• 一个结构良好的包应满足以下要求:
– 包是强内聚的,它围绕一组相关元素来建立, 具有明确的边界。 – 包是松耦合的,只需显示出其他包确实需要用 到的那些元素即可。 – 包的嵌套层次不要太深。 – 包图的内容要均衡,系统中的各个包要彼此相 称,既不要太大(太大时可以进行分解),也 不要过小(太小时,可将一些相关元素组合成 组)。
7.3 设计包的原则
• 在设计包时,应遵循以下原则:
– 重用等价原则(Reuse Equivalency Principle, REP) – 共同闭包原则(Common Closure Principle, CCP) – 共同重用原则(Common Reuse Principle, CRP) – 非循环依赖原则(Acyclic Dependencies Principle,
第五章 包图
5.2 包的表示 .
4.包的可见性 . 公有的( ① 公有的(public) “+” ) 受保护的( ② 受保护的(protected) “#” ) 私有的( ③ 私有的(private)“-” )
5.2 包的表Leabharlann .4.包的可见性 . 包内元素的可见性控制了包外部元素访问包内 部元素的权限。 部元素的权限。 可见性 公有的 Public 受保护的 Protected 私有的 private 含义 此元素可以被任何引用该 包的包中的元素访问。 包的包中的元素访问。 此元素可被继承该包的包 中的元素访问。 中的元素访问。 此元素只能被同一个包中 的元素访问。 的元素访问。 前缀符号 + # -
若一个类的行为或结构的改变要求另一个类做相应的 改变; 改变; 删除了一个类后,另一个类成多余的; 删除了一个类后,另一个类成多余的; 两个类之间有大量的消息发送。 两个类之间有大量的消息发送。
设计包的原则
③
共同重用原则
——把不会一起使用的类不要放在同一个包中。 把不会一起使用的类不要放在同一个包中。 把不会一起使用的类不要放在同一个包中
5.1 包图的概念 .
3.包中的元素 . 包中的元素: 接口、组件、节点、协作、 包中的元素:类、接口、组件、节点、协作、用 以及其他包 其他包。 例、图以及其他包。 一个模型元素不能被一个以上的包所拥有。 一个模型元素不能被一个以上的包所拥有。 如果包被撤销,其中的元素也要被撤销。 如果包被撤销,其中的元素也要被撤销。
④
非循环依赖原则
——包之间的依赖关系不要形成循环。 包之间的依赖关系不要形成循环。 包之间的依赖关系不要形成循环
设计包的原则
A B
合并
分解
静态视图—建立类图_对象图和包图
常是UML用例图或类图。包是一个 UML结构,它能够把诸如用例或类之 类的模型元素组织成组
包图可以应用在任何一种UML图上
3.5.1 包图的作用
1. 描述需求的高阶概述(用例图)
2. 描述设计的高阶概述(类图) 3. 在逻辑上把一个复杂的图模块化
4. 组织源代码(命名空间)
3.5.2 类包图
Enrollment
Select course
概念层
说明层
实现层
1.2 建立类图的步骤
1. 研究分析问题领域确定系统需求 2. 确定类,明确类的含义和职责,确定 属性和操作 3. 确定类之间的关系
1.3 类的识别方法
类的识别需要大量的技巧,下面介绍一
1.
2.
3.
4.
些类的识别方法: 名词识别法 根据用例描述确定类 CRC分析法 根据边界类、控制类、实体类的划分来 帮助分析系统中的类
1.3.4 边界类、控制类和实体类
报表以及通信协议类都属于此,他们直 接与外界打交道 控制类是控制其它类工作的类,主要用 于调控和协调各个类之间的关系,比如 定时器 实体类保存要放进持久存储体的信息, 包括数据库,文件等
边界类位于系统与外界的交界处,窗口、
1.4 使用类图的一些原则
1. 简化的原则 在项目的初始阶段不要使用所有的符号, 只要能够有效表达就可以了 2. 分层理解的原则 根据项目开发的不同阶段,使用不同层 次的类图来进行表达,便于理解,不要一开 始就陷入到实现的细节当中 3. 关注关键点的原则 不要为每个事物都画一个模型,只把精 力放在关键领域
3.7.1 包建模技术的步骤
分析系统模型元素,把概念或语义上相
近的模型元素归纳到一个包中 对于每一个包,标识模型元素的可见性 确定包与包之间的依赖关系,特别是输 入依赖 确定包与包之间的泛化关系,确定包元 素的多态性与重载 绘制包图 进一步完善包图
UML第5章 包图
5.6.3 消除包的循环依赖
•应该尽量避免包模型中的循环依赖。 •如果包A以某种方式依赖包B,并且包B以某种方式依赖包A, 就应该合并这两个包,这是消除循环依赖非常有效的方法。 但是经常起作用的、更好的方法是,从A,B两个包中提起公 共元素,把它们封装为第三个包C。 •消除循环包的过程是一个多次迭代的过程。 •示例显示在后面图5-18中。
一种是在第二栏中列出包的所有元素名;另一种是在第二栏中 画出包中所有元素的图形和关系(参见图5-6)。
图5-6 元素的2种表示方法
• 2.包中的元素是用例
图5-7 包中的元素是用例
图5-7表示,包ATM中包含两个用例, 它们是:取款用例和超额取款用例。
3.包中元素是包 包中元素是包时,就是包嵌套。图5-8所示,就是包嵌套的 例子。外部包System:Web里面嵌入了一个包UI,UI包中有一 个类Page。
UI
System:Web:UI
(a)简单名
(b)含路径名(全名)
图5-5 包称的2种书写格式
5.2.2 包中的元素
一个包中包含的元素可能是系统、子系统、子包、 用例、构件、接口和类。下面介绍包中元素的表示方 法和元素的可见性。
• 1.包中元素是类和接口 • 当包中的元素是类和接口时,可以有两种表示类和接口的方法:
称的书写格式有两种,即简单名和全名。 • 1.包名称的书写位置 • 包名称可以有两种书写位置:一种方式是将包名写在第一栏中,另一种方式是将包名
写在第二栏中。 • (1)包名写在第一栏 • 如图5-3所示,包名Server写在第一栏。在第二栏列出了该包包含的类。
图5-3 包名写在第一栏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模型的组织结构
对系统模型的内部组织结构通常采用先分层再细分成包 的方式。 系统分层常用一种方式是将系统分为三层结构,即用户 界面层、业务逻辑层和数据访问层。
用户界面层
业务逻辑层
数据访问层
•
用户界面层代表与用户进行交互的界面,既可以是 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所示。
•
组成包图的元素有:包、子系统、依赖关系