UML之用例图,类图,时序图,活动图
用例图
用例图是用于描述系统在某个系统边界下需要提供的功能的图例描述,是对用户与系统进行交互的动作的表述。用例图描述了用户、需求以及系统功能单元之间的关系,主要由参与者,用例和它们之间的关系组成。
用例图需要的因素:
参与者(Actor):使用系统功能的人或者团体,用小人表示,参与者可以继承,用空三角表示
系统边界:用于确定用例的使用场景,用例图必须在系统边界中设计才有意义,用矩形表示
用例:用户与系统之间的交互行为,一般是用户做的某件事,用椭圆表示,注:每个用例都得是动宾结构(动词+名词)
关系:用例与参与者之间的关系可以通过无向线或者有向线表示,表示用例使用了该功能。用例与用例之间也存在关系,包括依赖<>和扩展<>。
<>表示两个用例必须都执行如下图,在支付时必须输入密码整个操作才算完成。
<>表示对扩展用例在功能上的扩充,但不必非得执行。如下图,在支付方式上进行了扩充,这两个方式不一定要选择。
一般在绘制用例图时,首先需要找到使用系统的人或者组织作为参与者,然后再某个使用场景中分析参与者与系统之间的交互,找出参与的用例(一般为某个系统提供的功能),用例可以有不同的粒度,但不建议太小,尽量有一定的抽象性。最后将用例与参与者连接起来。
用例描述:再使用用例图时有必要对某个用例的使用场景进行详细描述,其过程就是对用例的具体操作过程进行描述,包含必要的分支情况。例描述一般包括:简要描述(说明)、前置(前提)条件、基本事件流、其他事件流、异常事件流、后置(事后)条件等等。简要描述:对用例的角色、目的的简要描述;
前置条件:执行用例之前系统必须要处于的状态,或者要满足的条件;
基本事件流:描述该用例的基本流程,指每个流程都“正常”运作时所发生的事情,没有任何备选流和异常流,而只有最有可能发生的事件流;
其他事件流:表示这个行为或流程是可选的或备选的,并不是总要总要执行它们;
异常事件流:表示发生了某些非正常的事情所要执行的流程;
后置条件:用例一旦执行后系统所处的状态
类图
类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,是唯一的可以直接映射到面向对象语言的图。
类图的绘制主要包括类名,属性,操作以及类之间的关系(类名要有大写,对象图中名称要用冒号:将对象名与所属的类名分开且有下划线如:马云:企业家)。属性或方法前的符号表示可见性,加号表示公有,减号表示私有,井号表示保护,波浪线表示默认方法。属性的格式为+name:String,方法的格式为+setName():void。
类间的关系常见的有以下几种关系: 继承或泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
继承:表示类与类之间的继承关系,接口与接口之间的继承关系,是 is-a 的关系,使用空心三角形+实线表示
实现:表示一个class类实现interface接口(可以是多个)的功能,使用空心三角形+虚线表示。有的接口也如右图表示
依赖(Dependency):是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。
关联(Association):关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。
关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。
在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。如瞎图所示是老师和学生的关系图,每个老师可以教多个学生,每个学生也可向多个老师学,他们是双向关联。
聚合(Aggregation):是关联关系的一种,是强关联关系,是整体和部分之间的关系,是 has-a 的关系。聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。在 UML 类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。
组合(Composition):也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 contains-a 关系。
在组合关系中,整体对象与部分对象的生命周期相同,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。
时序图
时序图(Sequence Diagram),又名序列图,是一种UML交互图。它通过描述对象间发送消息的时间顺序显示多个对象之间的动态协作。
时序图会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。
角色:以一个小人图标表示
对象:位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种,对象名:类名,对象名或只有类名如:类
生命线:对象下方的虚线
控制焦点:代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。
消息:对象之间传递信息,是通过调用对方的方法实现的。如A给B发送消息是A通过调用B的方法来实现的。发送消息用实线加箭头表示,返回消息用虚线加箭头表示。
自关联消息:表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。
组合片段:对于像分支,并行等操作,可以通过组合片段来表示。这种方式使用的较少。
活动图
UML活动图是UML的动态模型的一种图形,一般用来描述相关用例图。活动图实质上就是流程图,其描述了一系列动作之间的流程。活动图描述满足用例要求所要进行的活动以及活动间的约束关系,是一种表述过程基础、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。
活动图包括一些额外的功能如分支,平行流,泳道等。
在绘制活动图,我们应该确定以下要素:
活动:对象要执行的动作,
交互:动作之间的连接
条件:活动进行过程中可能会有分支,需要进行判断
泳道:活动图中会有不同的参与者,为每个参与者划分一个泳道,用于区分动作时谁执行的
平行流:再一个活动图中,部分活动可以同时发生。并行有开始就得有汇聚