반도체/C++

33. C++의 GET & SET

Clair_de_Lune 2024. 9. 3. 14:54
728x90

C++에서 GET과 SET은 객체 지향 프로그래밍의 중요한 개념,

 

주로 클래스의 멤버 변수에 대한 접근을 제어하는 데 사용됩니다. 이 개념은 데이터 캡슐화(encapsulation)를 통해 데이터의 안전성을 높이고, 코드의 유지보수성을 향상시키는 데 기여

1. 데이터 캡슐화

C++에서 클래스는 데이터와 그 데이터를 처리하는 함수를 하나의 단위로 묶는 구조입니다. 클래스 내부의 멤버 변수는 보통 private로 선언되어 외부에서 직접 접근하는 것을 막습니다. 이를 통해 객체의 상태를 보호하고, 무분별한 변경을 방지할 수 있습니다.

2. GET 함수

GET 함수는 클래스의 멤버 변수를 외부에서 읽을 수 있도록 제공하는 함수입니다. 일반적으로 get 접두사를 사용하여 이름을 정의합니다. GET 함수는 보통 다음과 같은 특징이 있습니다:

  • 반환형: GET 함수는 해당 멤버 변수의 타입을 반환합니다.
  • 매개변수 없음: 대부분의 경우 GET 함수는 매개변수를 받지 않습니다.
  • const: GET 함수는 객체의 상태를 변경하지 않으므로 const로 선언하는 것이 일반적입니다.
class Example {
private:
    int value;

public:
    // GET 함수
    int getValue() const {
        return value;
    }
};

3. SET 함수

SET 함수는 클래스의 멤버 변수에 외부에서 값을 설정할 수 있도록 제공하는 함수입니다. 일반적으로 set 접두사를 사용하여 이름을 정의합니다. SET 함수는 다음과 같은 특징이 있습니다:

  • 매개변수: SET 함수는 멤버 변수에 설정할 값을 매개변수로 받습니다.
  • 반환형: 일반적으로 SET 함수는 반환값을 가지지 않거나, 성공 여부를 나타내는 불리언 값을 반환할 수 있습니다.
  • 입력 검증: SET 함수 내에서 입력값에 대한 검증을 수행하여 유효하지 않은 값이 멤버 변수에 할당되지 않도록 할 수 있습니다.
class Example {
private:
    int value;

public:
    // SET 함수
    void setValue(int newValue) {
        // 입력 검증 예시
        if (newValue >= 0) {
            value = newValue;
        }
    }
};

4. GET/SET의 장점

  • 데이터 보호: 직접 접근을 제한하여, 데이터의 무결성을 유지할 수 있습니다.
  • 유지보수성 향상: GET/SET 메서드를 사용하면 내부 구현을 변경하더라도 외부 코드에 미치는 영향을 최소화할 수 있습니다.
  • 입력 검증: SET 메서드에서 입력값에 대한 검증을 수행하여, 잘못된 값이 설정되는 것을 방지할 수 있습니다.

5. 사용 예시

#include <iostream>
using namespace std;

class Person {
private:
    string name;
    int age;

public:
    // GET 함수
    string getName() const {
        return name;
    }

    int getAge() const {
        return age;
    }

    // SET 함수
    void setName(const string& newName) {
        name = newName;
    }

    void setAge(int newAge) {
        if (newAge >= 0) {
            age = newAge;
        }
    }
};

int main() {
    Person person;
    person.setName("Alice");
    person.setAge(25);

    cout << "Name: " << person.getName() << endl;
    cout << "Age: " << person.getAge() << endl;

    return 0;
}

 

 

 

위의 예제에서 Person 클래스는 name과 age라는 두 개의 멤버 변수를 가지고 있으며, 각각에 대해 GET 및 SET 메서드를 제공합니다. 이를 통해 객체의 상태를 안전하게 관리

728x90