Inflearn brand logo image

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

민혁님의 프로필 이미지
민혁

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

접근 제어자 (전반전)

getter setter

작성

·

17

0

 modelname은 getter에 if 문을 넣고 price엔 if를 setter에 넣었는데 그 기준이 있나요?
아니면 실행되고 출력하는데엔 어디에 넣든 아무 영향이 없는 걸까요?

답변 2

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?

결론부터 말씀드리면, 코드가 실행되고 출력하는 데에는 어디에 넣든 영향이 없습니다. 하지만 강의에서는 아래 내용을 염두에 두고 코드를 작성했어요.

  1. setPrice : 잘못된 값이 들어오면 최소값인 10만원으로 강제 설정하여 어떤 경우에도 price 변수에 유효하지 않은 값이 저장되는 것을 막습니다. 마치 놀이 공원 입구에서 자유 이용권을 확인하고 나서 손님들을 들여보내게 되면 놀이 공원 안에는 항상 자유 이용권을 가진 사람만 있다는 것이 보장이 되지요.

  2. getResolution (model 이 아닌 resolution 맞죠? 😊) : 내부 데이터를 사용자에게 어떻게 보여줄지 결정하는 역할을 합니다. resolution 은 값이 입력되지 않을 수 있으며 시스템 내부적으로는 문제 없는 유효한 상태일 수 있어요. 하지만 사용자에게 null 이라고 한다거나 비어 있는 값을 그대로 보여주는 것은 썩 친절하지 못하죠. 따라서 이러한 데이터를 외부에 보여주기 전에 사용자 친화적인 형태(또는 대체값)로 가공을 하는 것입니다. 마치 식당에서 키오스크로 주문을 하려고 하는데 어떤 메뉴의 재료가 떨어져서 주문이 불가능한 경우 '준비중입니다' 라고 하는 문구를 보여주는 것과 같이 말이죠.

정리하면, 예제에서 setter 는 데이터 무결성을 지키는 역할, getter 는 사용자 친화적인 출력 가공 역할을 하도록 작성하였습니다. 두 메소드에서 각각 처리한 이유는 데이터의 성격과 요구사항이 다르기 때문이며, 이는 반드시 지켜야 하는 규칙은 아니지만 역할에 따라 유연하게 코드를 작성하는 것이 좋은 습관입니다 🙌

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 민혁님이 질문하신 내용에 대해 관련된 답변을 일부 소개하고 추가적인 설명을 드리겠습니다.

getter와 setter에 조건을 어느 메소드에 넣는지는 일반적으로 값을 설정하는 시점에 따라 다르게 선택합니다. getter는 데이터를 가져올 때 예외 상황을 처리하는 데 사용되고, setter는 데이터를 설정할 때 유효성 검사를 하는 데 주로 사용됩니다.

예를 들어, modelName에 대해서 getterif문을 넣은 것은 클라이언트 코드에서 원하는 데이터의 상태가 아니거나 null인 경우 이를 처리하기 위한 것입니다. 이는 값을 반환할 때 안정성을 높이고 기본값을 제공할 수 있도록 하여 클라이언트 코드에서의 추가적인 오류 처리를 피할 수 있습니다.

반면, price에 대한 setterif문을 넣는 것은 설정되는 값의 유효성을 검사하기 위한 방법입니다. 가격의 경우 설정되는 시점에서 잘못된 값을 방지하고 기본값이나 다른 값으로 설정해야 하는 경우 setter에 로직을 넣는 것이 적절합니다.

다음 링크에서 유사한 질문과 답변을 확인해 보시면 도움이 될 것입니다:
- Getter & Setter
- S

이 게시물들에서는 왜 특정 조건을 getter 또는 setter에 넣는지에 대한 더 구체적인 설명과 예제를 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

민혁님의 프로필 이미지
민혁

작성한 질문수

질문하기