2013-06-30 5 views
3

동작 (메서드 본문)은 상태 컴퓨터 또는 활동 일 수 있습니다. 활동은 절차 코드와 동일하므로 이해하기 쉽습니다.상태 머신 다이어그램을 UML에서의 동작에 대한 동작으로 어떻게 표현할 수 있습니까?

상태 시스템이 작동을위한 동작으로 어떻게 사용되는지 이해할 수 없습니까?

간단한 사례를 제공해 주시겠습니까?

--- 참고 ---

작동 사양 전용 요소입니다 - 객체 지향 프로그래밍 언어 메소드 서명으로 상상. 이름과 매개 변수 목록이 있습니다.

행동은 (다른 것들 중에서) 어떤 동작 (또는 수신과 같은 또 다른 행동 특성)이 호출 될 때 무엇을하는지 - 그것을 메서드 본문으로 상상해보십시오.

+0

상태 머신은 프로그램의 다른/가능한 상태 (활동 없음), 휴면 상태, 실행 중, 대기 중 등의 객체/모듈 상태와 같은 것을 나타내는 데 사용됩니다. D –

+0

당신의 코멘트에 대해 @ user2511414 감사하지만 UML 사양 을 통해 읽으 셨습니다. 동작 (13 절 Common Behavior)은 세 가지 메커니즘을 통해 지정할 수 있습니다 : State Machines, 활동 및 상호 작용 다음 세 가지 방법 중 어느 것을 사용해야하는지는 주로 행동. – user2019510

+0

나는 상태 머신에서 행동을 나타낼 것이지만 일반적으로 (예 : 실행 상태, 지속,로드, 종료 등), 각 주에는 어떤 활동이 포함될 것입니다. –

답변

2

"할 수 있기 때문에 그냥해야한다는 뜻은 아닙니다."

즉, 상태 모델을 사용하여 연산의 동작을 정의하는 것은 합법적 일 수 있지만 반드시 그런 것은 아닙니다. 나는 그것이 유용했을 시나리오를 본 적이 없다. 그러나 물론 그것이 존재하지 않는다는 것을 의미하지는 않습니다. 또한 UML 사양 중 일부에서 응집력 부족 현상이 나타납니다.

작업 (둘러싸는 클래스가 아닌)이 상태 별 동작을하는 것이 적절할 것입니다. 정말로 고안된 예제를 사용하려면 : TcpConnection.close() 메소드를 고려하십시오. 연결이 이미 닫힌 경우 close()을 호출해도 아무런 효과가 없습니다. 연결이 열려 있으면 close()을 호출하면 연결이 닫힙니다.

[그러나 다음과 같은 예는 특정 메소드 모델에 대한 필요성을 결코 발견하지 못했음을 보여줍니다. 상태 모델은 실제로 클래스가 아니라 조작에 속합니다.

hth.

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.) 
    } 

}