Getter/Setter 메소드

Sunny·2023년 1월 4일
0

🌱 Setter

일반적으로 객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. 그 이유는 객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성(결점이 없는 성질)이 깨어질 수 있기 때문이다. 예를 들어 자동차의 속도는 음수가 될 수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨어진다.

이러한 문제점을 해결하기 위해 객체 지향 프로그래밍에서는 메소드를 통해서 데이터를 변경하는 방법을 선호한다. 데이터는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다. 그 이유는 메소드는 매개값을 검증해서 유효한 값만 데이터로 저장할 수 있기 때문이다. 이러한 역할을 하는 메소드가 Setter이다.

Setter의 예시

void setSpeed(double speed) {
	// 매개값이 음수일 경우 speed 필드에 0으로 저장하고, 메소드 실행 종료
	if(speed<0) {
    	this.speed = 0;
        return;
    } else {
    	this.speed = speed;
    }
}

🌱 Getter

외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋다. 객체 외부에서 객체의 필드값을 사용하기에 부적절한 경우도 있다. 이런 경우에는 메소드로 필드값을 가공한 후 외부로 전달하면 된다. 이런 메소드가 바로 Getter이다.

Getter의 예시

double getSpeed() {
	// 필드값인 마일을 km 단위로 환산 후 외부로 리턴
	double km = speed*1.6;
    return km;
}

🌱 Setter와 Getter 요약 정리

클래스를 선언할 때 가능하다면 필드를 private로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해서 필드값을 안전하게 변경/사용하는 것이 좋다. 검증 코드나 변환 코드는 필요에 따라 추가해야 한다.

Setter와 Getter의 메소드 사용 예시

private 타입 fieldName;

//Getter
public 리턴 타입 getFieldName() {
	return fieldName;
}

//Setter
public void setFieldName(타입 fieldName) {
	this.fieldName = fieldName;
}
profile
개발에 재미를 붙여보기 :)

0개의 댓글