정보 은닉
- 멤버변수를
private
으로 선언하고 해당 변수에 접근하는 함수를 별도로 정의하여 안전한 형태로 멤버변수의 접근을 유도하는 것이다. - 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수들을 엑세스 함수(access function)라 한다.
- 제한된 방법으로의 접근만 허용을 해서 잘못된 값이 저장되지 않도록 도와야 하고 실수를 했을 때 발견되도록 한다.
class Point
{
private:
int xpos;
int ypos;
public:
// 엑세스 함수
int GetXpos() const
{
return xpos;
}
void SetXpos(int x)
{
xpos=x;
}
int GetYpos() const
{
return ypos;
}
void SetYpos(int y)
{
ypos=y;
}
};
Point p;
// 에러
p.xpos = 1;
p.ypos = 2;
int x = p.xpos;
int y = p.ypos;
// 정상
p.SetXpos(1);
p.SetYpos(2);
int x = p.GetXpos();
int y = p.GetYpos();
- 클래스를 선언했을때 xpox, ypos값에 직접 접근하는것은 불가능하다.
- 위처럼 엑세스 함수를 통해 값을 접근하고 바꿀수 있다.
const 함수
- 함수 내에서 멤버 변수에 저장된 값을 변경하지 않는 함수이다. (매개변수 X 지역변수 X)
const
함수 내에서는const
가 아닌 함수의 호출이 제한된다.- 코드의 안정성을 높이기 위해 사용한다.
함수 이름 뒤에 const
를 붙여서 사용한다.
void Show() const
{
cout << GetXpos() << " " << GetYpos() <<endl;
}
캡슐화
- 객체의 속성과 행위를 하나로 묶고,실제 구현 내용 일부를 외부로부터 감추어 은닉하는것이다.
- 캡슐화에는 정보은닉이 기본적으로 포함된다.
- 정보은닉과 캡슐화는 객체지향 기반의 클래스 설계에서 가장 기본이면서도 가장 중요한 원칙들이다.
'Programming | 프로그래밍 언어 > C++' 카테고리의 다른 글
복사 생성자 (0) | 2022.11.13 |
---|---|
생성자, 소멸자, 이니셜라이저, this (0) | 2022.11.11 |
구조체, 클래스, 접근제어지시자 (0) | 2022.11.10 |
C언어 기반의 C++ 2 (0) | 2022.11.09 |
C언어 기반의 C++ 1 (0) | 2022.11.03 |