이러한 관계를 따르는 이유는 암묵적인 은유이기 때문이다.
- • 함수 호출 구문 print_time(start)에서 함수는 능동적인 에이전트가 된다. “이봐, print_time! 네가 출력할 객체가 여기 있어”라고 말하는 식이다.
- • 객체 지향 프로그래밍에서는 객체가 능동적인 에이전트가 된다. start.print_time() 같은 메서드 호출은 “이봐, start! 너 자신을 출력해줘”라고 말하는 식이다.
이러한 관점의 변화가 더 뛰어나 보일 수는 있지만, 유용한가는 명확하지 않다. 지금까지 우리가 살펴본 예제에서도 이러한 관점이 유용하지 않을 수 있다. 그러나 책임을 함수에서 객체로 옮기면 더 다재다능한 함수(또는 메서드)를 작성할 수 있고, 코드를 유지보수하거나 재사용하기가 더 쉬워진다.
연습삼아 16.4 프로토타입 대 계획(270쪽)에서 작성한 time_to_int를 메서드로 재작성하라. int_to_time도 메서드로 작성하고 싶다고 생각할 수 있지만, 이를 호출할 객체가 없기 때문에 실제로는 의미가 없다.