접근자 (accessor) : 멤버 변수 값을 반환하는 멤버 함수
설정자 (mutator) : 멤버 변수 값을 변경하는 멤버 함수
접근자와 설정자
- 일반적으로 get이나 set이 멤버함수의 이름 앞에 붙여짐
ex. getSpeed(), setSpeed()
- 사용 이유
(1) 정보 은닉
클래스의 인터페이스와 구현을 분리하는 것이 좋은데, 이 이유는 구현을 변경하기 쉬워지기 때문
ex) gear 변수를 advanced_gear 변수로 변경한다고 가정
만약 외부에서 gear멤버 변수를 직접 사용했다면 gear멤버 변수의 이름 마음대로 변경 불가능
하지만, 접근자와 설정자 사용시 변경 편리
//변경 전
int getGear(){
return gear;
}
void setGear(ing g){
gear=g;
}
//변경 후
int getGear(){
return advanced_gear;
}
void setGear(ing g){
advanced_gear=g;
}
(2) 새로운 값이 적절한지 판단 가능
설정자에서 매개변수를 통하여 잘못된 값이 넘어오는 경우, 사전에 차단 가능
ex) 시간의 값을 25시로 변경하는 시도 거부
void setSpeed(int s){
if(s<0) speed=0;
else speed=s;
}
(3) 멤버 변수 값을 필요할 때마다 계산하여 반환 가능
ex) 자동차의 속도를 바퀴의 회전 수와 바퀴의 반지름을 이용하여 매번 계산하여 반환
int getSpeed(){
return (int)(rpm*2.0*3.14*wheel_radius);
}
(4) 접근자만 제공 시
- 자동적으로 읽기만 가능한 멤버 변수 생성 가능
- 외부 코드가 실제 데이터 표현 방식을 모르게 할 수 있음
(접근자: 반환하는 데이터의 형식 제어 가능)
'Computer Science > Programming Language' 카테고리의 다른 글
[JAVA] Airline Booking Engine (0) | 2020.07.12 |
---|---|
[JAVA] 메모리 사용 영역(Runtime Data Area) (0) | 2020.07.02 |
[C++] 객체의 동적 생성 (0) | 2020.06.14 |
[C++] 함수 호출 시 인수 전달 방식 (0) | 2020.06.13 |
[C++] 참조자(reference) (0) | 2020.06.13 |