객체지향이 흔히 현실 세계를 모방하는데 유리하기 때문에 좋다고 말한다. 하지만 이는 사실이 아니다. 예를들어 실제세계에서는 우리가 우유를 마셔서 우유의 양이 수동적으로 줄어든다. 하지만 객체지향에서는 우유를 마신다라는 메세지를 보내고 우유는 그 메세지를 수신해서 자율적으로 자신의 양을 줄인다. 이는 현실세계와 굉장히 다르다.
객체 지향은 현실 세계의 객체의 의미들을 메타포로 인용해 소프트웨어 객체로 새로운 세계를 만드는 것이다.객체지향 세계의 객체는 상태와 행동을 가지고 있고, 행동을 통해서만 상태가 변경된다. 그 행동에 대해서 어떤 영향을 줄지는 상태에 따라 다를 수 있다. 객체가 행동하게 하는 수단은 오직 메세지만 존재하고 그 메세지에 대해서 어떻게 행동할지는 객체가 자율적으로 결정할 수 있다.
영화 인사이드 아웃을 보면 기쁨, 슬픔, 버럭, 까칠, 소심이 들이 각자 역할과 책임을 가지고 자율적으로 행동한다. 객체지향 프로그래밍도 이렇게 하는 건가 라는 생각이 들었다. 프로그램이 해야 할 일을 책임 단위로 아주 작게 쪼개고 그 일을 할 객체에게 할 일을 할당한다. 기존에는 일을 어떻게 할까 고민 했지만 객체지향 세계에서는 그 일을 어떻게 시킬지, 서로 어떻게 협력할지로 문제가 바뀐다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!