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

tirkffus님의 프로필 이미지
tirkffus

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 도메인과 리포지토리 만들기

getter와 setter를 만드는 이유가 뭔가요?

작성

·

1K

0

값을 수정하고 받아들인 다는 의미는 알겠는데 언제 어떻게 사용하는지에 대해서 궁금합니다.

안만들면 안되는건가요?

답변 2

5

김영한님의 프로필 이미지
김영한
지식공유자

codesweaver님 글에 추가로 첨언을 드리면

자바 프레임워크들은 자바빈 프로퍼티 규약이라는 것을 주로 유지합니다.

관련해서 자바빈 프로퍼티 규약이라는 부분을 검색해보시면 도움이 되실거에요.

감사합니다.

5

개체(객체)지향 프로그래밍에서 개체는 상태(attribute)와 행동(method)을 갖고 있습니다. 그리고 개체는 자신의 상태에 대해 스스로 책임을 져야 하고 그러기 위해선 개체의 상태를 아무나 함부로 바꿀수 있으면 안됩니다. 바꿔야 한다면 개체 자기자신이 바꿔야 한다는 라고 이해하시면 됩니다. 그러서 멤버 변수를 private으로 선언하여 외부의 접근을 막는것입니다.

.

그럼, 다른 개체(B)가 이 개체(A)의 상태를 바꾸려면 어떻게 해야하느냐? B가 맘대로 바꾸는게 아니라, A에게 바꿔 달라고 요청해야 합니다. A는 요청을 받아들일 수 있고 받아들이지 않을 수 있습니다. 개체지향에서 개체는 객체(Object) + 주체성을 가진 존재로 보기 때문입니다.

.

보통 강좌에서 사용하는 예시는 모든 상태에 대해 getter와 setter를 제공하는 식으로 작성합니다. 이건 예제를 간단하게 만들기위한 방법으로 그렇게 하는것입니다. 실무에서는 getter는 모두 제공하나 setter는 기본적으로 제공하지 않고, 필요한 경우만 제공하는것을 원칙으로 하기도 합니다. (귀찮아서 그냥 모든 setter 제공하는 경우도 많지만... 이론과 현실의 괴리).

.

그리고 단순히 데이터를 묶어서 전달하는 용도로만 사용하는 클래스의 경우는 모든 속성에 getter/setter를 제공하기도 합니다. 메서드 하나 호출하는데 전달해야 하는 매개변수가 계속 무한정 늘어난다면면 보기도 좋지 않고('보기 좋다'는 개념은 개발에서 중요합니다?! ㅋㅋ) 간단하게 클래스에 담아서 전달하는 용도로 사용하는 거죠.

tirkffus님의 프로필 이미지
tirkffus

작성한 질문수

질문하기