状态图

状态图是系统分析的一种常用的建模元素,用来表示系统的行为。在面向对象技术中状态图又被称为状态迁移图,它是有限状态机的图形表示,用于描述一个对象类的一个对象在其生存期间的行为。

1、状态图的基本概念

1.1、状态机的含义

      状态机是一种记录下给定时刻状态的设备,它可以根据各种不同的输入对每个给定的变化改变其状态或引发一个动作。比如计算机操作系统中的进程调度和缓冲区调度都是一个状态机。在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都必然会经历一个从开始创建到最终消亡的完整过程,这个过程通常被称为对象的生命周期。一般来说,对象在其生命周期内是不可能完全孤立的,它必然会接收消息来改变自身,或者发送消息来影响其他对象。而状态机就是用于说明对象在其生命周期中相应事件所经历的状态序列以及其对这些事件的相应。在状态机的语境中,一个事件就是一次激发的产生,每个激发都可以触发一个状态转换。

      状态机是由状态、转换、事件、活动和动作五部分组成的。

1.2、状态图

      一个状态图本质上就是一个状态机,或者是状态机的特殊情况,他基本上是一个状态机中元素的一个投影,这也就意味着 状态图包括状态机的所有特征。状态图描述了一个实体基于事件反应的动态行为,显示了该实体是如何根据当前所处的状态对不同的事件作出反应的。

      在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个终止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、终止状态和判定等组成。

posted @ 2018-12-01 14:01  strawqqhat  阅读(419)  评论(0编辑  收藏  举报
#home h1{ font-size:45px; } body{ background-image: url("放你的背景图链接"); background-position: initial; background-size: cover; background-repeat: no-repeat; background-attachment: fixed; background-origin: initial; background-clip: initial; height:100%; width:100%; } #home{ opacity:0.7; } .wall{ position: fixed; top: 0; left: 0; bottom: 0; right: 0; } div#midground{ background: url("https://i.postimg.cc/PP5GtGtM/midground.png"); z-index: -1; -webkit-animation: cc 200s linear infinite; -moz-animation: cc 200s linear infinite; -o-animation: cc 200s linear infinite; animation: cc 200s linear infinite; } div#foreground{ background: url("https://i.postimg.cc/z3jZZD1B/foreground.png"); z-index: -2; -webkit-animation: cc 253s linear infinite; -o-animation: cc 253s linear infinite; -moz-animation: cc 253s linear infinite; animation: cc 253s linear infinite; } div#top{ background: url("https://i.postimg.cc/PP5GtGtM/midground.png"); z-index: -4; -webkit-animation: da 200s linear infinite; -o-animation: da 200s linear infinite; animation: da 200s linear infinite; } @-webkit-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @-o-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @-moz-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @keyframes cc { 0%{ background-position: 0 0; } 100%{ background-position: 600% 0; } } @keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-webkit-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-moz-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-ms-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } }