객체지향이란 무엇일까? (2)

굴착드릴·2025년 4월 17일

Drilling

목록 보기
8/12

캡슐화

지난번 살펴본대로 객체지향 초기 캡슐화의 핵심 아이디어는 결합도 감소입니다.

  • 객체를 독립적 단위로 분리 → "데이터 + 메서드" 묶음으로 결합도를 낮춤.
  • "객체는 다른 객체의 내부를 모르고, 메시지(메서드 호출)로만 통신한다."

하지만 현실에선 이전과 같은 문제가 발생하는 경우가 많았습니다.

지켜지지 않는 캡슐화

SIMULA67의 한계는 바로 객체 내부 변수에 대한 직접 접근을 프로그램적으로 제한하지 않았다는 것입니다.

SIMULAR67는 관례적인 규칙 (_varname와 같은 변수 네이밍)에 의존했습니다.

절차지향적 프로그래밍에 익숙해져있던 개발자들은 메소드를 통한 간접 접근이 아닌 변수에 직접 접근하는 경우가 많았습니다.

정보은닉 개념 등장

이론 정립

1972년 데이비드 파나스는 다음과 같이 주장하며 정보은닉 개념 이론을 주장했습니다.

"모듈은 자신의 내부 구현을 완전히 숨겨야 하며, 오직 인터페이스만 노출해야 한다."

출처: "On the Criteria to Be Used in Decomposing Systems into Modules" (1972).

언어적 지원

이 후 SIMULAR67의 영감을 받아 만들어진 여러 객체지향 언어들에서 정보은닉을 지원하기 시작했습니다.

Getter/Setter가 처음 등장했습니다.

Smaltalk (1970년대)

Smaltalk은 모든 변수는 기본적으로 은닉되며 accesser를 통해 접근하도록 하였습니다.

C++/JAVA

C++와 JAVA는 private 접근제어자를 도입하였습니다.

Reference

"On the Criteria to Be Used in Decomposing Systems into Modules" (1972).

profile
두두두두..

0개의 댓글