UML学习笔记UML的7种常用图
Posted coding涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML学习笔记UML的7种常用图相关的知识,希望对你有一定的参考价值。
UML 2.0规范中定义了14中基本的图,分为两大类:
1、结构图(Structure Diagram)
用于描述系统的静态架构、系统要素(类、对象、接口、组件等)以及要素之间的关联和依赖关系。
2、行为图(Behavior Diagram)
用于描述系统运行过程中的动态变化。
UML图分类:
其中,常用图有7种图(表中标红的部分)
类图(Class Diagram)
类图用于描述各种类的结构及关系。类图中包括了类、接口、包、及各种关系,这些元素的说明参考前面的介绍。类图示例如下:
对于已存在的项目,可以通过工具自动生成类图。例如,eclipse的类图生成插件AmaterasUML。
组件图(Component Diagram)
用于描述软件系统中,遵从并实现了一组接口的可替换的软件模块,它展示了系统中各个组件间的结构关系。
组件图的元素包括:构件(Component)、接口(Interface) 、关系(Relationship) 、端口(Port) 、连接器(Connector)。
说明:
1、组件的接口分两种:“球”形接口表示该组件提供或实现的接口,此时组件为接口提供方;“凹面”形接口表示该组件需要或依赖的接口,此时组件为接口调用方;两种接口都是用实线与组件连接。
2、“球”形与“凹面”形组合在一起,例如“支付订单接口”,此时可以很直观地体现接口的提供方和调用方。
部署图(Deployment Diagram)
部署图主要描述了系统运行中的硬件节点、软件系统、连接方式、网络环境等之间的关系。
用例图(Use Case Diagram)
用例(use case)用于描述系统具备什么样的功能。它是从用户的角度对系统行为的进行描述,不关心系统的实现细节。
用例图中包含的元素有:
1)参与者(Actor):也成为角色/用户
2)系统边界(System Scope)
3)用例(Use Case):注意,用例的命名使用“动宾”结构命名
4)关联(Association):用于表示参与者或用例间的关系
用例图的关系分为两个层次:
1、参与者与参与者之间的关系:如上图中,普通用户和VIP用户都是用户的子类,体现的是泛化关系(继承)
2、用例与用例之间的关系,包括以下3种:
1)包含关系(include):是指一个用例的行为包含了另一个用例的行为,例如:
2)扩展关系(extend):是指一个用例对另外一个用例的功能扩展。注意在绘图时,带箭头的线要从扩展用例指向被扩展的用例。
扩展用例的执行条件:被扩展的用例会存在一个或多个扩展点(extensionpoint),只有当扩展点激活(即满足一定条件)时,扩展用例才会执行。下图的图书管理系统中,当读者遗失图书时,“交罚款”用例开始执行。
3)泛化关系。将多个用例的相同结构和行为抽象成父用例,子用例继承父用例。例如:
用例图示例:
状态图(State Machine Diagram)
状态机图,简称为状态图,用于描述对象所有可能的状态以及由事件引起的状态变化过程。状态图主要包括两种元素:状态和转换。
1、状态:使用圆角矩形表示状态,分为简单状态(Simple State)和组合状态(Composite State),其中组合状态指的是内嵌了子状态图的状态。
多个子状态之间存在顺序和并发两种关系。如下图所示,1、2为顺序子状态(Sequence State),1、3为并发子状态(ConcurrentState)。
历史状态(History States):它是一个伪状态(Pseudo State),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是从组合状态的初态开始。历史状态分两种:
1)浅(Shallow)历史状态:只记住最外层组合状态的历史,使用H表示;
2)深(Deep)历史状态:记住任意深度的组合状态的历史(组合状态的子状态也是可以嵌套子状态,故存在深度的概念),使用H*表示
2、转换(Transition):指的是对象在执行某个事件时,状态发生变化。
转换的表示格式:“触发事件Trigger(参数)[条件Guard]/动作Effect”。
状态图示例:下图是关于网上购物订单的状态图
活动图(Activity Diagram)
活动图描述的是系统的活动变化流程。活动图可看作是状态图的特殊形式。特殊性在于活动图中的一个活动结束后将立即进入下一个活动,不需要事件的触发。
一个活动内部是由多个动作组成,它是非原子性的。通常,一个活动执行完后,都会引起系统状态发生改变或返回某个值。例如:在线购物时“下单”这个活动,内部就包括“校验商品库存是否充足”“清空购物车”“通知卖家”等一系列动作,这些动作都是原子性的。
活动图的组成元素及说明
1、活动(Activity):表示的是某流程中的任务的执行。它一般由多个动作组成,是非原子性的。通常,一个活动执行完后,都会引起系统状态发生改变或返回某个值。使用圆角矩形表示。
2、动作流(Action Flow):指的是动作状态之间的转换。一个活动执行完后自动切换到下一个活动,不需要触发动作,但可以使用条件限制转换。例如:
3、分支(Branch)与合并(Merge)
分支表示基于某种条件的多种可选的控制流,合并用于对分支的结束。
4、分叉(Fork)和汇合(Join)
分叉表示并发运行的控制流,合并用于对分叉的结束,即并发的结束。
5、泳道(Swimlane)
泳道是将多个活动根据某个条件(一般是执行对象)化分为若干组。
顺序图(Sequence Diagram)
顺序图也称为时序图,是一种描述对象之间传送消息时的时间顺序,它能显示各个对象动作的顺序。特别注意,顺序图中,消息的传递代表的是职责的转移,不代表数据的传递,转移过程可能发生了数据传递,也可能没发生。
顺序图包含的元素主要有:角色(Actor)、对象(Object)、生命线(Lifeline)、激活(Activation)、消息(Message)等。
说明:
1、 对象有3中表示方式:“对象名:类名”、“:类名”、“对象名”。
2、 消息种类有4种:
a) 同步消息(Synchronous Message):使用带实心三角箭头的实线表示
b) 异步消息(Asynchronous Message):使用带开放箭头的实线表示
c) 返回消息(Return Message):使用带开放箭头的虚线表示
d)自关联消息(Self-Message):表示调用对象自身的方法调用,下图中的两种表示方法都可以。
3、 创建对象和销毁对象:
4、约束条件。表示方式:在描述前面加上[约束条件],表示发生职责转移需要满足的条件。例如:
以上是关于UML学习笔记UML的7种常用图的主要内容,如果未能解决你的问题,请参考以下文章