정보은닉


먼저 정보은닉이란, 멤버변수를 private로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의해서, 안전한 형태로 멤버 변수의 접근을 유도하는 것이 '정보은닉'이며, 이는 좋은 클래스가 되기 위한 기본조건이 된다.

 

int GetX() const;

bool SetX(int xpos);

 

int GetY() const;

bool SetY(int ypos);

 

위를 가리켜 액세스 함수라 한다. 이들은 멤버변수를 private로 선언하면서 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수들이다. 하지만 이들 함수는 정의되었으되 호출되지 않은 경우도 많은데 이는 지금 클래스의 정의과정에서 필요하진 않지만, 필요할 수 있다고 판단되는 함수들도 더불어 멤버에 포함시키는 경우도 많기 때문이다.

 

캡슐화


캡슐화가 무너지면 객체의 활용이 매우 어려워진다. 뿐만 아니라, 캡슐화가 무너지면 클래스 상호관계가 복잡해지기 때문에 이는 프로그램 전체의 복잡도를 높이는 결과로 이어진다.

 

캡슐화의 경우 어려운 개념에 속하며 이는 캡슐화의 범위를 결정하는 일이 쉽지 않기 때문이다.

 

경험이 많은 객체지향 프로그래머를 구분하는 첫 번째 기준은 캡슐화가 된다. 캡슐화는 일관되게 적용할 수 있는 단순한 개념이 아니고, 구현하는 프로그램의 성격과 특성에 따라서 적용하는 범위가 달라지는, 흔히 하는 말로 정답이란 것이 딱히 없는 개념이기 때문이다.

 

캡슐화에는 정보은닉이 기본적으로 포함된다.

 

Reference


[1] 윤성우의 열혈 C++ 프로그래밍

+ Recent posts