UML——活动图,状态图
2015-11-11 19:05
176 查看
为了能更好的使用UML对软件系统建模,需要从系统的结构和行为两个方面来描述系统。其中的行为是通过行为图和交互图来描述的。UML中的行为图包括活动图和状态图。
状态图
状态图主要用来描述一个特定对象的所有可能状态及由于各种事件的发生而引起的状态之间的转移。对象在事件的触发下,从一个状态变成另一个状态。大多数面向对象技术都使用状态图来描述对象在他的生命周期中状态的变化过程。状态图虽然很有用,但是不要对系统中的每个类都画出它的状态图,这样做会花费大量的时间和精力,而且也没必要。事实上,开发人员往往只关心某些关键类的行为,此时为这些类建立状态图可以帮助理解所研究的问题。
状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。
状态机:就是状态转移图。举个最简单的例子。人有三个状态健康,感冒,康复中。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4)。所以状态机就是健康-(t4)->健康;健康-(t1)->感冒;感冒-(t3)->健康;感冒-(t2)->康复中;康复中-(t4)->健康,等等。就是这样状态在不同的条件下跳转到自己或不同状态的图。
活动图
活动图类似流程图,不同之处在于它支持并行活动,是支持多线程编程的有力工具。它是状态图的一种特殊形式。其中所有或多数状态都是活动状态,而且所有或多数转移都在源状态中的活动完成时立即触发。
【机房收费系统活动图】
看到这两个图,大家会问这两种图有啥区别与联系呢?
区别:
联系:
对同一个行为,可以使用状态图和活动图从不同的角度来描述。
行为图主要用于分析、设计阶段描述对象的行为。一般状态图适合描述单个对象的状态变化情况。活动图则适合描述一个工作过程,多个对象之间的合作。活动图描述的过程一般要跨越多个用例。
状态图
状态图主要用来描述一个特定对象的所有可能状态及由于各种事件的发生而引起的状态之间的转移。对象在事件的触发下,从一个状态变成另一个状态。大多数面向对象技术都使用状态图来描述对象在他的生命周期中状态的变化过程。状态图虽然很有用,但是不要对系统中的每个类都画出它的状态图,这样做会花费大量的时间和精力,而且也没必要。事实上,开发人员往往只关心某些关键类的行为,此时为这些类建立状态图可以帮助理解所研究的问题。
状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。
状态机:就是状态转移图。举个最简单的例子。人有三个状态健康,感冒,康复中。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4)。所以状态机就是健康-(t4)->健康;健康-(t1)->感冒;感冒-(t3)->健康;感冒-(t2)->康复中;康复中-(t4)->健康,等等。就是这样状态在不同的条件下跳转到自己或不同状态的图。
活动图
活动图类似流程图,不同之处在于它支持并行活动,是支持多线程编程的有力工具。它是状态图的一种特殊形式。其中所有或多数状态都是活动状态,而且所有或多数转移都在源状态中的活动完成时立即触发。
【机房收费系统活动图】
看到这两个图,大家会问这两种图有啥区别与联系呢?
区别:
联系:
对同一个行为,可以使用状态图和活动图从不同的角度来描述。
行为图主要用于分析、设计阶段描述对象的行为。一般状态图适合描述单个对象的状态变化情况。活动图则适合描述一个工作过程,多个对象之间的合作。活动图描述的过程一般要跨越多个用例。
相关文章推荐
- 类型对指针运算的影响
- 巴伦电路基础
- [LeetCode] Delete Node in a Linked List
- 51nod 1270 数组的最大代价 (DP_好题)
- 在按一次退出App
- 平行二叉堆和优先队列
- 如何把一个字符串格式化位4位一个空格
- 使用Ant构建项目
- Python + OpenCV边沿检测(Edge Detection)
- google git resource
- iOS 生成规范注释的工具
- iOS 图片比例压缩
- Java语言解决约瑟夫环问题(ArrayList实现)
- Ueditor绝对路径问题
- 文件结尾判断feof , EOF
- CSS 属性的默认值
- 用java进行简单的万年历编写
- 二叉树
- 图片轮播器的两种实现方式(ScrollView与collectionView)
- Python + OpenCV 直方图均衡 (Histogram Equalization)