인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

musemy님의 프로필 이미지
musemy

작성한 질문수

자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!

생성자와 소멸자 그리고 this 키워드

데이터은닉- 게터세터

작성

·

220

0

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

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

답변 1

4

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

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

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

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

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

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

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

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

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

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

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

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

musemy님의 프로필 이미지
musemy

작성한 질문수

질문하기