• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

데이터은닉- 게터세터

20.03.07 15:43 작성 조회수 126

0

세터를 이용해서도 정보를 변경시킬수 있다는것은 어쩄든 변경할수 있다는건데 그냥 바꾸는것보다 메서드를 사용해서 하는게 더 안전하다는 것이 이해가 잘 안갑니다. 

세터메서드 안에 뭔가 코드를 추가해서 접근자를 걸러서 한다거나 뭐 그렇게 쓰이게 되는건가요

답변 1

답변을 작성해보세요.

4

박종진님의 프로필

박종진

2020.03.11

예를 들어서 BodyInfo라는 클래스에 몸무게를 weight 나타내는 변수가 있다고 가정합니다.

다른 클래스에서 BodyInfo 라는 클래스를 객체화 하여 weight 에 값을 부여할때,

실수로 -100을 대입하게되면, 데이터의 무결성을 보장할 수 없게 됩니다.

데이터의 무결성을 위해, weight 라는 변수를 private으로 선언하고, 

setter 안에 데이터를 사전에 검증하는 코드를 추가하는 등 위와 같은 실수를 예방할 수 있습니다.

setter에서 데이터 검증을 하지않고, BodyInfo클래스를 사용하는 클래스에서

데이터를 입력받을때 검증할 수 있지 않냐라고 생각하실 수 있는데,

BodyInfo라는 클래스를 사용하는곳이 수백,수천 개일경우 

모든 클래스에서 수정이 이루어져야합니다.

하지만 setter에서 데이터 검증 부분을 수정하게되면, 

BodyInfo 클래스의 setter에 검증부분만 수정하면  모든 클래스에 반영이 되는거죠.

이해하시는데 도움이 되셨으면 좋겠습니다.