태그 보관물: oop

캡슐화와 정보 숨김

본능적으로 모호함을 피하려는 프로그래머들 사이에서도 캡슐화(encapsulation)라는 용어의 의미는 명확하지 않다. 가장 많이 사용되는 몇 가지 정의는 다음과 같다.

  • 정보 숨김(information hiding)과 동의어
  • 구현 숨김(implementation hiding)과 동의어
  • 데이터 숨김(data hiding)과 동의어
  • 응집을 통한 새로운 정체성 형성

정보 숨김의 정의는 논란의 여지가 없다. 70년대 초 David Parnas는 어려운 설계 결정과 변경될 가능성이 높은 설계 결정을 파악하는 것으로 모듈화를 시작하라 제안했고 이런 결정들이 다른 모듈로부터 숨겨지는 것을 정보 숨김이라 표현했다.

계속 읽기

JavaScript의 privileged 메서드가 끔찍한 이유

예제 코드가 약간의 오해의 소지를 가지고 있어 조금 수정했습니다.
– 2014년 6월 29일 –

요즘 가장 뜨거운 관심을 받고있는 프로그래밍 언어인 JavaScript는 정보 보호(또는 은닉, information hiding)를 언어 스펙 차원에서 지원하지 않습니다. 이는 JavaScript는 진정한 OOPL(object-oriented programming language)이 아니라고 주장하는 사람들의 근거가 되기도 합니다. 여기에 대해 Douglas Crockford는 다음과 같이 변호합니다.

Some argue that JavaScript is not truly object oriented because it does not provide information hiding. That is, objects cannot have private variables and private methods: All members are public. But it turns out that JavaScript objects can have private variables and private methods. Of course, few understand this because JavaScript is the world’s most misunderstood programming language.

JavaScript가 개체의 멤버 접근을 제한할 수 있다며 이것이 잘 알려지지 않은 것을 안타까워합니다.

계속 읽기