객체지향 프로그래밍은 객체에 데이터와 프로시저를 함께 포함하는 방식으로, 객체와 객체 간의 상호작용은 프로시저를 호출하는 방식으로 이루어진다.
객체란 무엇인가?
객체는 특정한 기능을 제공하는 단위로, 그 기능에 의해 정의된다. 객체와 객체 간의 상호작용은 메시지를 주고받는 것으로 표현할 수 있다.
캡슐화란?
캡슐화는 데이터와 그에 관련된 기능을 하나로 묶는 것을 말한다. 이 과정에서 객체는 내부에서 어떻게 기능을 구현했는지 외부에 숨긴다. 캡슐화는 다음과 같은 장점을 가진다:
- 요구사항이 변경됐을 때, 내부 구현만 변경하면 되므로, 코드 전파를 최소화할 수 있다.
- 기능의 의도가 명확해지므로, 코드 이해도를 높일 수 있다.
캡슐화를 위한 규칙
캡슐화를 지원하기 위한 몇 가지 규칙이 있다:
- Tell, Don’t Ask
- 데이터를 단순히 전달하는 것이 아니라, 데이터를 처리하는 역할을 한다.
- Demeter’s Law
- 메서드에서 생성한 객체의 메서드만 호출한다.
- 파라미터로 받은 객체의 메서드만 호출한다.
- 필드로 참조하는 객체의 메서드만 호출한다.