< 이전 | 다음 >

학습 5: 상태 차트 작성

이 학습에서는 두 가지 상태 차트를 작성합니다. 상태 차트는 상태 간의 전이를 유발하는 오퍼레이션 및 이벤트와 수명 기간 동안 입력할 수 있는 상태를 포함하여 액터, 유스 케이스 및 클래스의 동작을 정의합니다. 상태 차트 다이어그램은 모델에서 단추 및 센서와 같은 두 개의 클래스 오브젝트에 대한 동작을 정의하며 각 상태 간의 상태 전이가 전이 화살표로 표시됩니다.

센서 클래스에 대한 상태 차트를 작성하려면 다음을 수행합니다.

  1. Rational® Rhapsody®를 시작하고 이미 열려 있지 않은 경우 자동차 센서 모델을 여십시오.
  2. Rational Rhapsody 브라우저에서 디자인 패키지를 펼치고 센서 클래스를 마우스 오른쪽 단추로 클릭한 후 새로 추가 > 다이어그램 > 상태 차트를 선택하십시오. 상태 차트 요소가 브라우저에 추가됩니다.
  3. 그리기 도구 모음에서 을 클릭하십시오.
  4. 그리기 영역의 왼쪽 상단 모서리 근처를 클릭하고 오른쪽 하단 모서리로 끌어 큰 직사각형을 그리십시오.
  5. 기본 이름을 Active로 바꾸고 Enter를 누르십시오.
  6. 활성 상태 내에 두 개의 상태를 그리고 이름을 IdleSensing으로 지정하십시오.
  7. 기본 상태 전이 단추 상태 전이 단추를 클릭하고 Idle 상태의 왼쪽을 클릭하십시오.
  8. 기본 상태 전이 행을 Idle 상태에 연결하십시오.
  9. 상태 전이 단추를 클릭하고 Idle 상태의 오른쪽 경계를 클릭한 후 상태 전이를 Sensing 상태로 그리십시오.
  10. 상태 전이 이름을 evToggle로 지정한 후 Ctrl+Enter를 누르십시오.
  11. 다른 상태 전이를 Sensing에서 Idle로 그리고 이름을 evToggle로 지정하십시오.
  12. 다른 상태 전이 행을 Sensing 상태에서 기존 상태로 다시 그리십시오.
  13. 12단계에서 그린 상태 전이 행을 두 번 클릭하여 기능 대화 상자를 여십시오.
  14. 트리거 상자에 tm(1000)을 입력하십시오.
  15. 조치 필드에서 Enter를 누르고 ++pulse;itsDisplay.show(pulse);와 같은 두 개의 코드 행을 입력하십시오.
  16. 확인을 클릭하십시오. 다이어그램이 다음 그림과 같이 표시되어야 합니다.
    센서 상태 차트 다이어그램

단추 상태 차트 작성

이제 단추 클래스를 정의하는 두 번째 상태 차트를 작성합니다. 단추에는 Up, Down 및 Held와 같은 세 가지 상태가 있습니다.
  1. 브라우저에서 디자인 패키지를 확장하고 단추 클래스를 마우스 오른쪽 단추로 클릭한 후 새로 추가 > 다이어그램 > 상태 차트를 선택하십시오. 상태 차트 요소가 브라우저에 추가됩니다.
  2. 세 개의 상태를 그리고 이름을 Up, DownHeld로 지정하십시오.
  3. 기본 커넥터를 Up 상태에 추가하십시오.
  4. 상태 전이를 Up에서 Down으로 추가하고 이름을 evPress로 지정하십시오.
  5. 두 번째 상태 전이를 Down에서 Up으로 추가하고 이름을 evRelease로 지정하십시오.
  6. 두 번째 상태 전이를 두 번 클릭하여 기능 창을 여십시오.
  7. 조치 필드에서 Enter를 누르고 itsSensor->GEN (evToggle);을 입력하십시오.
  8. evRelease라는 세 번째 상태 전이를 Held에서 Up으로 추가하고 확인을 클릭하십시오.
  9. 네 번째 상태 전이를 Down에서 Held로 추가하십시오.
  10. 네 번째 상태 전이를 두 번 클릭하여 기능 창을 여십시오.
  11. 트리거 상자에 tm(1000)을 입력하십시오.
  12. 조치 필드에서 Enter를 눌러 공백을 남겨 두고 itsSensor->GEN(evReset);을 입력한 후 확인을 클릭하십시오.
다이어그램이 다음 그림과 같이 표시되어야 합니다.

단추 상태 차트 다이어그램
학습 체크포인트

이 학습에서 학습한 내용은 다음과 같습니다.
  • 상태 차트가 모델에서의 동작을 정의하는 방법
  • 상태 차트 작성 방법

다음 학습에서는 모델에 대한 코드를 생성합니다.

< 이전 | 다음 >

피드백