본문 바로가기

Programming (IT)

캡슐화 [ encapsulation, -化 ]

반응형
객체 지향 프로그래밍(OOP)에서 캡슐화를 왜 쓸가?

캡슐화를 쓰는 이유는 여러가지가 있겠지만 내가 생각하는건 2가지

첫째로 변수를 보호하기 위해서 
둘째로 변수를 숨기기 위해서

간단한 예를 보자

private int total;


public void add(int num){

total += num;
}

public void delete(int num){

total -= num;
}

public int getToal(){
return total;
}

여기서 변수 total에 대한 접근 제한자가 private 이다.

즉, 외부에서 total 변수에 직접 접근할 수 있는 기능은 없다.
그럼 ? 어떡해 해야 할까?
우리는 3개의 method를 만들었다.

저 method들을 통해서 접근해야 한다.

그럼 method들을 통해서 접근하는 방법은 무슨 장점이 있느냐?

API의 명료성을 이용하여 기능을 사용할 수 있다.
total += 라고 쓰면 뭐 안 좋냐? 라고 생각할 지 모르지만 위와 같이 간단한 연산이 아니고
total을 이용해서 값을 만들어야 할 경우는 method를 활용하여 계산하는 것이 훨씬 간단하다.

주제에 좀 벗어난거 같군^^;;

어쨌든 사용자가 total이라는 변수를 몰라도 클래스 객체의 method들을 사용하여 total이라는 값을 접근 할 수 있게 하고
외부에서 변수에 직접 접근하여 값을 변경 할 수 없도록 하는 것이 캡슐화의 요다

마지막으로 가운데에 변수가 있고 구변에 함수들이 존재하는 알과 같은 구를 상상하면 된다. ㅋㅋ