所在位置:答疑 - 内容   
给定一个冰箱,如何获取其有几种状态
 

文字
More options Jul 13 2010, 10:31 pm
状态机建模时,如何确定状态?PPT 里说定义属性然后用属性组合成状态,然后通常情况下,给定一个类,属性往往都不知道,如何获取?
例如:给定一个冰箱,如何获取其有几种状态
UMLChina
More options Jul 14 2010, 4:10 pm
这就是状态机的作用。
黄蓉对郭靖说,郭靖,你不爱我了。她是说郭靖的状态变了,从"爱她"变到"不爱她"。黄蓉如何做出判断?她不需要也不能观察郭靖的内部各个属性值,只是通过向郭靖发送调用(例如:陪我逛街)时,郭靖的动作(action)的变化(怎样才算变了,黄蓉说了算)。
但郭靖的动作不会无缘无故地变化,内因是某个或某些属性值发生了变化,例如老板要求他"加班",生理属性值下降,或者公司另有美女向他"放电",心理属性值下降,或者两者兼有...
"陪女友逛街"、"加班"、"接受美女放电"这些外部行为之间是(通过改变属性值)相互影响的,状态机就是要反映这些知识。
冰箱有几个状态?不是从属性去找,而是从行为来找,而且和系统上下文相关。针对能够对冰箱施加的各个行为,逐一思考,如果对冰箱施加了这个行为,会怎么样。例如 有个"除霜"旋钮,扭动它,冰箱从"正常"状态进入了"除霜"状态,还有个风扇开关,说明"除霜" 状态可能还有子状态"风扇开","风扇关"....行为可能会 修改许多内部属性值,有时干脆也不需要或说不清内部属性值是哪些,用一个内部的state 属性代表。
对整个冰箱作状态机可能会比较复杂,一般是针对冰箱的各个部件分别画,如"温控器","灯"...我对冰箱的知识仅限于可以拉开门拿个东西喝,所以就没法画出来了。

文字
More options Jul 17 2010, 2:35 am
潘老师:
能讲一下协议状态机与行为状态机的区别吗?
UMLChina
More options Jul 25 2010, 8:31 pm
协议状态机我没有用过,根据《UML 参考手册》protocol state machine 词条,协议状态机与行为状态机的区别是: 转换(transition)不产生效果(effect,即action、message...等),转换可以有前置条件、后置条件。
也就是说线上只有转换的事件。
我的理解:
协议状态机只保留对外的事件(卖)部分,略去了效果(做)的部分,也是一种卖和做的分离,把对象行为的控制逻辑部分和内部算法部分分离。用前置条件和后置条件取代内部算法。