본문 바로가기
OOP

[OOP] Encapsulation, 캡슐화란 무엇인가

by ifhead 2022. 8. 26.
반응형

캡슐화의 정의

캡슐화(Encapsulation)라는 이름은 두 가지 특성을 묘사하고 있습니다.

그 두 가지는 곧, 데이터와 기능을 '감추는 특성'과 '모으는 특성'을 말합니다.

  • 접근지정자를 통해 데이터를 감춥니다. 
  • 속성(Data fields)과 행위(Methods)를 클래스로 모읍니다.

우리는 어떠한 클래스를 사용할 때, 그 클래스의 모든 측면을 이해하고 사용할 필요가 없습니다. 만약 그래야만 한다면 수많은 프로그래머들이 한 프로그램을 작성하기란 불가능한 일이 됩니다. 우리는 클래스 내부가 어떻게 되어 있는지 몰라도 됩니다. 다르게 말하면, 언제나 "몰라도 되게 끔 프로그래밍"해야만 합니다.

당신은 남이 만든 코드를 사용할 때, 코드의 작성자가 '당신이 볼 수 있도록 외부로 드러낸 것', '사용을 허가해준 것'만 이해하면 됩니다. Print 계열, Convert 계열의 함수를 사용할 때 그 동작방식을 속속들이 이해하지 않아도 쓸 수 있으셨을 것입니다. 내부 동작이 어떻게 돌아가는지 모르더라도, 우리는 그 클래스를 사용할 수 있어야 합니다. 캡슐화는 그것이 수월하게 이루어질 수 있도록 돕습니다.

 

캡슐화의 두 가지 측면

은닉

클래스 내부의 데이터를 감추는 것을 정보 은닉(Information Hiding)이라고 하며, 보통 public, private, protected 같은 접근제한자를 사용하여 원하는 정보를 감추거나 노출시킬 수 있습니다. 접근을 제한함으로써 유지보수나 확장 시 오류의 범위를 최소화할 수 있습니다. 또한 객체 내의 정보 손상과 오용을 방지합니다. 결과적으로 데이터가 변경될지라도 타 객체에 영향이 줄어들어 독립성이 확보됩니다.

 

통합

필드와 메서드를 하나로 묶는 것입니다. 무작정 묶는 것이 아니라 객체가 맡은 '하나의 목적(SRP)'을 이루기 위한 기능, 그리고 데이터만을 한 데 묶습니다. 클래스와 인터페이스로 프로그래머의 의도를 통합할 수 있습니다. 클래스를 만들 때에는 객체가 특정한 목적을 잘 수행할 수 있도록 사용해야할 변수를 잘 파악해야 합니다. 그런 다음 그 변수를 가지고 해야 할 일, 즉 메서드를 설계해야 합니다.

 

반응형

댓글