2018년 11월 26일
정보 은닉 (Information Hiding)
I. 인터페이스로만 객체 접근, 정보 은닉
가. 정보 은닉(Information Hiding)의 개념
코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
나. 정보 은닉의 목적
– 객체에 포함된 정보의 손상과 오용 방지
– 데이터 변경 시에도 다른 객체에 영향 없이 독립성 유지
– 객체를 부품화하여 이식성과 호환성 확보
II. 정보 은닉을 위한 접근제한자 및 코드
가. 정보 은닉을 위한 접근제한자
접근제한자 | 접근 권한 | 특징 |
---|---|---|
public | 모든 클래스, 패키지 | 모든 권한 부여 |
private | 해당 클래스 내 | 최소 권한 부여 |
protected | 동일 패키지 내 | 상속 시 타패키지 사용 |
package | 동일 패키지 내 | default 접근제한자 |
나. 정보 은닉 코드
public class Car{ private int speed; // 클래스 내 사용 가능 public void setSpeed(int speed){ // speed 변수 값 입력 this.speed = speed; } public int getSpeed(){ // speed 변수 값 출력 return speed; } } |
– speed 변수는 클래스 내에서만 사용되며, setSpeed, getSpeed 메서드를 통해서만 변수 접근
III. 정보 은닉과 캡슐화의 비교
항목 | 정보 은닉 | 캡슐화 |
---|---|---|
목적 | 코드의 보호 | 데이터/함수 모듈화 |
특징 | I/F를 통해서만 접근 | 속성/메서드 기능 집합 |
기법 | public, private 등 | Class |
장점 | 무결성, 보안성 확보 | 재사용성, 유지보수용이 |