2017. 10. 15. 18:49 C++/공부
C++] 기초(10) - 정보은닉(Information Hiding)
.** 본 게시물은 C++을 복습하며 정리하는 글입니다. 틀린 부분이 있다면 지적 부탁드립니다!! 현재 "윤성우의 열혈강의 C++"교재로 공부중이며 좀 더 상세한 설명을 원하시는 경우에는 책을 구매해서 찾아보시길 권장합니다.
[들어가기 전]
C++은 객체지향 언어이며 객체를 표현하기 위해 클래스를 사용한다.
하나의 객체를 표현하는 클래스 생성 시,
1) 해당 클래스 내부의 모든 정보에 대해 접근 및 변경이 가능하다면 해당 클래스는 보안에
최적화된 클래스라고 볼 수 있는가?
2) 해당 클래스에 접근할 수 있는 방법을 제한하지 않는다면 프로그래머의 실수는 어떻게
대비 할 것인가?
[설명]
[들어가기 전]에 제시된 2가지 문제에 대한 대책으로 "정보은닉(Information Hiding)" 기법 들 수 있다.
정보은닉의 역할)
제한된 방법으로의 접근만 허용
=> 잘못된 값이 저장되지 않도록 도움
=> 안전한 형태로 해당 클래스의 멤버변수 접근을 유도
=> 프로그래머가 실수를 했을 경우 실수가 쉽게 발견됨
정보은닉을 위한 방법)
정보은닉을 하기 위해선 C++에서 제공하는 "접근지시 제어자"를 사용하면 된다.
=> 멤버변수를 private으로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의.
ex)
정보은닉을 위해 멤버변수를 private 접근 가능하도록 선언하였으며, 해당 멤버변수에
안전하게 접근하기 위해 public 권한의 GetVal()/SetVal() 함수를 선언하였다.
=> 이렇게 멤버변수에 접근하기 위해 선언된 함수를 "엑세스 함수"라고 한다.
해당 함수는 사용하지 않더라도 선언해두는 경우가 많다.
[추가]
정보은닉 사용 후, 추가적인 안정성을 위해 const 함수를 사용하는 경우가 있다.
ex)
void ShowVal() const;
이렇게 추가된 const는 이 함수 내에서는 멤버변수의 값을 변경하지 않겠다는 의미가 있다.
ex)
위의 예제에서 cout<<GetVal()<<endl; 구문은 컴파일 에러가 난다. 왜냐하면
const 함수 내에는 const 함수만 사용 가능하기 때문이다.
'C++ > 공부' 카테고리의 다른 글
C++] 기초(12) - 생성자(Costructor) (0) | 2017.11.25 |
---|---|
C++] 기초(11) - 캡슐화(Encapsulation) (0) | 2017.10.15 |
C++] 기초(9) - 참조자 반환 함수 사용 시 (1) | 2017.10.15 |
C++] 기초(8) - 참조자와 Call-by-reference (0) | 2016.12.14 |
C++] 기초(7) - 참조자(Reference) (0) | 2016.12.08 |