데이터 은닉

실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를

개인공부하며 정리하는 용도의 포스팅입니다.

학습목표


  • 객체가 가지고 있는 데이터를 외부로부터 변질되지 않게 보호하는 방법 학습

멤버 변수의 private 설정


멤버 변수(속성)는 주로 private으로 설정해서, 외부로부터 데이터가 변질되는 것을 막는다

패키지

데이터(속성) 변질이 우려되는 시나리오

  • 직원 급여 프로그램에서, 급여 담당자가 실수로 급여액을 잘못 입력하는 경우
  • 변경될 수 없는 사번이 변경 되는 경우
package com.java.employee;

public class Employee {
    
    // 외부에서 쉽게 데이터를 변경할 수 있다
    String name;
    String no;
    int pay;
    // 여기까지
    
    public Employee(String name, String no, int pay) {
        this.name = name;
        this.no = no;
        this.pay = pay;
    }   
}

setter, getter


멤버 변수를 외부에서 변경할 수 있도록 하는 메서드이다

  • MainClass
import com.java.employee.Employee;

public class MainClass {
    
    public static void main(String[] args) {
        
        Employee employeePark = new Employee("박찬호", "2018-00001", 1000000);
        
        employeePark.getInfo();
        
        //employeePark.no = "2018-00002";
        //employeePark.pay = 900000;
        
        // 이 부분이 아래에 있는 Employee 클래스에 영향을 준다
        employeePark.setName("박병호");
        employeePark.setPay(900000);
        // 여기까지
        
        employeePark.getInfo();
    }
}
  • Employee
public void setName(String name) {
    System.out.println(" -- The name can not be modified.-- ");
}

public void setNo(String no) {
    System.out.println(" -- the no can not be modified.-- ");
}

public void setPay(int pay) {
    if(pay < 1000000) {
        System.out.println(" -- The salary can not be reduced to less than 1,000,000 won.-- ");
    } else {
        System.out.println(" -- The salary has been modified -- ");
        this.pay = pay;
    }
}

Reference


실전 자바 강좌 (ver.2018) - 데이터 은닉

Comments