236. 상태 다이어그램 (State Machine Diagram) - UML 동적 다이어그램 객체 상태 변화 생명주기 전이(Transition) 이벤트 실시간 시스템 임베디드

핵심 인사이트: (235번 시퀀스의 짝꿍) 235번 시퀀스는 3명의 배우가 시간을 따라 핑퐁 치며 노는 영화였다. 근데 배우 3명이 아니라, 오직 주인공 1명(하나의 객체)의 내면세계가 어떻게 변하는지 심리 묘사를 하고 싶어졌다. "야! 네가 만든 '세탁기(객체)'를 봐! 세탁기는 처음엔 [대기 상태]였다가, 버튼(이벤트)을 누르면 [물 받기 상태]로 핑 돌변하고, 끝나면 [탈수 상태]로 또 확 변하잖아! 이 세탁기가 태어나서 고철로 죽을 때까지(생명주기) 속으로 어떤 감정 변화(상태)를 겪는지, 그리고 무슨 버튼(자극)을 찔렀을 때 그 상태가 돌변하는지(전이)를 네모 상자와 화살표로 둥글둥글하게 그려내!! 밖에서 볼 땐 세탁기 1대지만, 그 속은 상태 변화로 미친 듯이 소용돌이치고 있음을 증명하는 엑스레이 동영상, 상태 다이어그램이다!!" 하나의 캡슐 안에서 벌어지는 생애 주기 감정 변화의 기록, 상태 다이어그램이다.

Ⅰ. 단일 객체의 내면세계에 집중 (동적 다이어그램)

  • 235번 시퀀스는 A객체와 B객체의 통신(대화)에 집착합니다.
  • 반면, **상태 다이어그램(State Machine Diagram)**은 남들과의 통신보다는, 하나의 핵심 객체(예: 엘리베이터, 주문서, 세탁기)가 홀로 자신의 일생(Life Cycle) 동안 어떤 내부 '상태(State)'의 변화를 겪는가에 광적으로 집착하는 동적(행위) 다이어그램입니다.
  • 임베디드 기기(자판기, 세탁기)나 실시간 제어 소프트웨어, 게임 캐릭터 상태(앉기 ➜ 뛰기 ➜ 공격)의 코드를 짤 때 가장 완벽한 뼈대 도면입니다.

Ⅱ. 상태 다이어그램의 3대 핵심 조각 🌟 기출 빈출 🌟

1. 상태 (State) - 둥근 네모 상자 🌟

  • 개념: 객체가 특정 시간 동안 어떤 속성값을 유지하며 어떤 활동(Activity)을 수행하며 머물러 있는 '현재의 꼬라지'를 뜻합니다.
  • 그림 모양: 모서리가 둥글게 깎인 네모(둥근 직사각형)로 그립니다.
  • 예시: [대기 중], [결제 완료], [배송 중]

2. 시작점과 종료점 - 까만 점과 겹동그라미

  • 시작점: 꽉 찬 까만 동그라미(). 객체가 메모리에 태어나는(New) 탄생 지점입니다.
  • 종료점: 까만 동그라미를 감싸는 겹동그라미(). 객체가 역할(생애)을 마치고 메모리에서 죽는(Destroy) 묘지입니다.

3. 상태 전이 (Transition)와 이벤트(이유) - 화살표 🌟

  • 개념: 객체가 둥근 방(상태)에 가만히 있다가 다른 상태의 방으로 튕겨 나가는 과정(전이)입니다. 방을 옮겨갈 때는 반드시 "왜 옮기는데?" 라는 외부의 충격(Event)이 필요합니다.
  • 그림 모양: 방과 방을 잇는 화살표 선() 위에, 상태를 돌변하게 만든 충격 사건(이벤트 명)을 텍스트로 적어줍니다.
  • 예시: [대기 중] ➜➜ (버튼 누름 Event) ➜➜ [세탁 중]

Ⅲ. 237번 액티비티(Activity) 다이어그램과의 미묘한 차이 🌟 헷갈림 주의 🌟

둘 다 동그란 네모 상자라 시험에서 미치도록 헷갈리게 냅니다.

  • 상태(State) 다이어그램: 주인공이 **'무슨 상태에 머물러 있는가?(명사형)'**에 집착합니다. 외부에서 버튼(이벤트)을 찔러줘야만 다음 방으로 옮겨갑니다. (수동적)
  • 액티비티(Activity) 다이어그램: 주인공이 **'무슨 짓(행동/로직)을 빡세게 하고 있는가?(동사형)'**에 집착합니다. 계산이 다 끝나면 자동으로 척척 다음 방으로 넘어가는 알고리즘 워크플로우에 가깝습니다. (능동적)

📢 섹션 요약 비유: **상태 다이어그램(State Machine Diagram)**은 음료수 자판기(객체)의 뇌 속에 든 **'감정 기복(상태) 시나리오 설계도'**입니다. 처음에 전기를 꽂으면 까만 점(시작점)에서 출발해 자판기는 [동전 대기 상태]라는 둥근 방에 멍때리며 앉아있습니다. 아무 짓도 안 합니다. 이 멍때림을 깨부수는 건 외부의 자극(이벤트 전이)뿐입니다. 손님이 '500원'을 구멍에 쑤셔 넣는(Event 발생) 순간! 자판기는 화들짝 놀라며 1초 만에 화살표를 타고 [음료 선택 가능 상태]라는 다음 둥근 방으로 핑 돌변(상태 전이 Transition)합니다. 손님이 버튼을 누르면 또다시 [음료 방출 상태]로 핑 변합니다. 음료가 다 떨어지면 [품절 상태] 방으로 갑니다. 자판기라는 기계 1대는 가만히 제자리에 서 있지만, 그 기계의 뇌 속 램(RAM) 안에서는 동전, 버튼, 품절이라는 외부 자극(Event)을 맞을 때마다 수십 개의 둥근 방(상태)을 미친 듯이 텔레포트하며 널뛰기하는 내면의 상태(감정) 변화 과정(생명주기)을 한눈에 보여주는 임베디드 설계의 바이블 다이어그램입니다.