uml建模第五章 包图
UML面向对象分析、建模与设计课件第五章 类图

类——操作
操作是一个可以由类的对象请求以影响其行为的服务的实现,也即 是对一个对象所做的事情的抽象,并且由这个类的所有对象共享。
操作是类的行为特征或动态特征。 操作的语法格式为:
可见性OPT 操作名 ⌊(参数列表)⌋OPT ⌊:返回类型⌋OPT ⌊{特性}⌋OPT
操作名:操作的标识符。在描述操作时,操作名是必须的,其他部 分可选。
Student
+monitor 1
1..*
自关联
类图中的关系——关联关系
关联名称:放在关联路径的旁边,但远离关联端。 角色:放在靠近关联端的部分,表示该关联端连接的类在这一关联
关系中担任的角色。角色名上也可使用可见性修饰符号。 多重性:放在靠近关联端的部分,表示在关联关系中源端的一个对
象可以与目标类的多少个对象之间有关联。 导航性:一个布尔值,用来说明运行时刻是否可能穿越一个关联。 限定符:是二元关联上的属性组成的列表的插槽,其中的属性值用
/WorksForCompany
Department * +department 1 WorksForDepartment
* Person
类图中的关系——泛化关系
泛化关系定义为一个较普通的元素与一个较特殊的元素之间的类元 关系。其中描述一般的元素称为父,描述特殊的元素称为子。
通过泛化对应的继承机制使子类共享父类的属性和操作,小了模型 的规模,同时也防止了模型的更新所导致的定义不一致的意外。
法了,此时称之为N元关联。
类图中的关系——关联关系
class Logical View
ClassA
AssociationName
+rolename 0..*
包图

包图包图是在UML中用类似于文件夹的符号表示的模型元素的组合。
系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中。
使用包图可以相关元素归入一个系统。
一个包中可包含附属包、图表或单个元素。
一个"包图"可以是任何一种的UML图组成,通常是UML用例图或UML 类图。
包是一个UML结构,它使得你能够把诸如用例或类之类模型元件组织为组。
包被描述成文件夹,可以应用在任何一种UML图上。
虽然包图并非是正式的UML图,但实际上他们是很有用处的,创建一个包图是为了∶描述你的需求高阶概述。
描述你的设计的高阶概述。
在逻辑上把一个复杂的图模块化。
组织Java源代码。
指南∶类包图创建类包图,以在逻辑上组织你的设计创建UML组件图,以在物理上组织你的设计把子包放置在母包的下面垂直地分层类包图用例包图创建用例包图,以组织你的需求在用例包图上包含角色水平地排列用例包图包包的命名要简单、具有描述性应用包是为了简化图包应该连贯在包上用版型注明架构层避免包间的循环依赖包依赖应该反映内部关系一、类包图1.创建类包图,以在逻辑上组织你的设计图1描述了一个组织成包的UML类图。
除了以下介绍的包原则之外,应用下列的规则来把UML类图组织到包图里:把一个框架的所有类放置在相同的包中。
一般把相同继承层次的类放在相同的包中。
彼此间有聚合或组合关系的类通常放在相同的包中。
彼此合作频繁的类,信息能够通过UML顺序图和UML合作图反映出来的类,通常放在相同的包中。
图1.一个类包图。
2.创建UML组件图,以在物理上组织你的设计。
如果你的组件比较接近技术,例如那些通过Enterprise Java Beans ( EJB)或Visual Basic的组件,你应该优先选择UML组件图来描述物理设计,而不是包图。
图1的版本源自于组件图章节中。
就像你看到的,这个图最适用于物理设计。
永远记住遵循敏捷建模(AM) ( Ambler 2002)的实践--应用合适的Artifact,为工作挑选最好的模型。
包图

