1 minute read

1. 정보은닉(Info Hiding)

  • 메인함수나 다른 클래스에서 객체를 생성하여 사용할 때,
    변경되어서는 안되는 변수를 보호하기 위함이다.

  • 제한된 방법으로의 접근만 허용을 해서 잘못된 값이 저장되지 않도록,
    실수 했을 때 쉽게 발견될 수 있도록 할 수 있다.

  • 예시

      //Point.h
      class Point{
          private:
              int x;
              int y;
    
          public:
              bool Init(int xpos, int ypos);
              int GetX();
              int GetY();
              bool SetX(int xpos);
              bool SetY(int ypos);
      };
    
      //Point.cpp
      bool Point::Init(int xpos, int ypos){
          if(xpos<0 || ypos<0){
              cout << "error" << endl;
              return false;
          }
    
          x = xpos;
          y = ypos;
          return true;
      }
    
      int Point::GetX() const{
          return x;
      }
    
      int Point::GetY() const{
          return y;
      }
    
      bool Point::SetX(int xpos){
          //대충 코드
      }
    
      //대충 다른 함수...
    
    
    • 즉, 위 코드처럼 멤버변수를 private으로 선언하고, 해당 변수에 접근하는 함수인 엑세스 함수를 별도로 정의해서, 안전한 형태로 멤버 변수의 접근을 유도하는 것!

    • 엑세스 함수: Init(), GetX(), GetY() 등 멤버 변수에 접근하기 위한 함수

✏️const

  • const 선언된 함수: “이 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다”는 뜻이다.
    자신의 의도와 다르게 멤버변수 값을 변경했을 때, 컴파일에러로 확인할 수 있다.

  • const가 선언된 함수 내에서는 const가 선언된 함수만 호출이 가능하다.

  • const 참조자를 이용하는 함수에선 const가 선언된 함수만 호출이 가능하다.

2. 캡슐화(Encapsulation)

  • 하나의 목적을 이루기 위해 둘 이상의 기능을 모아놓는 것.

  • 잘 쓰면 프로그램이 효율적이고, 잘못하면 프로그램 복잡도가 높아진다.

  • 어려운 이유는, 범위를 결정하기 어렵기 때문이다.

  • 정보은닉은 캡슐화에 기본적으로 포함된다.
    (감싸려면 안전하게 감싸야 하니까!)

Tags: ,

Categories:

Updated: