More Related Content More from chuan liang (11) 面向对象的分析设计之UML基础1. 面向对象的分析设计之
UML基础
出家如初,成佛有余
http://www.yeeach.com
2009年1月
3. 目 录
UML概述
UML静态建模
UML动态建模
3
8. UML概述
UML(Unified Modeling Language)是软件界第一个统一
的建模语言,该方法结合了Booch, OMT, 和OOSE方法的优
点,统一了符号体系,并从其它的方法和工程实践中吸收
了许多经过实际检验的概念和技术。
UML是一种标准的表示,已成为国际软件界广泛承认的标准
。是一种基于面向对象的可视化的通用(General)建模语
言。为不同领域的用户提供了统一的交流标准 — UML图
UML应用领域很广泛,可用于软件开发建模的各个阶段,
商业建模(Business Modeling), 也可用于其它类型的
系统。
8
9. UML历史
1994年10月Jim Rumbaugh和Grady Booch共同合作把他们
的OMT和Booch方法统一起来,到1995年成为“统一方法”
(Unified Method)0.8版本。随后,Ivar Jacobson加入
,并采用他的用例(User case)思想,到1996年,成为UML
(Unified Modeling Language)0.9版本。
1997年1月,UML版本1.0被提交给OMG(Object Management
Group)组织,作为软件建模语言标准的候选。其后的半年
多时间里,一些重要的软件开发商和系统集成商都成为
“UML伙伴”,如IBM,Mircrosoft,HP等.1997年11月7日被
正式采纳作为业界标准。
9
10. UML历史
<documents>
<documents>
2000年 UML 2.0
UML 1 4
1.4
(计划的较小修订)
<documents>
1999
UML 1.3
2001年
计划的重要修订
<documents>
1998 UML 1.2
文字上的修改
1997年9月最后 <documents>
没有显著的技
提交给OMG UML 1.1
术变化
1997年1月最 <documents>
初提交给 OMG UML1.0
精华相关
<documents>
1996 UML 0.9
<documents>
文档版类
Unified Method
1995
0.8
10
11. UML的特点
统一标准
UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的
正式标准,提供了标准的面向对象的模型元素的定义和表示。
面向对象
UML还吸取了面向对象技术领域中其它流派的精华。删除了大量易
引起混乱的、多余的和极少使用的符号,也添加了一些新符号。
可视化、表示能力强
系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于复
杂软件系统的建模。
易掌握、易用
UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握
11
使用。
12. UML深入理解
UML是一种语言
遵循特定的规则
允许创建各种模型
并不告诉设计者需要创建哪些模型
并不提供开发过程
UML是可视化语言
UML是图形化语言
图形便于交流(一幅图抵上千文字)
12
16. UML组成
构造块:
也就是建模元素,是模型的主体
UML规则:
也就是支配基本构造块如何
放在一起的规则
公共机制:
运用于整个UML模型中的公共机制、
扩展机制
16
17. UML组成-事物构造块
事物构造块是对模型中最具有代表性的成分的抽象
结构事物:UML中的名词,它是模型的静态部分,描述概念或物理
元素。包括:类(class)、对象(object)、接口(interface
)主动类(active class)、用例(use case)、协作(
collaboration)、组件(component)、节点(node)
行为事物:UML中的动词,它是模型中的动态部分,是一种跨越时
间、空间的行为。主要包括:交互(intercation)、状态机(
state machine)
分组事物:UML中的容器,用来组织模型,使模型更加的结构化。
主要包括:包(Package)
注释事务:UML中的解释部分,和代码中的注释语句一样,是用来
描述模型的。
17
19. UML模型元素关系
模型元素与模型元素之间的连接关系也是模型元素,常
见的关系有:
关联(association) :连接(connect)模型元素及链接
(link)实例。
依赖(dependency) :表示一个元素以某种方式依赖于另一种元素
泛化(generalization) :表示一般与特殊的关系,即“一般”
元素是“特殊”关系的泛化。
实现关系(realization):通过实现关系将一种模型元素(如类
)与另一种模型元素(如接口)连接起来,其中接口只是行为的
说明而不是结构或者实现
19
29. UML的“4+1”视图
•Logical View •Implementation View
•Analysts/Designers
•Programmers
g
•End-user
End user
•Structure
•Functionality •Software management
•Use-Case View
•Process View •Deployment View
•System Integrators •System Engineering
•Performance •System topology
•Scalability •Delivery, installation
•Throughput •communication
30. UML的4+1视图
视图名称 视图内容 静态表现 动态表现 观察角度
1 用户模型视图 系统行为,动 用例图 交互图、状 用户、
力 态图、活动
(用例视图) 分析员、
图
测试员
2 结构模型视图 问题及解决方 类图、对象 交互图、状 类、
案 图 态图、活动
(逻辑视图) 接口、
图
协作
3 行为模型视图 性能、可伸缩 类图、对象 交互图、状 线程、
性,吞吐量 图 态图、活动
(进程视图) 进程
图
4 实现模型视图 组件、文件 组件图 交互图、状 配置、
态图、活动
(实现视图) 发布
图
5 环境模型视图 部件的发布、 配置图 交互图、状 拓扑结构
交付、安装 态图、活动
(实施视图) (实施图) 的节点
图
31. UML的图(Diagrams)
UML语言定义了五种类型,9种不同的图,把它们有机的结
合起来就可以描述系统的所有视图。
用例图(Use case diagram) :从用户角度描述系统功能,并指出
各功能的操作者。
静态图(Static diagram):表示系统的静态结构。包括类图、对
象图、包图。
行为图(Behavior diagram):描述系统的动态模型和组成对象间
的交互关系。包括状态图、活动图。
交互图(Interactive diagram): 描述对象间的交互关系。包括
顺序图、合作图。
实现图( Implementation diagram ): 用于描述系统的物理实
现。包括组件图、部署图。
31
32. UML的9种图
图名称 图定义 图性质
1 类图 一组类、接口、协作及它们的关系 静态图
2 对象图 一组对象及它们的关系 静态图
3 用例图 一组用例、参与者及它们的关系 静态图
4 顺序图 一个交互,强调消息的时间顺序 动态图
5 协作图 一个交互,强调消息发送和接受的对象的结构组织 动态图
状态图 一个状态机,强调对象按事件排序的行为 动态图
6
活动图 一个状态机,强调从活动到活动的流动 动态图
7
组件图 一组组件及关系 静态图
8
配置图 一组接点及它们的关系 静态图
9
(实施图)
32
34. 目 录
UML概述
UML静态建模
UML动态建模
34
39. 类图-属性例子
举例:
+ size: Area = (100,100)
# visibility: Boolean = false
-origin : Point;
Colors : color[3]
Points : Point[2..* ordered]
Name: String[0..2]
39
45. 类图-关联(Association)关系
关联:对于两个相对独立的对象,当一个对象的实例与另
一个对象的一些特定实例存在固定的对应关系时,这两个
对象之间为关联关系。
public class Company{
private Employee employee;
public Employee getEmployee(){
return employee;
}
public void setEmployee(Employee employee){
this.employee=employee;
}
public void run(){
employee.startWorking();
}
45
49. 关联 vs. 聚合
关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车
就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个
代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关
系,因为主板是电脑的组成部分。
对于具有组成关系(聚合关系的一种)的两个对象,整体对象会制约
它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周
期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失
。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张
三事先把一些电脑的组件(比如硬盘和内存)拆了下来。
49
50. 组成 VS. 聚合
聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分
析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类
之间就形成了聚合关系。
组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体
具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部
分对象与整体对象之间具有共生死的关系。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是
“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组
合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的
生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对
象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对
象。
50
51. IS-A VS. HAS-A
关联关系: ... has a ...
依赖关系: ... has a(uses a) ...
聚合关系: ... has a(owns a) ...
组合关系: ... has a(is a part of) ...
继承关系: ... is a ...
51
53. 对象图(Object Diagram)
对象图是显示了一组对象和他们之间的关系。使用对象图来说明数据
结构,类图中的类或组件等的实例的静态快照。对象图和类图一样反
映系统的静态过程,但它是从实际的或原型化的情景来表达的。
对象图显示某时刻对象和对象之间的关系。一个对象图可看成一个类
图的特殊用例,实例和类可在其中显示。对象也和合作图相联系,合
作图显示处于语境中的对象原型(类元角色)。
对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同
点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图
是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统
某一时间段存在。
53
54. 对象图-表示方法
对象名 : 类 类
:
对象(记名对象) 匿名对象
54
60. 组件图(Component diagram)
组件图系统中遵从并实现一组接口的物理的、可替换的软
件模块。组件图的主要目的是显示系统组件间的结构关系
在 UML 2 中,组件被认为是独立的,在一个系统或子系
统中的封装单位,提供一个或多个接口。虽然 UML 2 规
范没有严格地声明它,但是组件是呈现事物的更大的设计
单元,这些事物一般将使用可更换的组件来实现。
以组件为基础的开发(CBD)的主要思想是,你能容易地
在你的设计中重用及/或替换一个不同的组件实现,因为
一个组件封装了行为,实现了特定接口
60
70. 目 录
UML基础
UML静态建模
UML动态建模
70
71. UML动态建模
交互图( Interaction Diagrams )
顺序图( Sequence Diagrams )
协作图( Collaboration Diagrams )
状态图( State Diagrams )
活动图( Activity Diagrams )
71
80. 顺序图-控制焦点例子
: V ie w c : C o n tr o ll e r : C a tc h e
控制焦点的嵌套
1 . c l i c k A t( p )
1 .1 . I= f n d A t( p )
fi (
控制焦点
1 .2 . p u tR e c e n tP ic k ( I)
对象生存线
80
93. 顺序图 VS. 协作图
协作图与顺序图。协作图和顺序图都表示出了对象间的交
互作用,但是它们侧重点不同。
顺序图清楚地表示了交互作用中的时间顺序,但没有明确
表示对象间的关系。
协作图清楚地表示了对象间的关系,但时间顺序必须从顺
序号获得。
顺序图常常用于表示方案,而协作图用于过程的详细设计
。
93
94. 活动图(Activity Diagrams)
活动图是一种特殊形式的状态机,用于对计算流程和工作
流程建模。活动图中的状态表示计算过程中所处的各种状
态,而不是普通对象的状态。通常,活动图假定在整个计
算处理的过程中没有外部事件引起的中断,否则,普通的
状态机更适于描述这种情况。
活动图包含活动状态。活动状态表示过程中命令的执行或
工作流程中活动的进行。与等待某一个事件发生的一般等
待状态不同,活动状态等待计算处理工作的完成。当活动
完成后,执行流程转入到活动图中的下一个活动状态。当
一个活动的前导活动完成时,活动图中的完成转换被激发
94
98. 活动图-对象流(Object Flow)
对象流(Object Flow)用来描述活动和活动所创建的(输出)或所
使用(输入)的对象之间的关系。
对象流状态表示活动中输入或输出的对象。对输出值而言,虚线箭头
从活动指向对象流状态。对输入值而言,虚线箭头从对象流状态指向
活动。如果活动有多个输出值或后继控制流,那么箭头背向分叉符号
98
100. 活动图-引脚(Pin)
引脚(Pin)
是一个对象节点,代表活动连接输入、输出值的连接点
用来标明每个活动节点所需输入的数据或者所产生的数据(建模
业务流时则可表示产生或者消耗的资源)
100
116. 状态图 vs. 交互图及活动图
状态机图与交互图的区别:
交互图不显示对象所有可能的动态行为,只显示特定交互(一个
具体的用例)中对象的行为。
状态机图可以显示对象所有的动态行为。
状态图机与活动图的区别:
状态机图只建模一个对象的行为,活动图可以建模多个对象的活
动
活动图中也允许建模特定活动中对象的某个状态
116