728x90
캡슐화 이해하기
- 캡슐화란 무엇인가?
- 캡슐화 예시
캡슐화란 무엇인가?
싱글톤에서 사용한 것처럼 객체의 변수는 private으로 직접적인 접근을 막고 메서드를 통하여 값을 설정하는 방식을 캡슐화라고 합니다. 변수의 값을 설정하고 불러오는 메서드라고 하여 getter, setter메서드라고도 부릅니다. 이러한 방법을 사용하는 이유는 외부에서 데이터 값에 직접 접근을 막으며 getter와 setter의 조건에 맞추어 값을 설정 혹은 불러올 수 있도록 하여 변수의 값을 보호하기 위해서 사용합니다.
캡슐화 예시
public class Student{
private studentNum;
public void setNum(int num){
this.studentNum=num;
}
public int getNum(){
return this.studentNum;
}
}
public class StudentList{
public static void main(String[] args){
Student firstStudent = new Student();
//firstStudent.studentNum=20; 사용불가능
firstStudent.setNum(20); //studentNum을 20으로 설정
System.out.println(first.getNum());//20출력
}
}
위의 예시와 같이 Student클래스의 studentNum은 private으로 다른 클래스에서의 접근을 막아두었습니다. 따라서 studentNum을 설정하거나 불러오기 위하여 setNum과 getNum메서드를 만들었습니다. 이 두 메서드는 public이기 때문에 StudentList클래스에서 불러와 사용하였습니다. 지금의 코드는 접근만 막아두었고 다른 제약이 없습니다. 하지만 학생의 번호는 양수로 주고 싶기 때문에 setNum메서드를 수정하도록 하겠습니다.
public void setNum(int num){
if(num<=0){ //입력받는 값이 0보다 작거나 같으면 return
return;
}
this.studentNum=num;
}
setNum의 메서드에 if조건문을 사용하였습니다. studentNum을 설정하려고 하였지만 입력받은 값이 0 혹은 음수라면 return을 만나 종료되어 studentNum의 값이 변하지 않습니다. 캡슐화를 사용하지 않았다면 StudentList클래스에서 studentNum에 직접 값을 입력하여 조건에 부합하지 않는 값도 입력을 시키는 경우가 발생할 수 있지만 이러한 식으로 값의 설정에 조건을 달아주어 코드의 오류를 줄일 수 있습니다.
728x90