Contract 계약
두 객체(또는 모듈) 사이의 구체적인 약속 → 이 입력을 주면, 이런 결과를 보장한다
A 은행에 돈을 예금하면, 연 5%의 이자를 더해준다고 한다. 이때, 이것을 A 은행의 contract라고 할 수 있다. 나는, A 은행이 어떤 방식으로 이자를 마련하는지는 모른다. 하지만, 계약에 따라 연 5%의 이자를 보장받는다.
Protocol 규약
여러 객체/시스템 간의 상호작용 방식 전체에 대한 규칙 → 이 순서로, 이런 호출/응답해야 동작한다
contract는 정적인 snapshot이다. 반면, protocol은 동적인 time-line이다.
일종의 state machine이라고 생각하면 정확하다.