一个大型系统中往往包含了数量庞大的模型元素,如何组织管理这些元素是一个十分重要的问题。
包是一种常规用途的有效的组合机制。
包类似于文件系统中的文件夹或者是目录结构,它是一个容器,用来对模型元素进行分组,并且为这些元素提供一个命名空间。
UML中的一个包直接对应于Java中的一个包。
在Java中,一个包可能含有其他包、类或者同时含有这两者。
进行建模时,通常使用逻辑性的包,用于对模型进行组织。
而包图是由包和包之间的联系组成的,它是维护和控制系统总体结构的重要建模工具。
本章将详细介绍包图的各种概念、表示方法和实例应用。
1.包图的概念1.1包图和包当对大型系统进行建模时,经常需要处理大量的类、借口、构件、节点和图,这时就很有必要将这些元素进行分组,即把那些语义相近并倾向于一起变化的元素组织起来加入同一包中,这样便于理解和处理整个模型。
同时也便于控制包中元素的可见性。
包图是描述包及其关系的图。
与所有UML的其它图一样,包图可以包括注释、约束。
通过各个包与包之间关系的描述,展现出系统的模块与模块之间的关系。
图1是一个包图模型。
包是包图中最重要的概念,它包含了一组模型的元素和图,如图1中的Package A和Package B就是两个包。
Package BPackage A在面向对象软件开发的过程中,类显然是构建整个系统的基本元素。
但是对于大型的软件系统而言,其包含的类将是成百上千,再加上类间的关联关系、多重性等,必然是大大超出了人们对系统的理解和处理能力。
为了便于管理这些类,我们引入了“包”这种分组元素。
在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它子包或图。
一个元素只能属于一个包。
包的作用是:1)对语义上相关的元素进行分组。
如,把功能相关的用例放在一个包中。
2)提供配置管理单元。
如,以包为单位,对软件进行安装和配置。
3)在设计时,提供并行工作的单元。
如,在设计阶段,多个设计小组,可以同时对几个相互独立包中的类进行详细设计。
静态视图—类图对象图和包图

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
uml建模第五章 包图

