자바(JAVA) - 캡슐화에 대해 알아보자

안녕하세요

이번 시간에는 자바에서 중요한 개념 중 하나인 캡슐화에 대해서 알아보겠습니다.

캡슐화는 쉽게 말해 변수와 같은 중요한 데이터 요소들을 캡슐로 감싸서 외부의 노출을 금하는 것입니다.

자바의 캡슐화를 구현하기 위해서는

멤버변수에 private 접근지정자(access modifier)를 붙여야 합니다.

그리고 이 캡슐화 된 데이터에 접근하기 위해서는 setter, getter 메소드를 통해

접근해야합니다.

아래 예재를 보시면 이해가 되실겁니답~!

// 추상화
public class CoffeeMachine {
 // has a
 private int coffee;
 private int sugar;
 private int cream;
 public void setCoffee(int c){
  coffee=c; 
 }
 public int getCoffee(){
  return coffee;
 }
 
 public void setSugar(int d){
  sugar=d;
 }
 public int getSugar(){
  return sugar;
 }
 public void setCream(int e){
  cream=e;
 }
 public int getCream(){
  return cream;
 }
}

위의 예제에서는 coffee, sugar, cream 멤버변수를 private를 붙여 캡슐화 시켰습니다.

캡슐화 된 데이터에 접근하기 위해서는 setter, getter 메소드를 통해 접근해야합니다.

setter 메소드는 반환타입은 없고 (void) 대신 매개변수를 받아 멤버변수에 전달해야 합니다. 아래 예제는 main()함수에서 CoffeeMachine 클래스의 객체를 생성하여 활용하는 예제입니다.

public class Cafe{
 public static void main(String[] args) {
  
  CoffeeMachine cm = new CoffeeMachine();
  // 캡슐화 된 데이터를 사용하자
  // 단순히 cm.coffee를 사용하면 오류가 난다.
  cm.setCoffee(2);
  cm.setSugar(1);
  cm.setCream(2);
  System.out.println("커피 :"+cm.getCoffee());
  System.out.println("설탕 :"+cm.getSugar());
  System.out.println("쿠람 :"+cm.getCream());
  // 아래처럼 해도 무방
  int cr=cm.getCream();
  System.out.println("크림 : "+cr);
 }
}

댓글 없음:

댓글 쓰기