UML用例图、类图、时序图

来源:互联网 发布:it之家官网 编辑:程序博客网 时间:2024/05/23 18:31

用例图

用例图:用例图由参与者(Actor)用例系统边界箭头组成,用画图的方法来完成。

  • 参与者:参与者不是说就是指某某人,是指在使用系统或与系统交互中所扮演的角色。
    参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。
    这里写图片描述
  • 用例:用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。简单理解,用例是参与者想要系统做的事情。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。
    这里写图片描述
  • 系统边界:系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。在画图时可省略。
  • 箭头:箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方。当然也可以用单纯的直线来表示。

- 这里写图片描述

有时候我们还会用到“包含include”“扩展extend”。
这两者的区别是“包含”是主用例没有包含其他的辅助用例就不能独立执行,但是主用例可以在没有“扩展”其他辅助用例的情况也可以执行。
角色也可以有类属关系。比如说管理员同时也是用户,注册用户可以做一切用户可以做的事情,但是管理员还拥有一些普通用户没有涉及的功能。
这里写图片描述

类图

类图:UML中类的图形表示是一个长方形,垂直分为三层,分别为类名,类的属性,类的方法。
这里写图片描述
属性的可见性通常有下述3种:公有的(public)、私有的(private)和保护的(protected),分别用加号(+)、减号(-)和井号(#)表示。
- 继承关系
指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识。
继承关系用一条带空心箭头的直接表示;如下图表示(A继承自B);
这里写图片描述

  • 实现关系
    指的是一个类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识。
    实现关系用一条带空心箭头的虚线表示;
    这里写图片描述

  • 依赖关系
    可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A。表现在代码层面,为类B作为参数被类A在某个method方法中使用;
    依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;
    这里写图片描述

  • 关联关系
    他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;
    关联关系是用一条直线表示的;
    这里写图片描述

  • 聚合关系
    聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
    聚合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,
    这里写图片描述

  • 组合关系
    合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
    组合关系用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;
    这里写图片描述

时序图

时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。时序图中显示的是参与交互的对象及其对象之间消息交互的顺序。

时序图包括的建模元素主要有:对象(Actor)生命线(Lifeline)激活点(Activation)消息(Message)等等。

  • 对象(Object)
    对象 : 时序图中的对象在交互中扮演的角色就是对象;
    对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;
    对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;
    – 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;
    – 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;
  • 生命线(Lifeline)
    生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;
    生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;
  • 激活(Activation)
    激活(Activation) : 代表时序图中对象执行一项操作的时期, 表示该对象被占用以完成某个任务;
    这里写图片描述

  • 消息(Message)
    消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模;
    消息的异步和同步通信 :
    – 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;
    – 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;
    这里写图片描述

  • 组合片段
    组合片段 用来解决交互执行的条件及方式。 它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
    常用的组合片段有:
    (1)抉择(Alt)
    抉择用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..。
    抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。 else 的临界指示其他任何临界都不为 True 时应运行的片段。 如果所有临界都为 False 并且没有 else,则不执行任何片段。
    这里写图片描述
    (2)选项(Opt)
    包含一个可能发生或不发生的序列
    这里写图片描述
    (3)循环(Loop)
    片段重复一定次数。 可以在临界中指示片段重复的条件。
    这里写图片描述
    (4)并行(Par)
    这里写图片描述

组合片段一共有13种,他们的含义分别如下:
alt:在一组行为中根据特定的条件选择某个交互;
opt:表示一个可选的行为;
loop:说明交互片段会被重复执行
break:提供了和编程语言中的break类拟的机制;
par:支持交互片段的并发执行;
seq:强迫交互按照特定的顺序执行;
strict:明确定义了一组交互片段的执行顺序;
neg:用来标志不应该发生的交互;
region:标志在组合片段中先于其他交互片断发生的交互;
ref:引用其他地方定义的组合片段;
ignore:明确定义了交互片段不应该响应的消息;
consider:明确标志了应该被处理的消息
assert:标志了在交互片段中作为事件唯一的合法继续者的操作数;

原创粉丝点击