行为(方法主体)可以是状态机或活动 - 活动易于理解,因为它们等同于过程代码。
我不明白状态机如何用作操作的行为?
你能提供一个简单的例子吗?
--- ---注
Operation是一个仅限规范的元素 - 将其想象为OO编程语言中的方法签名。它有一个名称和参数列表。
行为是(除其他事项外)操作(或其他行为特征,如接收)在调用时的作用 - 将其想象为方法的主体。
答案 0 :(得分:2)
“只是因为你的意思并不代表你应该”。
换句话说:使用状态模型来定义操作的行为可能是合法的 - 但这并不意味着你应该这样做。我从来没有遇到过它会有用的场景;但当然这并不意味着它们不存在。这也是一些UML规范缺乏凝聚力的症状。
在操作(而不是封闭类)具有有状态行为的情况下是适当的。要使用一个非常人为的例子:考虑一个方法TcpConnection.close()
。如果连接已关闭,则调用close()
将无效。如果连接已打开,则调用close()
将关闭它。
[但是:作为一个例子,也说明了为什么我从未发现需要特定于方法的状态模型。状态模型真的属于类,而不是操作]。
第h
答案 1 :(得分:2)
了解什么是行为的最简单方法:它可以更改成员变量的值。 例如。
class MyClass
{
public Integer i = 0;
public void Operation1(){
i++; //This could be an interpretation of of opaque action from an Activity
};
public void RunStateMachine(){
//You can use state's entry/doActivity/exit behavior. E.g. put "i++" in any of them
//You can use transition's effect behavior. E.g. put "i++" in it
//state's entry/doActivity/exit, transition's effect can specify to another behavior, e.g. run another Activity or statemachine,
//UML provides a good recursive way to let user to model what ever they wanted.
//NOTE: When using statemachine as behavior, you should know that the context (e.g. MyClass my = new MyClass(); here my is the context) of the statemachine
//is expecting an EventOccurence if the transitions has triggers.
//If no triggers are defined in any of the transitions in a statemachine, it can be think of being downgraded as an activity
// (well, it is not conforming to UML, but you can think in that way.)
}
}