본문 바로가기
IT_Developers/JAVA

JAVA - 캡슐화(Encapsulation)란? / 메소드를 사용한 캡슐화 예제

by 고코더 2020. 3. 11.

캡슐화를 알아보고 실습해보자


안녕하세요.
고코더 입니다.


객체지향에 큰 특징중에 하나가 바로 캡슐화 입니다. 영어로는 Encapsulation 입니다. 봉인하다. 라는 뜻인데요. 중요한 데이터를 보존하고 보호하는 것입니다. 이름에서 느껴지듯 내부의 정보를 최소한으로 외부에 노출하는걸 의미합니다. 즉 내부에서 정의한 필드와 자료구조등에 대한 접근을 차단한다는 뜻입니다. 그리고 이를 메쏘드로 접근해서 사용해야 합니다. 

- 객체의 필드와 메소드를 하나로 묶고, 실제 구현 내용을 외부에 감츤다.
- 외부 객체는 제공하는 필드와 메소드만 이용할 수 있다.
- 캡슐화는 외부의 잘못된 사용으로 인해 객체가 침해 당하지 않게 한다.
- 노출을 위해 접근 제한자(Access Modifier)를 사용한다.



캡슐화 예제 소스 


Gocoder class : 캡슐화 작성 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class gocoder{
 
  private String name;
  private String blog;
 
  public void setName(String name){
      this.name = name;  
  }
  public void setBlog(String blog){
      this.blog = blog;  
  }
 
  public void getName(){
     return name;  
  }
  public void getBlog(){
      return blog;  
  }
 
}
cs

gocoder 클래스는 멤버 변수들을 private를 사용해 은닉화 합니다. 그리고 이 변수들을 접근하기 위해서는 메소드를 활용하도록 코딩 합니다.



메소드를 이용한 캡슐화 사용 예제 소스


GocderNet class : 캡슐화를 사용하는 소스

1
2
3
4
5
6
7
8
9
10
11
12
public class GocoderNet{
    
    public static void main(String[] args) {
           gocoder gcn = new gocoder();
           gcn.SetName("");
           gcn.SetBlog("gocoder.tistory.com");
           
           System.out.println("이름 :" +gcn.getName());
           System.out.println("블로그 :" +gcn.getBlog());
 
       }
   }
cs

고코더넷이라는 클래스에서 고코더를 불러와 사용하는 예제이다.
메소드를 활용해서 gocoder에 간접적으로 접근해서 사용할 수 있다. 일명 new를 사용해서 객체를 만들어 사용한다.



마무리

 
캡슐화는 높은 응집도와 낮은 결합도가 필수




댓글