UML为面向对象设计提供统一的、标准的、可视化的建模语言,适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程
用例图、类图、对象图、构件图、部署图
顺序图、协作图、状态图、活动图
事物(Things):UML模型中最基本的元素,是具有代表性的成分的抽象
关系(Relationships):关系把事物紧密联系在一起
图(Diagrams):图是事物和关系的可视化表示
构件事物 行为事物 分组事物 注释事物
它包括以下几种:
类:
具有相同属性相同操作 相同关系相同语义的对象的描述
接口:
描述元素的外部可见行为,即服务集合的定义说明
协作:
描述了一组事物间的相互作用的集合
用例:
代表一个系统或系统的一部分行为,是一组动作序列的集合
构件:
系统中物理存在,可替换的部件
节点:
运行时存在的物理元素
另外,参与者、信号应用、文档库、页表等都是上述基本事物的变体
交互:
实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接
状态机:
描述事物或交互在生命周期内响应事件所经历的状态序列
包:
把元素组织成组的机制
注解:
对元素进行约束或解释的简单符号
依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义
关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系
泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系
实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约
1.用例图是被称为参与者的外部用户所能观察到的系统功能的模型图
2.用例图列出系统中的用例和系统外的参与者,并显示哪个参与者参与了哪个用例的执行
(或称为发起了哪个用例)。
3.用例图多用于静态建模阶段(主要是业务建模和需求建模)。
形如这样:
在系统外部与系统直接交互的人或事物
注意:一个实际用户可能对应多个参与者,不同用户也可以只对应一个参与者
系统外部可见的一个系统功能单元
关联(用直线表示)
包含(带箭头的虚线)、扩展(带箭头的虚线)、泛化(空心三角+直线)
包含关系:例如登陆时login需要进行密码验证,密码验证和login之间就是包含关系,login包含验证密码
扩展关系:例如登录login,登陆时密码错误会提示登录密码错误,提示登录密码错误就是login的扩展,需要满足条件时才触发
泛化(空心三角+直线)
例如:
经理参与用例管理人事和批准预算;安全主管参与用例批准安全证书;保安参与用例监视周边。安全主管可以担任经理和保安的角色,就能够参与经理和保安参与的用例。安全主管和保安和经理之间就是泛化关系
属于静态建模
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;
}
…
表示:虚线加箭头
在用例驱动的开发过程中,通过分析各个用例及参与者得到类图。分析用例图的过程中需要根据面向对象的原则设计类和关系,根据用例的细节设计类的属性和操作
用例图:
类图:
对象图是类图的实例,几乎使用与类图完全相同的标识。
1.类具有3个栏,自上而下依次为名称、属性和操作
2.对象有两个栏,依次是名称属性
3.类的属性分栏定义了所有属性的特征,对象则只定义了当前值,以便用于测试用例
又称时序图,序列图,属于动态建模
1.顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件
2.顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。 顺序图属于动态建模。
3.顺序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺序
3.浏览顺序图的方法是:从上到下查看对象间交换的消息。
作用:是用来表示用例中的消息顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件
形如这样:
坐标轴纵向的虚线表示对象在序列中的执行情况(即发送和接收的消息,对象的活动)这条虚线称为对象的“生命线”
此图是描述购票的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。
对象(信息亭 Kjosk ,售票中心 Box Office, 信用卡服务 Credit Card Service ),生命线,消息符号,信息亭发Request (count, performance)消息给售票中心,表示调用售票中心类的Request (count, performance)操作,来查询演出的信息,售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出可用的座位表。
1.是一种交互图,描述对象间的协作关系,协作图跟顺序图相似,描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息
2.强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态情况。
3.协作图可以表示类操作的实现。
作用:是表示一个类操作的实现
解释:
actor发送Print消息给Computer,Computer发送Print消息给PrintServer,如果打印机空闲,PrintServer发送Print消息给printer
解释:
参与者需要乘坐电梯,他从系统外部按下按钮,让电梯到达他想去的楼层。此时,电梯系统的操作被启动,电梯控制对象以循环的方式检查所有的电梯,从中选择一个工作队列长度最短的。然后,它创建一个作业命令,并将该命令放入对应电梯的工作队列,接着激活队列。电梯对象并发运行,从它的队列中选择一个作业并执行。电梯是一个活动对象,它与它的控制线程并发执行。
标签对消息作说明,其中,顺序号指出消息的发生顺序,并且指明了消息的嵌套关系;冒号后面是消息的名字
下面是一个完整的消息标签:
前缀 守卫条件 序列表达式 返回值 := 消息名
用直线来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间
1.协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同
2.协作图和顺序图可以相互转化
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)
1.活动图是状态图的一个变体,描述系统的动态行为
2.包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态
3.适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述
4.类似于传统意义上的流程图
1.业务建模时,用于详述业务用例,描述一项业务的执行过程
2.设计时,描述操作的流程
解释:
本活动图描述一个处理订单的用例执行过
(1)执行setup order
(2)根据order的类型是执行不同的分支:
single order:执行assign seat、charge credit card
subscription:同时执行assignseats、debit account或
award bonus
single order与subscription两步可同时进行
(3) 最后mail packet。
解释:
本例为一个按活动职责(带泳道)组织的处理订单用例的活动图(模型中的活动按职责组织)。活动被按职责分配到用线分开的不同区域(泳道):
Customer
Sales
Stockroom
(1)顾客要求服务,Sales负责接收定
单,并提交到Stockroom
(2) Stockroom处理定单,与此同时,
Customer付款,并由Sales处
Deliverorder至Customer。
又称组件图,构件图用于静态建模
1.是表示构件类型的组织以及各种构件之间依赖关系的图。
2.构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。
图中的构件名称是Dictionary字典
该构件向外提供两个接口,即两个服务Spell-check拼写检查、Synonyms同义词
图中“Planner计划者”构件向外提供一个“update更新”接口服务
同时,该构件要求外部接口提供一个“Reservations预定”服务
虚线箭头:表示要求外部接口提供服务
1.部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图
2.如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈
3.部署图的两种表现形式:实例层部署图和描述层部署图(会在后面的实例中给出)
图中包括的各种关系如下:
1.通信链关系(不带箭头的直线):TicketServe票服务器与Kiosk信息厅之间存在一对多的通信关联;与SalesTerminal售票终端也存在一对多的通信关联;
2.依赖关系(带箭头的虚线):TicketSeller售票构件依赖CreditCardCharges信用卡付款构件和TicketDB票数据库构件提供的服务。
构件、接口、构件实例、构件向外提供服务、构件要求外部提供的服务
1.部署图表现构件实例
2.构件图表现构件类型的定义
3.部署图偏向于描述构件在节点中运行时的状态,描述了构件运行的环境
4.构件图偏向于描述构件之间相互依赖支持的基本关系。
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.选AC
2.选B
3.选B
4.选A
1.选A
2.选A