[C++] 접근자와 설정자

2020. 6. 14. 15:52·Computer Science/Programming Language

접근자 (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
'Computer Science/Programming Language' 카테고리의 다른 글
  • [JAVA] Airline Booking Engine
  • [JAVA] 메모리 사용 영역(Runtime Data Area)
  • [C++] 객체의 동적 생성
  • [C++] 함수 호출 시 인수 전달 방식
BS Kwak
BS Kwak
  • BS Kwak
    Slow but steady wins the race
    BS Kwak
  • 전체
    오늘
    어제
    • 카테고리 (161)
      • Project (2)
      • Next.js (3)
      • HTML+CSS+JS (17)
      • Computer Science (139)
        • Programming Language (52)
        • 자료구조와 알고리즘 (75)
        • Digital circuit (3)
        • 기타 error (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    런타임 에러
    c++error
    해시
    LNK2001
    leetcode
    티스토리챌린지
    cmd error
    mysql error
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
BS Kwak
[C++] 접근자와 설정자
상단으로

티스토리툴바