UML期末复习
- UML简介
- UML模型图的构成
- UML事物
- UML包含4种事物:
- 构件事物: UML模型的静态部分,描述概念或物理元素
- 行为事物:UML模型图的动态部分,描述跨越空间和时间的行为
- 分组事物: UML模型图的组织部分,描述事物的组织结构
- 注释事物: UML模型的解释部分,用来对模型中的元素进行说明,解释
- UML关系
- 依赖
- 关联
- 泛化
- 实现
- 用例图( Use Case Diagram )
- 什么是参与者?
- 什么是用例?
- 参与者与用例之间的关系:
- 用例与用例之间的关系:
- 参与者之间的关系:
- 类图(Class Diagram)
- 类
- 接口
- 抽象类
- 模版类
- 关联关系(直线加箭头)
- 聚合关系 (空菱形加直线)
- 组合关系 (实心菱形加直线)
- 泛化关系(在类图中可以理解为继承)
- 实现关系
- 依赖关系
- 用例图、类图例子: 演出售票系统
- 对象图( Object Diagram )
- 类图与对象图的不同之处
- 顺序图(Sequence Diagram)
- 生命线
- 顺序图例子
- 此图中存在的事物有:
- 协作图(Collaboration Diagram)
- 形如这样的:
- 例一:
- 例二:
- 消息流(由箭头和标签组成)
- 链接
- 协作图与顺序图的区别和联系
- 联系:
- 区别:
- 状态图(State Chart Diagram)
- 转移
- 状态图用于
- 形如这样:
- 例一:
- 例二:
- 活动图(Activity Diagram)
- 主要用于:
- 活动图事物:
- 形如这样:
- 构件图(Component Diagram)
- 部署图(Deployment Diagram)
- 常用 UML语法
- 各个UML图之间的关系
- 总览判断题
- 总览选择题
- 类图习题:
- 顺序图练习题
- 协作图练习题
- 状态图练习
UML简介
UML为面向对象设计提供统一的、标准的、可视化的建模语言,适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程
UML模型图的构成
事物(Things):UML模型中最基本的元素,是具有代表性的成分的抽象
关系(Relationships):关系把事物紧密联系在一起
图(Diagrams):图是事物和关系的可视化表示
UML事物
UML包含4种事物:
构件事物 行为事物 分组事物 注释事物
构件事物: UML模型的静态部分,描述概念或物理元素
它包括以下几种:
类:
具有相同属性相同操作 相同关系相同语义的对象的描述
接口:
描述元素的外部可见行为,即服务集合的定义说明
协作:
描述了一组事物间的相互作用的集合
用例:
代表一个系统或系统的一部分行为,是一组动作序列的集合
构件:
系统中物理存在,可替换的部件
节点:
运行时存在的物理元素
另外,参与者、信号应用、文档库、页表等都是上述基本事物的变体
行为事物:UML模型图的动态部分,描述跨越空间和时间的行为
交互:
实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接
状态机:
描述事物或交互在生命周期内响应事件所经历的状态序列
分组事物: UML模型图的组织部分,描述事物的组织结构
包:
把元素组织成组的机制
注释事物: UML模型的解释部分,用来对模型中的元素进行说明,解释
注解:
对元素进行约束或解释的简单符号
UML关系
依赖
依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义
关联
关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系
泛化
泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系
实现
实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约
用例图( Use Case Diagram )
用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元,并显示哪个参与者参与了哪个用例的执行
形如这样:
什么是参与者?
在系统外部与系统直接交互的人或事物
注意:一个实际用户可能对应多个参与者,不同用户也可以只对应一个参与者
什么是用例?
系统外部可见的一个系统功能单元
参与者与用例之间的关系:
关联(用直线表示)
用例与用例之间的关系:
包含、扩展(带箭头的虚线)、泛化(空心三角+直线)
包含关系:例如登陆时login需要进行密码验证,密码验证和login之间就是包含关系,login包含验证密码
扩展关系:例如登录login,登陆时密码错误会提示登录密码错误,提示登录密码错误就是login的扩展,需要满足条件时才触发
参与者之间的关系:
泛化(空心三角+直线)
例如:
经理参与用例管理人事和批准预算;安全主管参与用例批准安全证书;保安参与用例监视周边。安全主管可以担任经理和保安的角色,就能够参与经理和保安参与的用例。安全主管和保安和经理之间就是泛化关系
类图(Class Diagram)
属于静态建模
1.类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)
2.类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联
形如这样:
类
1.类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等
2.类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等
接口
一组操作的集合,只有操作的声明而没有实现
抽象类
通常以斜体表示(或直接标注abstract,或者一个小钥匙),不能被实例化的类,一般至少包含一个抽象操作
模版类
一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类
关联关系(直线加箭头)
描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关 联关系语义较弱
聚合关系 (空菱形加直线)
特殊关联关系,父类没了子类还可以有
组合关系 (实心菱形加直线)
语义更强的聚合,部分和整体具有相同的生命周期,父类没了子类也会跟着没了
泛化关系(在类图中可以理解为继承)
父子类之间,父子接口之间
表示:实线加空心箭头
实现关系
表示:虚线加空心三角
映射关系:
java代码:
public interface Shape{
public abstract void Draw();
}
public class Circle implements Shape{
public void Draw();
private Point ptCenter;
private int nRadius;
}
…
依赖关系
表示:虚线加箭头
用例图、类图例子: 演出售票系统
在用例驱动的开发过程中,通过分析各个用例及参与者得到类图。分析用例图的过程中需要根据面向对象的原则设计类和关系,根据用例的细节设计类的属性和操作
用例图:
类图:
对象图( Object Diagram )
对象图是类图的实例,几乎使用与类图完全相同的标识。
类图与对象图的不同之处
1.类具有3个栏,自上而下依次为名称、属性和操作
2.对象有两个栏,依次是名称属性
3.类的属性分栏定义了所有属性的特征,对象则只定义了当前值,以便用于测试用例
顺序图(Sequence Diagram)
又称时序图,序列图,属于动态建模
顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,展示对象之间的交互 ,重点在消息序列上
作用:是用来表示用例中的消息顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件
形如这样:
生命线
坐标轴纵向的虚线表示对象在序列中的执行情况(即发送和接收的消息,对象的活动)这条虚线称为对象的“生命线”
顺序图例子
此图是描述购票的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。
此图中存在的事物有:
对象(信息亭 Kjosk ,售票中心 Box Office, 信用卡服务 Credit Card Service ),生命线,消息符号
信息亭发Request (count, performance)消息给售票中心,表示调用售票中心类的Request (count, performance)操作,来查询演出的信息。
售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出可用的座位表。
协作图(Collaboration Diagram)
1.是一种交互图,描述对象间的协作关系,协作图跟顺序图相似,描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息
2.强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态情况。
3.协作图可以表示类操作的实现。
作用:是表示一个类操作的实现
形如这样的:
例一:
解释:
actor发送Print消息给Computer,Computer发送Print消息给PrintServer,如果打印机空闲,PrintServer发送Print消息给printer
例二:
解释:
参与者需要乘坐电梯,他从系统外部按下按钮,让电梯到达他想去的楼层。此时,电梯系统的操作被启动,电梯控制对象以循环的方式检查所有的电梯,从中选择一个工作队列长度最短的。然后,它创建一个作业命令,并将该命令放入对应电梯的工作队列,接着激活队列。电梯对象并发运行,从它的队列中选择一个作业并执行。电梯是一个活动对象,它与它的控制线程并发执行。
消息流(由箭头和标签组成)
标签对消息作说明,其中,顺序号指出消息的发生顺序,并且指明了消息的嵌套关系;冒号后面是消息的名字
下面是一个完整的消息标签:
前缀 守卫条件 序列表达式 返回值 := 消息名
链接
用直线来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间
协作图与顺序图的区别和联系
联系:
1.协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同
2.协作图和顺序图可以相互转化
区别:
1.顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系
2.协作图强调对象间的关系(强调空间),但时间顺序必须从顺序号获得。
状态图(State Chart Diagram)
1.状态图是一个类对象所可能经历的所有历程的模型图。状态图由对象的各个状态和连接这些状态的转换组成
2.说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件的响应
转移
1.转移是由一种状态到另一种状态的迁移。这种转移由被建模实体内部或外部事件触发
2.对一个类来说,转移通常是调用了一个可以引起状态发生重要变化的操作的结果
状态图用于
揭示Actor、类、子系统和组件的复杂特性,为实时系统建模
形如这样:
例一:
解释:
初始状态->Available状态
票被预订(lock):Available->Locked
预定后付款(buy):Locked->Sold
预定解除(unlock):Locked->Available
预定过期(time out):Locked->Available
直接购买(assigned to):Available->Sold
换其它票(exchang) ,该票重有效:Sold->Available
例二:
解释:
登陆要求提交个人社会保险号(SSN)和密码(PIN)经验证有效后登陆成功
初态(Initial state)
获取社会保险号状态(Getting SSN)
获取密码状态(Getting PIN)
验证状态(Validating)
拒绝状态(Rejecting)
终态 (Final state)
活动图(Activity Diagram)
1.活动图是状态图的一个变体,描述系统的动态行为
2.包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态
3.适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述
4.类似于传统意义上的流程图
主要用于:
1.业务建模时,用于详述业务用例,描述一项业务的执行过程
2.设计时,描述操作的流程
活动图事物:
形如这样:
构件图(Component Diagram)
又称组件图,为系统的构件建模型,即构造应用的软件单元,还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响
形如这样:
部署图(Deployment Diagram)
部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配
形如这样的:
常用 UML语法
各个UML图之间的关系
总览判断题
1、UML中一共有九种图:它们是用例图、类图、对象图、顺序图、协作图、状态图、活动图、构件图、部署图(正确)
2、用例图是从程序员角度来描述系统的功能:
(错误)
用例图是从用户(系统的参与者)的角度来描述系统的功能
3、类图是描述系统中类的静态结构,对象图是描述系统中类的动态结构
(错误)
对象图是类图的实例化,用于描述系统在特定时间点的对象实例及其之间的关系。
4、活动图和状态图用来描述系统的动态行为(正确)
5、协作图的一个用途是表示一个类操作的实现
(错误)
协作图主要用于表示对象之间的协作和消息传递,描述对象之间的通信和交互
总览选择题
1.请在下面选项目中选出两种可以互相转换的图
(a) 顺序图 (b)协作图 © 活动图 (d) 状态图
(a,b)
2.下面哪些图可用于BD阶段
(a)用例图 (b)构件图 ©类图 (d)顺序图
(a,c,d)
类图习题:
(1)选1
(2)选4
(3)选1
(4)选2
(5)选1、4
(6)选2、4
(7)选3
顺序图练习题
(1)选A
(2)选B
(3)选B
协作图练习题
1.选B
2.选B
3.选B
4.选B
1.选A
2.选A
状态图练习
1.选c(超时和到达是触发事件)
2.选a