posted by changhozz 2012. 6. 22. 15:59
 캡슐화란?
= 하나의 클래스를 블랙박스화 하는 것

즉, 클래스 안에서 데이터에 해당하는 필드는 모두 Private으로 선언해서 외부에서 직접접근하지 못하게 만듬
외부에는 public으로 선언된 메소드(인터페이스)만을 공개하는 것

이렇게 어떤 클래스의 내부 데이터를 감춰놓고 외부에서는 오직 해당 클래스에서
제공하는 public 메소드(인터페이스)로만 그 객체의 내부 데이터를 변경 또는 제어할 수 있게 만드는 것을
캡슐화라고 한다.

= 다른 클래스에서 어떤 클래스의 기능을 사용할 때
그 내부의 구현에 대해 전혀 몰라도 된다는 것이다.

즉, 단지 공개된 인터페이스를 이용하면 그런 결과가 이뤄진다는 것을 보장하기만 하면 되는 것이다.

 

 

 

1. 은닉화(캡슐화)

자바의 객체는 속성 / 기능으로 이루어져있다. 이때 중요한 속성은 private 키워드로 숨겨놓고

기능해당하는 메소드에 public을 붙여 중요 속성(변수)에 접근하는 방법을 말한다.

즉 은닉화를 하면 변수에 직접적으로 접근을 하지 못한다 반드시 메소드를 통하여 하게 된다.

접근하는 메소드에는 2가지가 있다.

1. getter : 가져오는 녀석

2. setter : 셋팅하는 녀석

쉬운 예를 들어보자.

자판기가 있다 이 자판기에는 변수(커피,프림,컵)이 있고 기능(섞는)이 있다.

우리가 커피를 뽑을때 이 자판기의 변수에 직접 접근해서 섞어서 마시면 자판기의 의미가 없고,

시간도 낭비하며, 결과가 제대로 나오지 않을 수도 있다. 반면에 기능버튼을 누르기만 하면 우린

제대로 된 결과를 얻을 수 있다. 변수에 직접 접근하지 않고도 말이다. 이게 은닉화다.

캡슐화는 하나의 목적에 대한 모든 메서드가 하나의 클래스에 담겨하 한다는것이다.

계산기가 있다고 하자. 덧셈, 뺄셈 등 각 연산이 클래스마다 나뉘어져 있다면 사용이 불편할것이다.

class Info {

//정보에 해당하는 필드들(private) ; 다른 클래스에서 접근할 수 없도록..

private int age;

private String name;

//셋터와 겟터들(public) ; 다른 클래스에서 접근해서 사용하도록..

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

public class PeoPle {

public static void main(String[] args) {

new PeoPle().makePeople();

}

public void makePeople() {

Info pCho = new Info();

pCho.setName("조병덕");

pCho.setAge(27);

System.out.println(pCho.getName());

System.out.println(pCho.getAge());

그림에서 볼 수 있는데 필드에 접근을 할때 바로 객체.필드로 바로 접근하는것이 아니라 객체.get / set을 통하여 접근을 하는것이다. 이것은 자바의 목적중에 하나인 보안을 위해 매우 중요한 사항이다.

그러므로 중요한 필드에는 private를 붙이고 get과 set메서드를 활용하자!

 

 

따라서 은닉화란 캡슐화의 장점중에 하나로 속하는 것으로,

객체를 생성시 객체 내부에 있는 멤버 변수의 값을 접근 제한자를 이용하여 외부에 공개하지 않고 getter와 setter를 이용하여, 접근하는 Beans 방식을 은닉화라 한다.

 

 

 

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님 수업 7  (0) 2012.06.29
팀장님수업 6번째 보충자료(접근 제한자)  (0) 2012.06.22
팀장님수업6  (0) 2012.06.22
팀장님수업5  (0) 2012.06.14
팀장님수업4  (0) 2012.05.31