zoukankan      html  css  js  c++  java
  • UML作业第四次:分析系统,绘制活动图

    UML作业第四次:分析系统,绘制活动图

    作业题目:分析超市购物流程,并画出活动图

    一、要求及步骤

    step1:学习PlantUML活动图绘制方法,学习活动图语法

    step2:以《超市购物》系统为例,分析系统中的活动主体:顾客、收银员、收款机;设置三个活动分区(泳道)

    step3: 分析超市购物流程

    step4:用PlantUML 编写 《超市购物》购物活动的 脚本

    step5:在线绘制《超市购物》购物活动活动图

    一、活动图语法

    活动标签(activity label)以冒号开始,以分号结束,文本格式支持creole wiki语法。,活动默认安装它们定义的顺序就行连接。

    @startuml
    :Hello world;
    :This is on defined on
    several **lines**;
    @enduml
    

    开始/结束

    可以使用关键字startstop表示图示的开始和结束。

    @startuml
    start
    :Hello world;
    :This is on defined on
    several **lines**;
    stop
    @enduml
    

    也可以使用 end 关键字。

    @startuml
    start
    :Hello world;
    :This is on defined on
    several **lines**;
    end
    @enduml
    

    条件语句

    在图示中可以使用关键字ifthenelse设置分支测试。标注文字则放在括号中。

    @startuml
    
    start
    
    if (Graphviz installed?) then (yes)
      :process all
    diagrams;
    else (no)
      :process only
      __sequence__ and __activity__ diagrams;
    endif
    
    stop
    
    @enduml
    

    也可以使用关键字elseif设置多个分支测试。

    @startuml
    start
    if (condition A) then (yes)
      :Text 1;
    elseif (condition B) then (yes)
      :Text 2;
      stop
    elseif (condition C) then (yes)
      :Text 3;
    elseif (condition D) then (yes)
      :Text 4;
    else (nothing)
      :Text else;
    endif
    stop
    @enduml
    

    重复循环

    可以使用关键字repeatrepeatwhile进行重复循环。

    @startuml
    
    start
    
    repeat
      :read data;
      :generate diagrams;
    repeat while (more data?)
    
    stop
    
    @enduml
    
    while循环

    可以使用关键字whileend while进行while循环。

    @startuml
    
    start
    
    while (data available?)
      :read data;
      :generate diagrams;
    endwhile
    
    stop
    
    @enduml
    

    还可以在关键字endwhile后添加标注,还有一种方式是使用关键字is

    @startuml
    while (check filesize ?) is (not empty)
      :read file;
    endwhile (empty)
    :close file;
    @enduml
    

    并行处理

    可以使用关键字forkfork againend fork表示并行处理。

    @startuml
    
    start
    
    if (multiprocessor?) then (yes)
      fork
    	:Treatment 1;
      fork again
    	:Treatment 2;
      end fork
    else (monoproc)
      :Treatment 1;
      :Treatment 2;
    endif
    
    @enduml
    

    注释

    文本格式支持creole wiki语法。

    A note can be floating, using floating keyword.

    @startuml
    
    start
    :foo1;
    floating note left: This is a note
    :foo2;
    note right
      This note is on several
      //lines// and can
      contain <b>HTML</b>
      ====
      * Calling the method ""foo()"" is prohibited
    end note
    stop
    
    @enduml
    

     颜色

    可以为活动(activity)指定一种颜色。

    @startuml
    
    start
    :starting progress;
    #HotPink:reading configuration files
    These files should edited at this point!;
    #AAAAAA:ending of the process;
    
    @enduml
    

    箭头

    使用->标记,可以给箭头添加文字或者修改箭头颜色。

    同时,也可以选择点状 (dotted),条状(dashed),加粗或者是隐式箭头

    @startuml
    :foo1;
    -> You can put text on arrows;
    if (test) then
      -[#blue]->
      :foo2;
      -[#green,dashed]-> The text can
      also be on several lines
      and **very** long...;
      :foo3;
    else
      -[#black,dotted]->
      :foo4;
    endif
    -[#gray,bold]->
    :foo5;
    @enduml
    

    连接器(Connector)

    可以使用括号定义连接器。

    @startuml
    start
    :Some activity;
    (A)
    detach
    (A)
    :Other activity;
    @enduml
    

    组合(grouping)

    通过定义分区(partition),你可以把多个活动组合(group)在一起。

    @startuml
    start
    partition Initialization {
    	:read config file;
    	:init internal variable;
    }
    partition Running {
    	:wait for user interaction;
    	:print information;
    }
    
    stop
    @enduml
    

    泳道(Swimlanes)

    你可以使用管道符|来定义泳道。

    还可以改变泳道的颜色。

    @startuml
    |Swimlane1|
    start
    :foo1;
    |#AntiqueWhite|Swimlane2|
    :foo2;
    :foo3;
    |Swimlane1|
    :foo4;
    |Swimlane2|
    :foo5;
    stop
    @enduml
    

    分离(detach)

    可以使用关键字detach移除箭头。

    @startuml
     :start;
     fork
       :foo1;
       :foo2;
     fork again
       :foo3;
       detach
     endfork
     if (foo4) then
       :foo5;
       detach
     endif
     :foo6;
     detach
     :foo7;
     stop
    @enduml
    

    特殊领域语言(SDL)

    通过修改活动标签最后的分号分隔符(;),可以为活动设置不同的形状。

    • |
    • <
    • >
    • /
    • ]
    • }
    @startuml
    :Ready;
    :next(o)|
    :Receiving;
    split
     :nak(i)<
     :ack(o)>
    split again
     :ack(i)<
     :next(o)
     on several line|
     :i := i + 1]
     :ack(o)>
    split again
     :err(i)<
     :nak(o)>
    split again
     :foo/
    split again
     :i > 5}
    stop
    end split
    :finish;
    @enduml
    
    二、分析《超市购物》系统
    超市购物系统拥有三个部分:顾客、收银员、收款机。
    1、顾客进入商店,选择自己所要购买的商品,并把选好的商品拿到收银台交给收银员。
    2、收银员询问顾客是否是会员,如果是会员,索要顾客的会员卡,把会员卡扫描进系统并对会员卡进行验证。
    3、然后逐一扫描顾客所选商品的条形码,收款机边接收商品条码,边累加商品金额。
    4、扫描完商品信息后,收银员根据收款机上显示的商品金额收货款,然后通过收款机打印售货单。
    5、最后收银员把售货单和商品交给顾客,本次购物过程结束。
    三、《超市购物》购物活动的 脚本
    @startuml
    |顾客|
    start
    :选择商品;
    :商品交给收银员;
    |#AntiqueWhite|顾客|
    if (是否是会员) then (yes)
    :会员;
      |收银员|
      :扫描会员卡;
        |#AntiqueWhite|收款机|
    if (接收会员编号) then (yes)
         :提示会员卡有效;
    else (no)
         :提示会员卡无效;
    endif
    else (no)
    |顾客|
    :非会员;
    endif
    |收银员|
    :扫描商品条码;
    |收款机|
      :接收商品条形码;
      :统计商品金额;
    |收银员|
    while (是否还有商品) is (yes)
      |收银员|
      :扫描商品条码;
    endwhile (no)
    |顾客|
    :交付货款;
    |收银员|
    :接收货款;
    |收款机|
    :打印售货单;
    |收银员|
    :货单及货品交给顾客;
    |顾客|
    :接收货单及货品;
    stop
    @enduml
    四、《超市购物》购物活动活动图
    PlantUML diagram

     

  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/cuixihan/p/10816570.html
Copyright © 2011-2022 走看看