티스토리 뷰

주의 사항!

  • 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
  • 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
  • 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.


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

myCar.speed = -100;

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

 

예를 들어 자동차의 속도를 setSpeed() 메서드로 변경할 결루 다음과 같이 검증 코드를 작성할 수 있습니다.

void setSpeed(double speed)
{
	this.speed = (speed < 0) ? 0 : speed;
}

 

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

 

예를 들어 자동차의 속도를 마일에서 km 단위로 환산해서 외부로 반환하는 getSpeed() 메서드는 다음과 같이 작성할 수 있습니다.

double getSpeed()
{
	return speed * 1.6;
}

 

클래스를 선언할 때 가능하다면 필드를 private으로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메서드를 작성해서 필드 값을 안전하게 변경하고 사용하는 것이 좋습니다.

 

필드 타입이 boolean일 경우에는 Getter는 get으로 시작하지 않고 is로 시작하는 것이 관례입니다. 예를 들어 stop 필드의 Getter와 Setter는 다음과 같이 작성할 수 있습니다.

private boolean stop;

//Getter
public boolean isStop()
{
	return stop;
}

//Setter
public void SetStop(boolean stop)
{
	this.stop = stop;
}

 

'공부 일지 > JAVA 공부 일지' 카테고리의 다른 글

자바, 상속  (0) 2021.04.08
자바, 어노테이션(Annotation)  (0) 2021.04.07
자바, 접근 제한자  (0) 2021.04.07
자바, import문  (0) 2021.04.07
자바, 패키지  (0) 2021.04.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함