정보 은닉
- 프로그래머는, 제한된 방법으로의 접근만을 허용하여 잘못된 값이 젖아되지 않도록 도와야 하고, 실수를 했을 때 실수가 쉽게 발견되어야 한다.
- 보통 멤버변수를 Private로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의하여 안전한 형태로 멤버변수의 접근을 유도한다.
- 이러한 접근 함수는 GetXXX/SetXXX로 정의되어 있는데, 이러한 함수를 엑세스 함수(access function)라한다. 이들은 멤버변수를 private로 선언, 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수이다.
- 맴버함수에 const를 선언할 경우, 해당 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다는 말이다.
int GetX() const;
int GetY() const;
void ShowRecInfo() const;
- 이러한 const 함수 내에서는 const가 아닌 함수의 호출에 제약이 생긴다.
class SimpleClass
{
private:
int num;
public:
void InitNum(int n)
{
num = n;
}
int GetNum()
{
return num;
}
void ShowNum() const
{
cout << GetNum() << endl; // Compile Error
}
};
캡슐화
- 캡슐화는 일관되게 적용할 수 있는 단순한 개념이 아닌, 구현하는 프로그램의 성격과 특성에 따라서 적용하는 범위가 달라지는, 정답이라는게 딱히 존재하지 않는 개념이다.
- 적절한 캡슐화는 클래스를 간결하게 만들어주며, 정보 은닉에 큰 도움을 준다.