728x90
C++에서 GET과 SET은 객체의 멤버 변수에 대한 접근을 관리하는 메서드입니다. 이들은 일반적으로 접근자(getter)와 수정자(setter)라고 불리며, 객체 지향 프로그래밍에서 캡슐화를 구현하는 데 중요한 역할
1. GET과 SET의 개념
- GET (Getter): 객체의 private 또는 protected 멤버 변수의 값을 반환하는 함수입니다. 외부에서 멤버 변수에 직접 접근하는 것을 방지하고, 필요한 경우 추가적인 로직을 삽입할 수 있도록 합니다.
- SET (Setter): 객체의 private 또는 protected 멤버 변수의 값을 설정하는 함수입니다. 이 메서드를 사용하여 값의 유효성을 검사하거나 추가적인 로직을 실행할 수 있습니다.
2. GET과 SET의 필요성
- 데이터 은닉: 멤버 변수를 private로 선언하여 직접 접근을 차단함으로써 데이터를 보호합니다.
- 유효성 검사: SET 메서드를 사용하여 입력값의 유효성을 확인할 수 있습니다.
- 코드 유지보수: GET과 SET을 통해 객체의 내부 구조를 변경하더라도 외부 인터페이스는 변하지 않게 유지할 수 있습니다.
3. GET과 SET의 예제
아래는 C++에서 GET과 SET 메서드를 사용하는 간단한 클래스의 예입니다.
클래스 정의
#include <iostream>
#include <string>
class Person {
private:
std::string name; // private 멤버 변수
int age; // private 멤버 변수
public:
// GET 메서드
std::string getName() const { // const는 이 메서드가 객체의 상태를 변경하지 않음을 나타냄
return name;
}
int getAge() const {
return age;
}
// SET 메서드
void setName(const std::string& newName) {
name = newName; // 새로운 이름으로 설정
}
void setAge(int newAge) {
if (newAge >= 0) { // 유효성 검사
age = newAge;
} else {
std::cout << "Age cannot be negative." << std::endl;
}
}
};
4. 메인 함수에서의 사용
이제 Person 클래스를 사용하여 GET과 SET 메서드를 호출하는 예제를 살펴보겠습니다.
int main() {
Person person; // Person 객체 생성
// SET 메서드를 사용하여 값 설정
person.setName("Alice");
person.setAge(30);
// GET 메서드를 사용하여 값 조회
std::cout << "Name: " << person.getName() << std::endl; // "Name: Alice"
std::cout << "Age: " << person.getAge() << std::endl; // "Age: 30"
// 유효성 검사 예제
person.setAge(-5); // 잘못된 나이 설정 시도
return 0;
}
5. 유지보수 및 확장성
GET과 SET 메서드를 사용하면 나중에 클래스의 내부 구조가 변경되더라도 외부에서 사용하는 코드에 영향을 주지 않습니다. 예를 들어, age의 유효성을 검사하는 로직을 추가했지만, 외부 코드에서는 여전히 같은 메서드를 호출하여 값을 설정할 수 있습니다.
요약
- GET과 SET은 객체의 멤버 변수에 안전하게 접근하고 수정하는 방법입니다.
- GET 메서드는 멤버 변수의 값을 반환하고, SET 메서드는 값을 설정하며 유효성을 검사할 수 있습니다.
- 이러한 방법은 캡슐화를 통해 데이터 보호, 코드 유지보수 및 확장성을 높이는 데 기여
728x90
'반도체 > C++' 카테고리의 다른 글
26. 연산자,조건문,반복문 (1) | 2024.08.14 |
---|---|
25. C++에서 자주 사용하는 개념들 (1) | 2024.08.14 |
23. 반환값 (1) | 2024.08.14 |
22. C++에서 변수 (1) | 2024.08.14 |
21. && 논리 AND 연산자 (Logical AND Operator): (1) | 2024.08.14 |