해결된 질문
작성
·
626
·
수정됨
답변 1
0
안녕하세요?
먼저 getResolution() 에 대해 설명드리겠습니다.
전달값이 없는 단순한 getter 메소드는 일반적으로 그냥 인스턴스 변수의 값을 반환하는 역할을 수행합니다. 하지만 getResolution() 과 같이 getter 메소드에 조건을 추가하는 이유는 해당 인스턴스 변수의 값이 특정 조건을 만족하지 않을 경우에 대응하는 로직을 제공하기 위해서입니다. 이러한 접근 방식은 일반적으로 값을 반환하는 단순한 getter 메소드에서는 유용합니다.
이런 방식을 사용하는 이유는 몇 가지가 있는데요.
1. 안정성
인스턴스 변수의 값이 null일 때 getter 메소드가 null을 반환하면, 클라이언트 코드에서 해당 값의 null 여부를 체크하여 잠재적인 문제(=NullPointerException)를 방지하는데 도움이 됩니다.
2. 기본값 제공
해당 인스턴스 변수가 기본값인 경우, 또는 아직 값이 설정되지 않은 경우를 대비하여 기본 메시지나 기본값을 반환할 수 있습니다.
3. 클라이언트 코드 간소화
클라이언트 코드에서 추가적인 null 체크나 예외 처리를 하지 않도록 도와줍니다.
4. 의도 표현
인스턴스 변수가 특정 조건을 만족하지 않을 때 어떤 동작을 하는지 미리 설명하는 역할을 합니다.
이번에는 setPrice() 에 대해 설명 드릴게요.
setter 메소드는 주로 인스턴스 변수 값을 설정하는 역할을 합니다. 하지만 때로는 값의 유효성을 검사하거나 특정 조건을 만족하지 않을 때 기본값이나 다른 값으로 설정해야 할 경우가 있는데 이때 setter 메소드에서 조건을 확인하고 특정 동작을 수행하는 것은 올바른 접근 방법일 수 있습니다.
setPrice() 메소드는 price 인스턴스 변수를 설정하는데, 만약 price가 100,000보다 작으면 100,000으로 설정하고, 그렇지 않으면 주어진 price 값을 그대로 price 인스턴스 변수에 설정합니다. 이렇게 setter 메소드에 조건을 추가하여 값을 검증하고 처리하면 코드의 안정성과 유효성을 높일 수 있습니다. 예를 들어, price가 음수가 될 수 없거나 특정 범위를 벗어나면 이를 감지하고 기본값이나 다른 유효한 값으로 설정할 수 있게 되지요.
마지막으로 resolution 이나 price 가 아닌 경우에도 getter 와 setter 를 사용하게 되면 다음과 같은 이점을 얻을 수 있습니다.
1. 캡슐화
getter와 setter를 통해 클래스의 인스턴스 변수에 직접 접근하는 것을 제한하여 데이터를 보호하고 은닉할 수 있게 됩니다. 이를 통해 클래스 내부 구현의 변경이 외부에 영향을 덜 주며, 코드의 안정성과 유지보수성이 향상됩니다.
2. 데이터 유효성 검사
setter를 사용하여 값의 유효성을 검사하고, 필요한 경우에만 값을 설정할 수 있도록 할 수 있습니다. 이렇게 함으로써 잘못된 데이터의 설정을 방지하고 일관된 상태를 유지할 수 있습니다.
3. 코드의 유연성
getter와 setter를 사용하면 인스턴스 변수의 내부 구현을 변경하지 않고도 외부에 제공하는 인터페이스를 수정할 수 있습니다. 이를 통해 객체와 객체 간의 상호작용을 유연하게 조정할 수 있습니다.
4. 접근 제어
getter와 setter를 사용하여 인스턴스 변수에 직접 접근하는 것을 피하면, 필요에 따라 인스턴스 변수의 접근 범위를 제한할 수 있습니다. 즉, 인스턴스 변수를 읽기 전용으로 만들거나 외부에서 변경할 수 없도록 만들 수 있습니다.
5. 프로그래밍 관례
자바의 명명 규칙에 따라 인스턴스 변수에 대응하는 getter와 setter를 사용하는 것은 일반적인 프로그래밍 관례이기도 합니다. 이를 따르면 코드를 읽고 이해하기가 더 쉬워집니다.
정리하면, getter와 setter는 클래스의 인스턴스 변수 접근을 제어하고 데이터를 보호하는데 도움을 주며, 코드의 유연성과 안정성을 높이는 중요한 역할을 합니다 😊
감사합니다.
이해가 너무 너무 잘 되었습니다!!
늘 감사드립니다ㅎㅎ!!