접근자 (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) 접근자만 제공 시

         - 자동적으로 읽기만 가능한 멤버 변수 생성 가능

         -  외부 코드가 실제 데이터 표현 방식을 모르게 할 수 있음

            (접근자: 반환하는 데이터의 형식 제어 가능)

 

+ Recent posts