[javascript] 캡슐화와 정보 은닉의 개념

캡슐화(encapsulation)와 정보 은닉(information hiding)은 객체지향 프로그래밍에서 중요한 개념입니다. 이 두 가지 개념은 코드의 유지보수성과 보안성을 높여주는 데 도움이 됩니다.

캡슐화(encapsulation)

캡슐화란 관련된 데이터와 함수를 하나로 묶는 것을 말합니다. 객체의 내부 작동 방식이 변경되더라도 외부에 영향을 끼치지 않도록 하는 것이 목표입니다. JavaScript에서는 클래스를 사용하여 캡슐화를 구현할 수 있습니다.

예를 들어, 다음은 JavaScript에서 클래스를 사용하여 캡슐화하는 예시입니다.

class Circle {
  constructor(radius) {
    this._radius = radius;
  }

  get radius() {
    return this._radius;
  }

  set radius(value) {
    this._radius = value;
  }

  getArea() {
    return Math.PI * this._radius * this._radius;
  }

  // other methods
}

위의 예시에서 _radius 변수와 get, set 메서드를 이용하여 캡슐화를 구현하고 있습니다. 이렇게 하면 _radius에 직접 접근하는 것을 막을 수 있고, 필요한 경우에만 특정한 규칙에 따라 변수에 접근하도록 할 수 있습니다.

정보 은닉(information hiding)

정보 은닉은 캡슐화를 통해 구현되는 개념으로, 객체의 세부 구현을 외부에 감추는 것을 의미합니다. 다른 객체에서 직접적으로 접근하지 못하도록 private한 상태로 유지하는 것이 중요합니다. JavaScript에서는 일반적으로 변수나 메서드 이름 앞에 언더스코어(_)를 붙여서 정보 은닉을 흉내냅니다.

예를 들어, 위의 Circle 클래스에서 _radius 변수는 정보 은닉을 위해 언더스코어로 시작합니다. 이렇게 함으로써 외부에서 직접 접근하는 것을 방지하고, get, set 메서드를 이용하여 간접적으로 접근하도록 할 수 있습니다.

요약

캡슐화와 정보 은닉은 객체지향 프로그래밍에서 중요한 원칙으로, 코드의 유지보수성과 보안성을 높이는 데 도움을 줍니다. JavaScript를 포함한 여러 프로그래밍 언어에서 이러한 개념을 적절히 활용하여 안정적이고 유연한 코드를 작성할 수 있습니다.

더 많은 정보는 MDN web docs에서 확인할 수 있습니다.