일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 윈도우10
- Android
- Windows11
- win32com
- 윈도우11
- python
- windows
- 파이썬
- 문자열
- VBA
- 엑셀
- Excel
- python3
- office
- 비주얼베이직
- git
- 안드로이드
- matlab
- pythongui
- pyqt5
- Windows10
- Outlook
- 파이썬3
- html
- 오피스
- 파워포인트
- pandas
- 아웃룩
- 파이썬GUI
- 깃
Appia의 IT세상
[Stateflow] Hierarchical State(State의 계층 구조) 본문
오늘은 State 계층구조라는 주제로 이야기를 드리고자 합니다. 많은 프로그래밍 언어들이 각 계층 구조를 가지게 됩니다. 그 계층 구조에 대해서 간단히 살펴 보겠습니다. 그러면서 간단히 계층 구조를 만드는 방법 및 각 장점에 대해서 살펴 보고자 합니다.
State 계층구조
State는 계층 구조를 가질 수 있습니다. 즉 이 말은 State안에 또다른 State들을 가질 수 있다는 말입니다. 흔히 코드와 비슷하게 생각하셔도 됩니다. State 안의 계층화를 해두면 여러 상태에서 공통적으로 사용하는 Action에 대해서 한 곳에서만 생성해도 되는 장점이 있습니다. 물론 항상 좋다고 할 수는 없지만, 저는 그대로 계층화 되어 있는 State의 장점은 확실히 더 많다고 생각합니다.
여기서 흔히 말하는 Parent State를 Superstate라고 이야기드 합니다. 그리고 Childstate를 Substate라고 합니다. 그럼 다음과 같은 그림에서는 제가 몇가지 수정을 해서 다시 한번 보겠습다.
이 로직에서 C= 0; 이라는 Action은 반복 되는 Action입니다. 하지만 각 State에서 동작을 하게 되어 있습니다. 이런 부분들을 다음과 같이 변경해보도록하겠습니다.
그러면 C = 0이라는 동작이 이루어지게 됩니다. 물론, 상위 State에서 Substate가 있을 경우 바로 Substate에서 하나의 State로 향하게 됩니다. 따라서 계층화로 인하여 조금 더 가독성 및 로직에 부드러움을 추가할 수있다고 생각합니다. 하지만 앞서서 말한 바와 똑같이 이 또한 개발자의 선택입니다.
계층 구조 만들기(Superstate) |
간단한 예제로 계층 구조를 만들어 보도록 하겠습니다. 일단 Superstates를 만들 부분에 대해서 선택합니다.
그런 이후 선택한 부분 위에서 마우스 오른쪽 버튼을 눌러 줍니다.
여기에서 [Create Container] - [Create Superstate from Selection]을 선택해 주십니다.
그런 후 State의 이름을 입력해주시고, Default Transition으로 Superstate를 연결해주시면 끝납니다.
Subchart
물론, 이 뿐 아니라 Subchart라는 개념도 존재합니다. 이 개념은 Simulink를 알고 있으신 분들에게 조금 더 쉬운 개념일 수 있습니다. Superstate와 크게 다르지 않지만 이 부분은 Simulink의 Subsystem이라고 생각하시면 됩니다. 즉 크게 다르지 않지만, 안의 내용에 대해서 숨겨 있다고 생각하시면 됩니다.
위의 계층 구조 만들기에서 [Create Container] - [Create Subchart from Selection]를 생성하시면 됩니다. 그럼 다음과 같이 만들어 집니다.
Subchart - Superstate는 근본적으로 크게 다르지 않습니다. 하지만 보여지는 관점 등과 다양한 부분에서 미세한 차이가 있을 수 있습니다. 다음 포스팅에는 데이터의 전역화 / 차트내에서의 지역함수로서의 사용등에 대해서 한번 살펴보도록 하겠습니다.
'Programming > Stateflow' 카테고리의 다른 글
[Stateflow] Chart의 Level에 따른 데이터 관리, Histroy Junction, Parallel state (0) | 2019.12.26 |
---|---|
[Stateflow] Event 개념 및 생성, 활용 (0) | 2019.12.26 |
[Stateflow] State안의 Flowchart, Mealy Chart, Moore Chart (0) | 2019.12.25 |
[Stateflow] Stateflow Logging방법 ,Super step (0) | 2019.12.24 |
[Stateflow]State Action, Condition Action과 Transition Action (1) | 2019.12.24 |