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
'반도체 > C++' 카테고리의 다른 글
34.1 사원 관리 프로그램 추가 C++ (0) | 2024.09.03 |
---|---|
34. 사원관리 프로그램 C++ (0) | 2024.09.03 |
32. C++에서의 객체지향 (0) | 2024.08.30 |
31. C++에서 메모리 관리의 중요성과 힙(heap)과 스택(stack)의 차이 (0) | 2024.08.30 |
30. C++ 스레드 생성 방법 (0) | 2024.08.30 |