Latest web development tutorials

C ++ 데이터 캡슐화

모든 C ++ 프로그램은 두 가지 기본 요소가 :

  • 프로그램 명령문 (코드) :이 작업을 수행하는 프로그램의 일부이며, 이들은 함수라고한다.
  • 프로그램 데이터 : 데이터는 프로그램 정보, 프로그램의 기능이 영향을받을 것이다.

캡슐화는 이렇게하여 안전을 확보 외부 간섭 및 오용을 방지하기 위해, 기능 데이터 객체 지향 프로그래밍과 결속 조작 데이터의 개념이다. 데이터 캡슐화는 또 다른 중요한 OOP 개념, 즉,데이터 숨어 나올.

데이터 캡슐화는 사용자 인터페이스 및 메커니즘을 숨겨진 구현 세부 하나만 노출되는 데이터 및 데이터 조작을 번들 데이터 추상화를작동하는 메커니즘이다.

숨어 C ++클래스 지원 캡슐화 및 데이터를 (공개, 보호, 개인)을 생성함으로써.우리는 이미 공개 (공개) 회원의 (보호)의 회원들과 회원을 보호하기 위해, 클래스가 개인 회원 (개인)가 포함 된 것을 알고있다. 기본적으로 클래스에 정의 된 모든 항목은 비공개입니다. 예를 들면 :

class Box
{
   public:
      double getVolume(void)
      {
         return length * breadth * height;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

가변 길이, 폭과 높이 (개인) 개인 있습니다. 이것은 그들이 단지 Box 클래스의 다른 구성원에 의해 액세스 될 수 있다는 것을 의미한다, 프로그램의 다른 부분에 액세스 할 수있다. 이것은 패키지를 얻을 수있는 방법이다.

이 멤버가 선언되기 전에 (즉, 프로그램의 다른 부분에 액세스 할 수 있습니다) 공개 클래스의 멤버가되기 위해서는공공 키워드를 사용해야합니다.모든 식별자는 프로그램에 액세스하기위한 모든 다른 기능에 의해 사용될 수있는 변수 또는 함수 뒤에 공개적으로 정의된다.

클래스가 다른 클래스의 친구로 정의되며, 이는 이에 의해 밀봉을 감소 구현 정보를 노출한다. 이상적으로, 각 클래스의 가능한 외부 숨기기 구현 세부만큼.

데이터 패키지의 예로

C ++ 프로그램, 공공 및 개인 데이터의 회원들과 모든 클래스는 캡슐화와 데이터 추상화의 예제로 사용할 수 있습니다. 다음 예를 고려하십시오

#include <iostream>
using namespace std;

class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

Total 60

함께 숫자 위의 클래스와는 합계를 반환합니다. 공용 멤버ADDNUM getTotal외부인터페이스, 사용자는 자신의 클래스를 사용하기 위하여 알 필요가있다. 외국인 개인 회원 사용자가 이해하지 않아도 숨겨진전체적하지만 필요한 정상 수준 일 것이다.

디자인 전략

우리가 정말 노출 될 필요가없는좋은 캡슐화를 보장하기 위해 정상적인 상황에서, 우리는, 개인 클래스 멤버 상태 (개인)를 설정합니다.

이것은 일반적으로 데이터 부재에 적용되지만 가상 함수를 포함한 모든 구성원에 동일하게 적용 가능하다.