zoukankan      html  css  js  c++  java
  • 2.7 UML状态图

    问题的引出

      顺序图是对对象的动态行为进行建模,有多个对象的参与、协作

      问题:

        当需要考察单个实体的动态行为时, 用UML如何来建模呢?

        什么是单个实体:一个软件系统?一个子系统?一个模块、一个构件?

      选择单个对象

        软件系统中核心的、需要进行详细分析的单个实体

        从不同的视点(ViewPoint)可有不同的选择

          类的对象、构件、整个系统

        原则:从选定的角度,把要考察的实体看作一个整体

      UML提供了建模机制

        状态图, 单个对象的动态行为

    状态图的概念

       状态(state):

         是对象的生命期中的一个条件或状况

         在此期间,对象可以响应事件、执行某活动等

         例如,灯,有几个状态?

         例如类,color,

       状态机(state machine) :

         是一种行为,

         说明对象在它的生命期中, 响应事件所经历的状态序列 以及它们对每个事 件的响应

       状态图(state diagram, State Chart ):

         状态机可以用状态图来可视化。

         状态图显示了一个状态机,它强调从状态到状态的控制流 

       状态有以下几个部分组成:

         1)名称(name)

           每个单词首字母大写

         2)进入/退出动作(entry/exit action)

         3)内部迁移(internal transition)

           Transitions that are handled without causing a change in state

         4)子状态 (substate)

         5)延迟事件 (deferred event) 

       事件 Event 

         是对一个在时间和空间上占有一定位置的有意义的事情的描述

           在状态机的语境中,一个事件是一个激励的发生,它能够触发一个状态迁移

         UML 对4种事件进行建模

           参量变化 change event

             布尔表达式值变化、定时器、溢出:是内部事件

           信号 signal  (异步)

           调用 call    (同步)

           时间事件 time event

             时间事件 是表示一段时间的推移

               用关键字after 后面跟着时间表达式

               用关键字at 表示某个绝对时间点上发生的时间事件

             变化事件 表示状态的一个变化或某些条件得到满足的事件

               用关键字 when后跟一个布尔表达式,当条件满足,则引发变化事件 

       迁移Transition

         在状态A,发生事件并满足一定条件,转到状态B

         一个迁移由5部分组成

           源状态 source state

           事件触发器 event trigger (触发事件名称)

           触发条件 guard condition

           效应(effect) (或称,迁移动作)

             可执行的动作

           目标状态 

       特殊的迁移

         自身迁移  self transition

           从状态A迁移到状态A

         内部迁移 internal transition 

           在状态A内部 行为 

    状态图的建模元素

       状态

         一般状态:圆角矩形

         初始状态:实心圆

         结束状态:“牛眼” (bull’s eye)

       事件

         触发事件名[触发条件]/迁移动作

           这三个部分都是可以省略的,但至少有一部分

           事件依附于表示迁移的箭线

       迁移

         叉形箭头实线

           从初始状态指向目标状态 

    状态图建模

       建模步骤

         1、选择对象及视点

           简单类的实例

           构件

            整个系统 或子系统

           用例

         2、定义 对象在生命期内可能存在的状态

           状态要有意义

           状态持续一定的时间

         3、在每种状态下可以接受的事件及将要转去的新的状态

       状态图建模注意事项:

         不允许孤立的状态存在

         不允许只进不出的状态迁移  (“黑洞”)

         不允许只出不进的状态迁移  (“奇迹”)

         不允许没有事件发生的迁移

           或者“迁移” 没有指明具体的事件 

    比较状态图与交互图、活动图

       交互

         对共同工作的对象群体的行为建模

         动态行为

       状态机

         对单个对象的行为建模

           有时,可以对单个“完整系统”的行为建模

           说明对象在它的生命期中响应事件所 经历的状态序列以及对那些事件的响应

         动态行为建模

       活动图

         强调从活动到活动的控制流,多个业务角色

         状态图是强调 对象潜在的状态和这些状态之间的迁移 

    UML工具小结

       建模、模型

       统一建模语言 UML,Unified Modeling Language

         工具包

      用例模型 UseCase Model 

       活动图 Activity Diagram 

       类图 Class Diagram

       顺序图 Sequence Diagram

       通信图 Communication Diagram

       状态图 State Diagram 

  • 相关阅读:
    Django基础命令
    ubuntu中python项目独立的虚拟环境
    Springboot项目的小问题
    redis
    ubuntu系统根目录下各个目录用途说明
    SpringBoot 在IDEA中实现热部署
    SpringBoot访问不到webapp下的内容
    httpServeltRequest和Model传值的区别
    map的输出
    主流框架排名
  • 原文地址:https://www.cnblogs.com/mayZhou/p/10500022.html
Copyright © 2011-2022 走看看