안녕하세요! 공대남입니다. 오늘은 정보은닉 ( information hiding )에 대하여 알아보도록 하겠습니다.

정보은닉은 쉽게 말 하자면 변수를 초기화할 때 제한을 두는 겁니다.

예를 들자면 자연수만을 입력 받아야 할 때 음의 값을 입력받게 되면 안됩니다.

그래서 선언된 변수에 값을 입력할 때 자연수만 입력되도록 제한을 두는 겁니다. 그럼 자세히 알아보겠습니다.

차례

1. 정보은닉의 이해

2. 정보은닉을 이용한 프로그래밍 예시

1. 정보은닉의 이해

일단, 간단한 예시 코드를 보겠습니다.

naturalNumber (자연수)라는 클래스를 선언하고 private 부분에 정수형 변수를 선언했습니다.

변수가 private로 선언되어 있기 때문에 public의 init 함수에서 접근해서 값을 할당합니다.

하지만 코드를 보시면 

void Init(int n)

{           

      num = n;

... }

값을 할당하는데 어떠한 조건도 없기 때문에 할당되는 값이 자연수 인지 아닌지 구분하지 못합니다.

그렇게 때문에 main함수에서 n.Init(-2)로 -2값을 보내면 그대로 할당됩니다.

이를 방지하기 위해, 변수가 선언될 때 함수를 별도로 정의해서 안전한 형태로 변수의 접근을 유도하는 것이 정보은닉 입니다.

그럼 이를 정보은닉을 올바르게 사용해서 고친 코드를 보겠습니다.

-

2. 정보은닉을 이용한 프로그래밍 예시

위의 코드를 보시면 void Init 의 if문을 추가하여 자연수 인지 아닌지를 판별하게 했습니다.

if (n > 0) 에 의해서 함수에서 전달된 인수 값이 양수인지 음수인지 판단하게 됩니다.

그리고 자연수일 경우에 num = n; 으로 값을 할당하고 그 값을 출력하도록 했습니다.

그리고 그 밖의 값 즉, 음수 일때는 자연수가 아니라는 문구를 출력하도록 했습니다.

이것을 컴파일 하게 되면

5를 입력했기 때문에 Init 함수의 if,else 문에 의해서 값을 판별하고 입력이 되었습니다.

하지만, 다른 음수를 넣게 되면

자연수가 아니라는 문구가 출력됩니다.

이렇게 자연수만 입력되도록 변수 입력을 유도하는것이 정보은닉입니다.

-

오늘은 정보은닉에 대해서 아주 간단하게 코드를 짜서 알려드렸습니다. 정리하자면 정보은닉이란

제한된 방법으로의 접근만 허용을 해서 잘못된 값이 저장되지 않도록 돕고, 실수를 했을 때는 쉽게 발견되도록 하는 것입니다.

정보은닉이 잘 쓰인 프로그램일 수록 좀 더 안정적이고 정교합니다. 그렇기 때문에 필수적으로 쓰입니다.

처음엔 이해하기 힘들수도 있지만, 잘 알아두시면 좋습니다.

오늘 준비한 글은 여기까지입니다. 다음번에는 좀 더 유익할 정보와 글로 찾아뵙겠습니다. 감사합니다!

+ Recent posts