精华内容
下载资源
问答
  • 一、 什么是时序图时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。时序图是一个二维图,横轴表示对象,纵轴表示...

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章

    做一个积极的人

    编码、改bug、提升自己

    我有一个乐园,面向编程,春暖花开!

    fecdd43c483b8e9cdb1703422d4fa9ba.png

    一、 什么是时序图?

    时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

    时序图是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。

    二、 时序图的作用是什么?

    1、展示对象之间交互的顺序。将交互行为建模为消息传递,通过描述消息是如何在对象间发送和接收的来动态展示对象之间的交互;

    2、相对于其他UML图,时序图更强调交互的时间顺序;

    3、可以直观的描述并发进程。

    三、 组成元素有哪些?

    1. 角色(Actor)

    系统角色,可以是人、机器、其他系统、子系统;在时序图中用表示。

    2. 对象(Object)

    (1)对象的三种命名方式

    第一种方式包括对象名和类名,例如:直播课时:课时,在时序图中,用“对象:类”表示;

    第二种方式只显示类名,即表示它是一个匿名对象,例如: :课程;在时序图中,用“:类”表示;

    第三种方式只显示对象名不显示类名,例如:讲师;在时序图中,用“对象”表示。

    (2)命名方式的选择

    三种命名方式均可,哪种最容易让阅读该时序图的人理解,就选择哪种。

    (3)对象的排列顺序

    对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交互频繁的对象尽可能的靠拢;2.把初始化整个交互活动的对象放置在最左端。

    3. 生命线(Lifeline)

    在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

    4. 控制焦点(Focus of Control)

    又称为激活期,表示时间段的符号,在这个时间段内对象将执行相应的操作。它可以被理解成C语言语义中一对花括号{ }中的内容;用小矩形表示。

    5. 消息(Message)

    消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message)。

    消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义;

    消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。

    返回消息表示从过程调用返回。

    6. 自关联消息

    表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。

    7. 组合片段

    组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:

    da3c5b30d484037980046683ed62a4fc.png

    常用组合片段举例:

    用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..

    (1)抉择(Alt)

    抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。

    cfe734d9217b1494e7d0ea2e602df6bb.png

    (2)选项(Opt)

    包含一个可能发生或不发生的序列;

    3c0099a543055837969afd575970da97.png

    (3)循环(Loop)

    片段重复一定次数,可以在临界中指示片段重复的条件。

    4c771fc4d226b2c0e74d71ac67038932.png

    (4)并行(Par)

    ceff3eb447db2b12530a811370ca1c9e.png

    四、 时序图的绘制工具

    时序图的绘制工具有VISO、Rational Rose、StarUML、Web Sequence Diagrams、Timing Designer、Trufun Plato等,可任选其一。

    五、 时序图的画法及实例

    时序图的绘制步骤可简单总结如下:

    划清边界,识别交互的语境;

    将所要绘制的交互场景中的角色以及对象梳理出来;

    从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明每个消息的特性(如参数等)。

    接下来,我们按照上面所讲的时序图的绘制步骤,以学生在教务系统中查询其课程的成绩为例,来讲解时序图的绘制方法。

    1、划清边界,识别交互的语境

    所谓划清边界,就是要界定好自己所要画的时序图的范围,“学生在教务系统中查询其课程的成绩”就是所要绘制的时序图的交互内容,不用往上延伸到用户登录,也不要往下延伸到下载成绩单。

    识别交互的语境,即是读懂所要画的时序图的前提和背景。比如本例中,既然学生可以查询成绩,那么该学生肯定已经注册并认证过其身份,并可选择其所考试的课程查询相应成绩。

    2、梳理角色和对象

    在本例中,角色有学生,对象有教务系统、课程、成绩。

    对象的梳理是一个相对主观的过程,比如本例中,课程以及成绩分别作为了对象存在,也可以合并为数据库这一个对象。

    请注意:角色以及对象,都为名词,动词不可作为角色和对象,如“成绩查询”不可作为对象。

    7d8c45eda8281e549b3c9e9dd04cefd2.png

    3、添加消息

    学生的登录验证作为本时序图的前置行为,可直接引用到本时序图中,也可忽略不画;学生进入成绩查询页面后,页面会加载本学生的成绩查询课程列表,并显示出课程对应的成绩;

    138f21a5eeb5966aa029ca0e965eab35.png
    展开全文
  • java 时序图

    千次阅读 2018-08-13 18:15:25
    UML时序图,又叫序列图或者顺序图,是一种用来描述对象之间传送消息的时间顺序,是用来表示用例中的行为顺序。 UML时序图最基本的符号即含义: 1、对象:表示系统的参与者或者任何有效的系统对象。 2、生命线...

    UML时序图,又叫序列图或者顺序图,是一种用来描述对象之间传送消息的时间顺序,是用来表示用例中的行为顺序。

    UML时序图

    UML时序图最基本的符号即含义:

    1、对象:表示系统的参与者或者任何有效的系统对象。

    uml对象

    2、生命线:相当于一个时间线,表示对象在一段时间内的存在时间,而且从时序图的顶部一直延伸至底部,长度取决于交互的时间。

    时序图生命线

    3、消息:是用来表示一个对象向其他一个或者多个对象发送信号,或者由一个对象调用另外一个对象的操作。

    时序图消息

    4、激活:表示的是一个对象直接或者通过从属操作而完成操作的过程。在时序图中一般激活符号的顶端与激活时间对齐,低端与完成时间对齐,被执行的操作则用文字进行标识。

    时序图激活

    5、注释:是用来对UML实体进行文字描述的。

    时序图注释

    6、约束:表示的是当为对象交互建模时,有时候必须满足一个条件,消息才会传递给对象。

    时序图约束

    7、用户:即系统角色,可以是人、其他系统或者子系统。

    时序图用户

    8、链接到自己:显示对象可以调用自己的属性。

    时序图链接到自己

    9、通信:表示创建对象之间的通信路径。

    时序图通信

    10、包:在UML中,一个包直接对应的是一个Java中的包,是一种常规用途的组合机制。

    时序图包

    亿图软件中UML建模符号:

    UML部署:

    时序图部署

    UML活动:

    时序图活动

    UML协作:

    时序图协作

    UML序列:

    时序图序列

    UML用例:

    时序图用例

    UML状态:

    时序图状态

    UML组件:

    时序图组件

    展开全文
  • java时序图demo

    2015-11-06 10:50:45
    java时序图的样例,主要了解jfreechart插件的应用,再进行后续延伸。
  • java jfreechart实现显示股票时序图,从文本文件中读取数据,文本文件格式附上,欢迎大家交流参考
  • 最近老板让我做类图和时序图 1. 安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好。 eclipse在线安装GEF的地址:...

    0.美图

    在这里插入图片描述

    最近老板让我做类图和时序图

    1. 安装和使用AmaterasUML

    安装AmaterasUML前,需要先安装GEF
    采用eclipse在线安装方式安装就好。
    eclipse在线安装GEF的地址:http://download.eclipse.org/tools/gef/updates/releases/

    这里写图片描述

    可能要勾选这个不然会很慢

    ##1.2. 安装AmaterasUML

    安装好GEF后,安装AmaterasUML
    先到如下地址下载:http://sourceforge.jp/projects/amateras/downloads/56447/AmaterasUML_1.3.4.zip/
    解压后把里面的3个jar文件拷贝到eclipse-plugins目录即可,重新启动Eclipse即可

    展开全文
  • 通过绘制ReentrantLock的使用API到调用底层AQS的时序图。了解AQS是如何工作的?ReentrantLock是如何做到非公平以及公平?...通过时序图还可以学习如何实现自定义AQS?通过Java 的AQS是否可以实现分布式锁?

    通过绘制ReentrantLock的使用API到调用底层AQS的时序图。了解AQS是如何工作的?ReentrantLock是如何做到非公平以及公平?ReentrantLock是如何做到可重入的?了解总结学习AQS需要哪些前置知识?通过时序图还可以学习如何实现自定义AQS?通过Java 的AQS是否可以实现分布式锁?

    ReentrantLock调用AQS时序图

    时序图见 https://www.processon.com/view/5d9ec71de4b09df55007e83f中的 ReentrantLock调用AQS时序图部分。
    其中涉及到如下对象:

    • client:调用客户端, 调用ReentrantLock.lockReentrantLock.unlock
    • ReentrantLock
    • ReentrantLock.Sync
    • AbstractQueuedSynchronizer
    • AbstractQueuedSynchronizer.Node:CLH队列,该队列需要一个傀儡头节点
    • LockSupport:parkunpark
    • sun.misc.Unsafe:compareAndSwapInt

    ReentrantLock 使用API

    • lock
    • unlock

    ReentrantLock是如何做到非公平以及公平?

    非公平锁是在lock方法中通过CAS先设置AQS的state来实现的,谁先成功谁先获取锁,不关先后顺序。
    公平锁是lock的时候就会排队,从而实现公平锁的。

    ReentrantLock是如何做到可重入的?

    可重入是多次调用lock方法时,每调用一次将AQS的state的值+1,释放的时候将AQS的state的值-1。

    Java AQS 向外提供的API

    从时序图中可以看到AQS向外提供调用的方法只有acquirerelease 方法,因为AQS是使用了模板方法设计模式设计的,以下方法必须要在自定义AQS中重写必要一部分方法

        protected boolean tryAcquire(int arg) {
            throw new UnsupportedOperationException();
        }
        
     	protected boolean tryRelease(int arg) {
            throw new UnsupportedOperationException();
        }
    	
    	protected int tryAcquireShared(int arg) {
            throw new UnsupportedOperationException();
        }
    	
    	protected boolean tryReleaseShared(int arg) {
            throw new UnsupportedOperationException();
        }
    	
    	protected boolean isHeldExclusively() {
            throw new UnsupportedOperationException();
        }
    
    

    学习Java AQS的前置知识

    • CLH队列:该队列需要一个傀儡头节点 ,如何插入和删除节点?
    • LockSupport:如何实现等待/通知?
    • sun.misc.Unsafe:如何实现CAS?
    • JVM GC。
    • AQS中的代码一定要考虑是多个线程同时运行的。

    通过时序图还可以学习如何实现自定义AQS?

    继承AbstractQueuedSynchronizer并重写tryAcquiretryRelease方法。结合Java其他AQS实现更深入的学习。

    通过Java 的AQS是否可以实现分布式锁?

    有机会的话可以对比Zookeeper 是如何实现分布式锁的。

    展开全文
  • Java实现 首先给出LOF算法的实现 package LOF; import java.util.ArrayList; /** * Local Outlier Factor * * @author mezereon E-mail:mezereon@gmail.com * @since 18-4-12 */ public class LOF { ...
  • 生成类图很简单,有多种方法,比如Androidstudio中安装插件,simpleuml,codelris,plantuml...eclipse中功能更为强大,AmaterasUML插件可以实现拖动java文件即可生成类图,也很美观,此外也可自动生成时序图,但是 ...
  • java进阶之UML类图和时序图

    千次阅读 2019-07-03 15:11:30
    目录UML概述UML分类新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一...
  • java web项目怎么写时序图

    千次阅读 2012-03-19 15:12:02
    今天项目经理下命令,把原来的流程图改成时序图。虽然有点晕,可老大下命令必须得做呀。 以前没有做过时序图,毫无经验。立马上google搜相关资料。经过大约半小时的码字,终于搜到一份自觉地比较有价值的东西。下面...
  • java-tracer是一个利用JVMTI技术实现java方法调用轨迹录制的工具,它能帮我们绘制方法调用的时序图,利用时序图结合源码,我们可以很容易地理解一些框架的运行逻辑及细节 结果样例 如下链接即是一个简单的spring...
  • 的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。 语法实例: ? 1 2 3 4 5 6 7 @startuml...
  • 最近老板让我做类图和时序图,提苦恼的,完全不会,就从网上整理了些 1.安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好。 eclipse在线安装GEF的地址:...
  • 时序图

    千次阅读 2016-07-18 23:20:26
    简单示例 你可以使用->来绘制参与者之间的消息传递, 而不必显式的声明参与者。... 注意:仅适用于时序图,其它图形的规则是不同的。 @startuml Alice -> Bob: Authentication Request Bob -->
  • 一、概念 交互图描述对象之间的动态合作关系以及合作过程中的行为次序。 交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况,即一个用例的实现过程。...时序图(Seq...
  • UML时序图

    2008-03-26 22:03:00
    UML时序图 本文讨论的是一种 UML 图——交互图(Interaction Diagram)。交互图描述的是一组对象之间的交互过程,或者说,这里我们实际上要回答这样一个问题:“方法调用过程在UML中怎样表示?” UML 交互图 本文...
  • 时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图,下面我们简称UML图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中...
  • 对系统的用例分析实际上就是看用例执行的过程所进行的交互分析,使用UML时序图可以把分析过程表示出来。 时序图通常包含角色,对象,生命线,控制焦点和消息。根据用例发生的交互行为,时序图把系统内部的对象按...
  • Pownerdesigner画用例图/类图/时序图

    千次阅读 2019-07-03 15:12:17
    文章目录1. 问题描述2 ....New Model2.2.2 效果图2.2.3 参数设置图2.3 时序图2.3.1 file->New Model2.3.2 时序图效果图2.4 说明 1. 问题描述 软件过程中,设计阶段有几个常用的工具:Rational Rose、...
  • UML图,时序图

    2020-10-07 21:56:45
    类与类,继承关系:实线空心箭头指向父 类与接口,实现关系:虚线空心箭头指向接口 类与类,关联关系:一个类是另一个类的属性,实线箭头指向属性类。...时序图: 实线箭头:调用方法 虚线箭头:
  • 前端绘图-时序图

    千次阅读 2019-11-12 09:57:59
    因为工作需要,这两天在尝试着给手里一些模块画时序图(Sequence Diagrams),一般画这种图的时候,我们第一反应会想到安装 IBM 的Rational Rose,但是我不想为了画这种图就去安装一个那麽庞大的企业级应用软件,不...
  • Tomcat服务器启动时序图 Tomcat中最顶层的容器叫Server,代表整个服务器,Server中包含至少一个Service,用于具体提供服务。 Service主要包含两部分:Connector和Container。Connector用于处理连接相关的事情,...
  • IDEA插件-SequenceDiagram一款不错的时序图生成工具 这里写目录标题IDEA插件-SequenceDiagram一款不错的时序图生成工具插件说明安装插件使用 插件说明 在接手老项目时,一上手很难窥到全貌,这时候要是能够把接口的...
  • UML时序图(序列图)

    万次阅读 2016-03-22 11:32:49
    前面一篇学习了uml中的静态模型图类图,这篇我们学习一下uml中的动态模型图时序图。 我们先来看几个问题,什么是时序图时序图由哪些元素组成,为何要画时序图 。下面我们就来看看: 1、什么是时序图: (1)、序列...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,439
精华内容 10,975
关键字:

java实现时序图

java 订阅