5 .1 包图的概念
5.2 包的表示 5.3 包图中的关系 5.4 阅读包图
5.5 创建包图 5.6 包图建模
精选2021版课件
1
5.1 包图的概念
1.包 包就像一个“容器”,可用于组织模型中
的相关元素,以便容易理解。 将相关的各种类型的模型元素组织成组的
通用机制。 包的实例没有任何语义。 仅在建模时有意义,而不必转换到可执行
精选2021版课件
23
设计包的原则
设计包时,应遵循以下原则:
① 重用等价原则 ② 共同闭包原则 ③ 共同重用原则 ④ 非循环依赖原则
精选2021版课件
24
设计包的原则
① 重用等价原则
② ——把类放入包中时,应考虑把包作为可重 用的单元。
② 共同闭包原则
——把那些需要同时改变的类放在同一个包中。
若一个类的行为或结构的改变要求另一个类做相应的 改变;
5.4 创建包图
绘制包图的基本步骤如下:
① 分析系统的模型元素(通常是对象类),把概念 上或语义上相近的模型元素归入同一个包。
② 对于每一个包,标出其模型元素的可视性,确定 包内每个元素的访问属性,是公共、保护或私有。
③ 确定包与包之间的依赖联系,特别是“引入”关 系。
④ 确定包与包之间的泛化关系。 ⑤ 绘制包图。
1.包的符号表示 嵌套包及其表示
✓一个包可以包含其他 的包; ✓嵌套包可以访问自身 的元素; ✓应尽量避免使用嵌套 包,一般2-3层最好。
Library Users Librarian Borrower
嵌套包
精选2021版课件
7
5.2 包的表示
1.包的符号表示 嵌套包及其表示
第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 包图
包图用来展现包和包之间的关系。
书店图书管理的包图:
第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种包的构造型。 最后说明如何寻找包、确定包之间的依赖 关系,从而绘制出一个表明软件体系结构 的包图,并简要介绍了用包图表示系统体 系结构的建模方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
呈现
举 例
业务
数据
设计包的原则
在考虑如何对类进行分组并放入不同的包时, 主要依据类之间的依赖关系进行分组。包中的类 应该是功能相关的,在建包时,应把概念上和语 义上相近的模型元素纳入一个包。依赖关系其实 是耦合的一种体现,如果两个包中的类之间存在 依赖关系,那么这两个包之间就有了依赖关系, 也就存在耦合关系。好的设计要求体现高内聚、 低耦合的特性。
包名放在第二栏 包名放在第一栏
PackageName
PackageName ClassName-1 ClassName-2 …..
PackageName 类名
Rose常用表示法
第二栏列出 包含的类名
在第二栏画出所 包含的类图形表示
5.2 包的表示
1.包的符号表示 嵌套包及其表示 一个包可以包含其他 的包; 嵌套包可以访问自身 的元素; 应尽量避免使用嵌套 包,一般2-3层最好。
5.1 包图的概念
3.包中的元素 包中的元素:类、接口、组件、节点、协作、用 例、图以及其他包。 一个模型元素不能被一个以上的包所拥有。 如果包被撤销,其中的元素也要被撤销。
5.2 包的表示
1.包的符号表示
UML中,用文件夹符号来表示一个包。包由一个矩形表 示,它包含2栏。 最常见的几种包的表示法,如图5-2所示:
设计包的原则
③
共同重用原则
——把不会一起使用的类不要放在同一个包中。
④
非循环依赖原则
——包之间的依赖关系不要形成循环。
设计包的原则
举例
根据功能模块组织包:
包 SocketClient DataAccess UI 分析与功能 .NET支持包 负责连接Internet服务 .Sockets 器,获取实时股票信息 负责从数据库读写实时 System.Data.Sqlclie nt 股票信息
负责响应用户输入和选 System.Windows.Fo rms 择,并展现信息 GraphicGenerate 负责根据数据库的信息 System.Drawing 生成相应的图表
5.1 包图的概念
2.包图 描述包及其关系的图。图5-1是一个典型的包图。
包图(Package Diagram) 是维护和控制系统总 体结构的重要建模工具。
5.1 包图的概念
3.包的作用 对语义上相关的元素进行分组。 提供配置管理单元。 提供并行工作的单元。 提供封装的命名空间,同一个包中,其元素的名 称必须唯一。
5.2 包的表示
4.包的可见性 包内元素的可见性控制了包外部元素访问包内 部元素的权限。 可见性 公有的 Public 受保护的 Protected 私有的 private 含义 此元素可以被任何引用该 包的包中的元素访问。 此元素可被继承该包的包 中的元素访问。 此元素只能被同一个包中 的元素访问。 前缀符号 + # -
第5章 包图
5 .1 包图的概念
5.2 包的表示 5.3 包图中的关系 5.4 阅读包图 5.5 创建包图 5.6 包图建模
5.1 包图的概念
1.包 包就像一个“容器”,可用于组织模型中 的相关元素,以便容易理解。 将相关的各种类型的模型元素组织成组的 通用机制。 包的实例没有任何语义。 仅在建模时有意义,而不必转换到可执行 的系统中。
GUI
WindowsGUI
ButtonsGUI
5.4 阅读包图
阅读包图的方法如下: 了解每个包的语义及其包含元素语义。 ② 理解包间的关系。 ③ 找到依赖复杂的包,从最复杂的包开始阅读, 然后依次是简单的包。
①
5.4 阅读包图
举例
例子描述 分析系统工作流程: 1)通过Internet连接到股票信息服务器,获取 实时的股票信息,并存入数据库中。 2)根据用户的输入和选择,从数据库中获取相 应的信息,展现在屏幕中。 3)在数据的展现过程中,将需要绘制大量的图 表。
提供者
客户
5.3 包图中的关系
1.依赖关系 ④ 跟踪关系《trace》:通常表示一个元素历史地 发展成为另一个进化版本。 分析模型是设计模型的元模型,元模型的元 素进化为设计模型,这时指的是模型之间的关 系,不是元素之间的关系。
分析模型
元模型
设计模型
5.3 包图中的关系
2.泛化关系 包间的泛化关系与类之间的泛化关系类似。
Library Users Librarian Borrower
嵌套包
5.2 包的表示
1.包的符号表示 嵌套包及其表示
外部表示法
5.2 包的表示
2.包的名称 每个包必须有一个与其他包相区别的名称。 :Web:UI
System.Web.UI
5.2 包的表示
3.包的元素 在一个包中可以拥有各种其他元素,这是一种组 成关系。 每一个包就意味着一个独立的命名空间,两个不 同的包,可以具有相同的元素名。 在包中表示拥有的元素时,有两种方法:一种是 在第二栏中列出所属元素名,一种是在第二栏中 画出所属元素的图形表示。
5.2 包的表示
4.包的可见性 ① 公有的(public) “+” ② 受保护的(protected) “#” ③ 私有的(private)“-”
设计包的原则
设计包时,应遵循以下原则:
①
②
③
④
重用等价原则 共同闭包原则 共同重用原则 非循环依赖原则
设计包的原则
①
重用等价原则
——把类放入包中时,应考虑把包作为可重用的 单元。
②
共同闭包原则
——把那些需要同时改变的类放在同一个包中。
若一个类的行为或结构的改变要求另一个类做相应的 改变; 删除了一个类后,另一个类成多余的; 两个类之间有大量的消息发送。
5.3 包图中的关系
包之间可以有两种关系:
①
②
引用和访问依赖:在一个包中引入另一个包输 出的元素 泛化:说明包的家族
5.3 包图中的关系
1.依赖关系 ① 使用关系《use》:说明客户包中的元素以某种方式使用 提供者包的公共元素。 ② 包含关系《import》:提供者包命名空间的公共元素被 添加为客户包命名空间上的公共元素 ③ 访问关系《access》:提供者包命名空间的公共元素被 添加为客户包命名空间上的私有元素。