[C++] 정보은닉 (Information Hiding)
Language/C++C++ 객체지향에서 클래스는 정보은닉이라는 특성을 가져야 한다.
우선 정보은닉이 되지 않은 클래스를 보겠다.
1 2 3 4 5 | class AAA { public: int num; // 0~100 }; |
위 클래스는 num 이라는 멤버변수를 가지고 있다. 하지만 외부에서 객체를 만들어 이 멤버변수에 값을 넣을 때 직접 접근 하므로 원치 않는 값이 들어올 수 있고 에러도 나지 않는다. 실제로 이런 경우가 발생하면 오류를 찾는데에 매우 많은 시간을 소요하게 된다.
다음은 정보은닉이 적용된 클래스이다.
1 2 3 4 5 6 7 | class AAA { int num; // 0~100 public: void setNum(int n) { num = n; } int getNum() { return num; } }; |
멤버변수에 직접 접근하는 것을 막고 setNum과 getNum 함수를 통해서 멤버변수를 조작하도록 하였다.
여전히 원치않는 값이 들어갈 수 있고 별로 달라진게 없다고 생각할 수 있지만 다음과 같이 오류검출을 추가할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class AAA { int num; // 0~100 public: void setNum(int n); int getNum() { return num; } } void AAA::setNum(int n) { if(n<0 || n>100) { cout << "error" << endl; return; } num = n; }; |
위와같이 작성하면 멤버변수에 영향을 주지 않고 사전에 오류검출을 할 수 있는 것을 볼 수 있다.
'Language > C++' 카테고리의 다른 글
[C++] 생성자(Constructor)와 소멸자(Destructor) (0) | 2015.11.30 |
---|---|
[C++] 캡슐화 (EnCapsulation) (0) | 2015.11.30 |
[C++] 동적할당. new와 delete (0) | 2015.11.30 |
[C++] Reference (0) | 2015.11.29 |
[C++] namespace (0) | 2015.11.28 |