본문으로 바로가기

캡슐화란? 은닉성이다!!!


캡슐화는 중요한 데이터를 보존,보호하는 것입니다.

캡슐화(encapsulation)는 일반적으로 연관 있는 변수와 함수를 클래스로 묶는 작업을 말합니다. 그런데 이 작업은 클래스 만드는 작업과 비슷하다고 여길 수도 있습니다. 하지만 캡슐화에는 은닉성이란게 있어서 클래스에 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하게 할 수 있습니다.



일반 OOP에서 지원하는 캡슐화

일반 OOP 언어에서는 접근지정자를 제공

  • public
  • protected
  • private


자바스크립트에서 캡슐화

  • 기본 public
  • private,protected 에 _ 붙여 선언


JavaScript
function MyClass() {

    //public 프로퍼티
    this.프로퍼티이름 = 값;

    //private/protected 프로퍼티
    this._프로퍼티이름 = 값;
}

// public 메서드
MyClass.prototype.메서드이름 = function() {

}
// private/protected 메서드
MyClass.prototype._메서드이름 = function() {

}


_(underBar) 를 붙이는 것은 외부에서 언더바를 붙힌 프로퍼티나 메서드에 접근하여 사용하지 말라는 암묵적인 약속입니다. 

클래스(생성자함수)명의 시작문자를 대문자로 사용하는 것과 마찬가지입니다.


캡슐회는 만일의 상황(타인이 외부에서 조작)을 대비해서 외부에서 특정 속성이나 메서드를 시용자가 사용할 수 없도록 숨겨놓은 것입니다.


캡슐화

  • 객체의 필드(속성), 메소드를 하나로 묶고, 실제 구현 내용을 외부에 감추는 것을 말한다.
  • 외부 객체는 객체 내부의 구조를 얻지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
  • 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다.
  • 자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용한다.




상속(Inheritance)이란

현실 세계에서 상속이란 부모가 자식에게 물려주는 행위, 부모가 자식을 선택해서 물려주는 행위이지만 객체지향 프로그래밍에서의 상속은 현실 세계와 반대로 자식이 부모를 선택해서 물려받는 것을 말합니다.


  • 자식(하위,파생) 클래스가 부모(상위) 클래스의 멤버를 물려받는 것
  • 자식이 부모를 선택해서 물려 받는 것
  • 상속 대상 : 부모의 필드와 메소드

상속의 효과

  • 부모 클래스를 재사용해서 자식 클래스를 빨리 개발할 수 있다.
  • 반복된 코드의 중복을 줄여준다.
  • 유지 보수의 편리성을 제공해 준다. (부모 클래스를 한 번만 수정함으로써 자식클래스를 수정할 필요가 없음)
  • 객체의 다형성을 구현할 수 있다.






객체 지향 프로그래밍의 다형성(polymorphism)

다형성은 같은 타입이지만 실행 결과가 다양한 객체를 대입(이용)할 수 있는 성질을 말합니다.

부모타입에는 모든 자식 객체가 대입될 수 있으며 자식 타입은 부모 타입으로 자동 타입 변환이 됩니다. 


다형성은 객체를 부품화시킬 수 있습니다.


다시말해서, 자동차란 객체가 있을 경우자동차를 설계를 할 때 타이어 부분에 사용된 부분을 타이어 타입이라고 가정한다면  자동차의 타이어 타입으로 한국 타이어와 금호 타이어가 있다고 한다면 어떤 타이어 타입을 사용하느냐에 따라 각 타이어의 성능은 다르게 나올 수 있다는 것이 다형성이라는 측면입니다.


그래서 한국, 금호 타이어는 자식 객체로써 객체를 부품화시킬 수 있다는 것입니다.





Jaehee's WebClub