이 글은 객체지향 설계 개념을 차례로 살펴보는 작은 시리즈의 다섯 번째 글입니다.
- 메서드 시그니처 - 계약에 남긴 서명(https://likebnb.tistory.com/183)
- 계약 - 자유를 줄이고 예측가능성을 만드는 방식(https://likebnb.tistory.com/184)
- 인터페이스 - 경계를 지키는 이름(https://likebnb.tistory.com/185)
- 프로토콜 - 상호작용의 질서(https://likebnb.tistory.com/186)
- 스테이트 머신 - 시공간의 맥락(https://likebnb.tistory.com/187)
- 이벤트 - 코드의 흐름을 삼키다(https://likebnb.tistory.com/188)
프로토콜은 사건들이 오가는 시간의 질서를 말한다.
어떤 일이 먼저 일어나고, 무엇이 뒤따르는지에 대한 약속이다.
하지만 시간의 순서만으로는 충분하지 않다.
같은 사건이라도 언제나 같은 의미를 갖는 것은 아니기 때문이다.
어떤 사건은 특정한 상황에서만 가능하고,
어떤 사건은 그 상황이 아니라면 아예 성립하지 않는다.
그래서 시스템은 언제나 어딘가의 상태에 서 있다.
여기서 말하는 state라는 단어는 라틴어 status에서 왔다.
무언가가 어떤 자리에 서 있는가, 어떤 형편에 놓여 있는가를 가리키는 말이다.
그리고 machine이라는 말은 라틴어 machina에서 왔다.
정해진 구조와 규칙에 따라 일정하게 작동하는 장치를 뜻한다.
이 두 단어가 만나면 뜻이 또렷해진다.
어떤 상태에 서 있는지를 분명히 하고,
그 상태에 따라 움직이는 장치.
그래서 시스템은 언제나 어떤 상태 위에 서서 사건을 맞이한다.
그리고 그 상태는
어떤 사건이 가능하고
어떤 사건이 아직 일어날 수 없는지를 조용히 규정한다.
사건이 찾아오면 시스템은 그 상태에서 한 걸음 옮겨간다.
그렇게 시스템은 상태에서 상태로 이동하며 시간을 지나간다.
우리는 이런 구조를 state machine이라고 부른다.
프로토콜이 사건들의 시간을 만든다면,
상태머신은 시스템이 서 있을 수 있는 상태의 공간을 만든다.
그래서 시스템의 상호작용은 언제나
시간의 흐름과 상태의 자리, 그 두 가지가 만나는 시공간의 맥락 속에서 이루어진다.
이 시리즈의 흐름
메서드 시그니처 → 계약 → 인터페이스 → 프로토콜 → 스테이트 머신
코드에 남긴 서명에서 시작해
상호작용의 질서를 거쳐
시스템이 움직이는 시공간의 맥락까지 살펴보았다.
'일하는 중에' 카테고리의 다른 글
| 객체가 사는 법 #6. 이벤트 - 코드의 흐름을 삼키다 (0) | 2026.04.01 |
|---|---|
| 객체가 사는 법 #4. 프로토콜 - 상호작용의 질서 (0) | 2026.03.20 |
| 객체가 사는 법 #3. 인터페이스 - 경계를 지키는 이름 (0) | 2026.03.18 |
| 갹체가 사는 법 #2. 계약 - 자유를 줄이고 예측 가능성을 만드는 방식 (0) | 2026.03.17 |
| 객체가 사는 법 #1. 메서드 시그니처 - 계약에 남긴 서명 (0) | 2026.03.16 |