Programming | 프로그래밍 언어/C++

캡슐화와 const 함수

gyunnnnnn 2022. 11. 10. 21:36

정보 은닉

  • 멤버변수를 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